Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit e3680fe

Browse files
committed
format naming by review and refactor the parse cookie function(include if cn test) to make it more clear, also fixed a tiny bug before
1 parent 3122ac7 commit e3680fe

File tree

1 file changed

+17
-29
lines changed

1 file changed

+17
-29
lines changed

lib/plugins/leetcode.js

Lines changed: 17 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -471,8 +471,8 @@ plugin.deleteSession = function(session, cb) {
471471
};
472472

473473
plugin.signin = function(user, cb) {
474-
log.debug('running leetcode.signin');
475-
const spin = h.spin('Signing in leetcode.com');
474+
const isCN = config.app === 'leetcode.cn';
475+
const spin = isCN ? h.spin('Signing in leetcode-cn.com') : h.spin('Signing in leetcode.com');
476476
request(config.sys.urls.login, function(e, resp, body) {
477477
spin.stop();
478478
e = plugin.checkError(e, resp, 200);
@@ -538,26 +538,18 @@ plugin.login = function(user, cb) {
538538
});
539539
};
540540

541-
function parseCookie(cookie, cb) {
541+
function parseCookie(cookie, body, cb) {
542+
const isCN = config.app === 'leetcode.cn';
542543
const SessionPattern = /LEETCODE_SESSION=(.+?)(;|$)/;
543-
const csrfPattern = /csrftoken=(.+?)(;|$)/;
544-
const reSessionResult = SessionPattern.exec(cookie);
545-
const reCsrfResult = csrfPattern.exec(cookie);
546-
if (reSessionResult === null || reCsrfResult === null) {
547-
return cb('invalid cookie?');
544+
let csrfPattern;
545+
// leetcode-cn.com Cookie is not the same as leetcode.com in third parties
546+
if (isCN) {
547+
csrfPattern = /name="csrfmiddlewaretoken" value="(.*?)"/;
548+
} else {
549+
csrfPattern = /csrftoken=(.+?)(;|$)/;
548550
}
549-
return {
550-
sessionId: reSessionResult[1],
551-
sessionCSRF: reCsrfResult[1],
552-
};
553-
}
554-
555-
// leetcode-cn.com Cookie is not the same as leetcode.com in third parties
556-
function parseCNCookie(cookie, body, cb) {
557-
const SessionPattern = /LEETCODE_SESSION=(.+?)(;|$)/;
558-
const csrfPattern = /name="csrfmiddlewaretoken" value="(.*?)"/;
559551
const reSessionResult = SessionPattern.exec(cookie);
560-
const reCsrfResult = csrfPattern.exec(body);
552+
const reCsrfResult = csrfPattern.exec(isCN? body: cookie);
561553
if (reSessionResult === null || reCsrfResult === null) {
562554
return cb('invalid cookie?');
563555
}
@@ -567,16 +559,13 @@ function parseCNCookie(cookie, body, cb) {
567559
};
568560
}
569561

570-
function requestLeetcodeAndSave(request, leetcodeUrl, user, cb, party) {
562+
function requestLeetcodeAndSave(request, leetcodeUrl, user, cb) {
571563
request.get({url: leetcodeUrl}, function(e, resp, body) {
572564
const redirectUri = resp.request.uri.href;
573565
if (redirectUri !== config.sys.urls.leetcode_redirect) {
574-
return cb(`${party} login failed or ${party} did not connect to LeetCode`);
566+
return cb('Login failed. Please make sure the credential is correct.');
575567
}
576-
let cookieData = {};
577-
if (leetcodeUrl.includes('cn')) {
578-
cookieData = parseCNCookie(resp.request.headers.cookie, body, cb);
579-
} else cookieData = parseCookie(resp.request.headers.cookie, cb);
568+
const cookieData = parseCookie(resp.request.headers.cookie, body, cb);
580569
user.sessionId = cookieData.sessionId;
581570
user.sessionCSRF = cookieData.sessionCSRF;
582571
session.saveUser(user);
@@ -621,7 +610,6 @@ plugin.githubLogin = function(user, cb) {
621610
return cb('GitHub login failed');
622611
}
623612
if (resp.request.uri.href === urls.github_tf_redirect) {
624-
cb('Your GitHub are using two-factor authentication');
625613
// read two-factor code must be sync.
626614
const twoFactorcode = require('prompt-sync')()('Please enter your two-factor code: ');
627615
const authenticityTokenTwoFactor = body.match(/name="authenticity_token" value="(.*?)"/);
@@ -645,10 +633,10 @@ plugin.githubLogin = function(user, cb) {
645633
if (resp.request.uri.href === urls.github_tf_session_request) {
646634
return cb('Invalid two-factor code please check');
647635
}
648-
requestLeetcodeAndSave(_request, leetcodeUrl, user, cb, config.sys.login_methods.GitHub);
636+
requestLeetcodeAndSave(_request, leetcodeUrl, user, cb);
649637
});
650638
} else {
651-
requestLeetcodeAndSave(_request, leetcodeUrl, user, cb, config.sys.login_methods.GitHub);
639+
requestLeetcodeAndSave(_request, leetcodeUrl, user, cb);
652640
}
653641
});
654642
});
@@ -689,7 +677,7 @@ plugin.linkedinLogin = function(user, cb) {
689677
if (resp.statusCode !== 200) {
690678
return cb('LinkedIn login failed');
691679
}
692-
requestLeetcodeAndSave(_request, leetcodeUrl, user, cb, config.sys.login_methods.LinkedIn);
680+
requestLeetcodeAndSave(_request, leetcodeUrl, user, cb);
693681
});
694682
});
695683
};

0 commit comments

Comments
 (0)