File tree 3 files changed +40
-1
lines changed
3 files changed +40
-1
lines changed Original file line number Diff line number Diff line change 7
7
# leetcode-cli
8
8
9
9
> Note: This repository is forked from [ leetcode-cli] ( https://github.com/skygragon/leetcode-cli ) for temporary usage.
10
+ > Note: Copy cookie from webbrowser and Using ** leetcode user -c** can temporary fix can't [ login problem] ( https://github.com/jdneo/vscode-leetcode/issues/478 ) .
10
11
11
12
<img src =" https://github.com/skygragon/leetcode-cli/raw/master/docs/logo.png " align =" right " >
12
13
@@ -39,6 +40,7 @@ Great thanks to leetcode.com, a really awesome website!
39
40
40
41
Read help first $ leetcode help
41
42
Login with your leetcode account $ leetcode user -l
43
+ Cookie login with cookie $ leetcode user -c
42
44
Browse all questions $ leetcode list
43
45
Choose one question $ leetcode show 1 -g -l cpp
44
46
Coding it!
Original file line number Diff line number Diff line change @@ -21,6 +21,12 @@ const cmd = {
21
21
default : false ,
22
22
describe : 'Login'
23
23
} )
24
+ . option ( 'c' , {
25
+ alias : 'cookie' ,
26
+ type : 'boolean' ,
27
+ default : false ,
28
+ describe : 'cookieLogin'
29
+ } )
24
30
. option ( 'L' , {
25
31
alias : 'logout' ,
26
32
type : 'boolean' ,
@@ -29,6 +35,7 @@ const cmd = {
29
35
} )
30
36
. example ( chalk . yellow ( 'leetcode user' ) , 'Show current user' )
31
37
. example ( chalk . yellow ( 'leetcode user -l' ) , 'User login' )
38
+ . example ( chalk . yellow ( 'leetcode user -c' ) , 'User Cookie login' )
32
39
. example ( chalk . yellow ( 'leetcode user -L' ) , 'User logout' ) ;
33
40
}
34
41
} ;
@@ -59,7 +66,22 @@ cmd.handler = function(argv) {
59
66
log . info ( 'Successfully logout as' , chalk . yellow ( user . name ) ) ;
60
67
else
61
68
log . fail ( 'You are not login yet?' ) ;
62
- } else {
69
+ } else if ( argv . cookie ) {
70
+ // session
71
+ prompt . colors = false ;
72
+ prompt . message = '' ;
73
+ prompt . start ( ) ;
74
+ prompt . get ( [
75
+ { name : 'login' , required : true } ,
76
+ { name : 'cookie' , required : true }
77
+ ] , function ( e , user ) {
78
+ if ( e ) return log . fail ( e )
79
+ core . cookieLogin ( user , function ( e , user ) {
80
+ if ( e ) return log . fail ( e ) ;
81
+ log . info ( 'Successfully cookie login as' , chalk . yellow ( user . name ) ) ;
82
+ } ) ;
83
+ } ) ;
84
+ } else {
63
85
// show current user
64
86
user = session . getUser ( ) ;
65
87
if ( user ) {
Original file line number Diff line number Diff line change @@ -538,4 +538,19 @@ plugin.login = function(user, cb) {
538
538
} ) ;
539
539
} ;
540
540
541
+ plugin . cookieLogin = function ( user , cb ) {
542
+ // re pattern for cookie chrome or firefox
543
+ const SessionPattern = / L E E T C O D E _ S E S S I O N = ( .+ ?) ( ; | $ ) / ;
544
+ const csrfPattern = / c s r f t o k e n = ( .+ ?) ( ; | $ ) / ;
545
+ const reSessionResult = SessionPattern . exec ( user . cookie ) ;
546
+ const reCsrfResult = csrfPattern . exec ( user . cookie ) ;
547
+ if ( reSessionResult === null || reCsrfResult === null ) {
548
+ return cb ( 'invalid cookie?' )
549
+ }
550
+ user . sessionId = reSessionResult [ 1 ] ;
551
+ user . sessionCSRF = reCsrfResult [ 1 ] ;
552
+ session . saveUser ( user ) ;
553
+ plugin . getUser ( user , cb ) ;
554
+ }
555
+
541
556
module . exports = plugin ;
You can’t perform that action at this time.
0 commit comments