-
Notifications
You must be signed in to change notification settings - Fork 665
[ERROR] http error [code=400] #489
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
+1 |
1 similar comment
+1 |
I also met this problem |
i met this problem too |
+1 |
4 similar comments
+1 |
+1 |
+1 |
+1 |
If you want to quick fix this you can find the file in plugins/leetcode.cn.js , you can change the payload like mine then change the question.title below(I forget the very name) because I have no computer right now~ |
change code at line 117 to following: |
Yes sorry my laptop is power off ... |
I also met this problem on my Mac pro leetcode extension version is latest |
Where is plugin / leetcode-cn.js? |
sorry,I don't remember the filename. maybe leetcode.cn.js(filename) |
the path in my environment is C:\Users\hengjie\.vscode\extensions\shengchen.vscode-leetcode-0.15.7\node_modules\vsc-leetcode-cli\lib\plugins\leetcode.cn.js |
Mark! |
Thank you very much. I found it |
@RenZMin |
default leetcode.cn.js path: 'use strict'
var request = require('request');
var config = require('../config');
var h = require('../helper');
var log = require('../log');
var Plugin = require('../plugin');
var session = require('../session');
//
// [Usage]
//
// https://github.com/skygragon/leetcode-cli-plugins/blob/master/docs/leetcode.cn.md
//
var plugin = new Plugin(15, 'leetcode.cn', '2018.11.25',
'Plugin to talk with leetcode-cn APIs.');
plugin.init = function() {
config.app = 'leetcode.cn';
config.sys.urls.base = 'https://leetcode-cn.com';
config.sys.urls.login = 'https://leetcode-cn.com/accounts/login/';
config.sys.urls.problems = 'https://leetcode-cn.com/api/problems/$category/';
config.sys.urls.problem = 'https://leetcode-cn.com/problems/$slug/description/';
config.sys.urls.graphql = 'https://leetcode-cn.com/graphql';
config.sys.urls.problem_detail = 'https://leetcode-cn.com/graphql';
config.sys.urls.test = 'https://leetcode-cn.com/problems/$slug/interpret_solution/';
config.sys.urls.session = 'https://leetcode-cn.com/session/';
config.sys.urls.submit = 'https://leetcode-cn.com/problems/$slug/submit/';
config.sys.urls.submissions = 'https://leetcode-cn.com/api/submissions/$slug';
config.sys.urls.submission = 'https://leetcode-cn.com/submissions/detail/$id/';
config.sys.urls.verify = 'https://leetcode-cn.com/submissions/detail/$id/check/';
config.sys.urls.favorites = 'https://leetcode-cn.com/list/api/questions';
config.sys.urls.favorite_delete = 'https://leetcode-cn.com/list/api/questions/$hash/$id';
};
// FIXME: refactor those
// update options with user credentials
function signOpts(opts, user) {
opts.headers.Cookie = 'LEETCODE_SESSION=' + user.sessionId +
';csrftoken=' + user.sessionCSRF + ';';
opts.headers['X-CSRFToken'] = user.sessionCSRF;
opts.headers['X-Requested-With'] = 'XMLHttpRequest';
}
function makeOpts(url) {
const opts = {};
opts.url = url;
opts.headers = {};
if (session.isLogin())
signOpts(opts, session.getUser());
return opts;
}
function checkError(e, resp, expectedStatus) {
if (!e && resp && resp.statusCode !== expectedStatus) {
const code = resp.statusCode;
log.debug('http error: ' + code);
if (code === 403 || code === 401) {
e = session.errors.EXPIRED;
} else {
e = {msg: 'http error', statusCode: code};
}
}
return e;
}
plugin.getProblems = function(cb) {
plugin.next.getProblems(function(e, problems) {
if (e) return cb(e);
plugin.getProblemsTitle(function(e, titles) {
if (e) return cb(e);
problems.forEach(function(problem) {
const title = titles[problem.id];
if (title)
problem.name = title;
});
return cb(null, problems);
});
});
};
plugin.getProblemsTitle = function(cb) {
log.debug('running leetcode.cn.getProblemNames');
const opts = makeOpts(config.sys.urls.graphql);
opts.headers.Origin = config.sys.urls.base;
opts.headers.Referer = 'https://leetcode-cn.com/api/problems/algorithms/';
opts.json = true;
opts.body = {
query: [
'query getQuestionTranslation($lang: String) {',
' translations: allAppliedQuestionTranslations(lang: $lang) {',
' title',
' questionId',
' }',
'}',
''
].join('\n'),
variables: {},
operationName: 'getQuestionTranslation'
};
const spin = h.spin('Downloading questions titles');
request.post(opts, function(e, resp, body) {
spin.stop();
e = checkError(e, resp, 200);
if (e) return cb(e);
const titles = [];
body.data.translations.forEach(function(x) {
titles[x.questionId] = x.title;
});
return cb(null, titles);
});
};
module.exports = plugin; |
I just |
same Error 400 issue.. the updated version already fixed the file leetcode.cn.js, but I still got this error message. |
I'll give it a try. |
I install the leetcode plugin from vscode and login successfully with leetcode-cn account, but it fails downloading contents.
I like this plugin. It really improves leetcode experience. But it doesn't work now. Can you help me?
The text was updated successfully, but these errors were encountered: