@@ -2,6 +2,7 @@ var path = require('path');
22
33var log = require ( '../log' ) ;
44var Plugin = require ( '../plugin' ) ;
5+ var Queue = require ( '../queue' ) ;
56var session = require ( '../session' ) ;
67
78// [Usage]
@@ -110,37 +111,36 @@ Chrome.decodeCookie = function(cookie, cb) {
110111 } ) ;
111112} ;
112113
113- Chrome . decodeCookies = function ( keys , cb ) {
114- if ( keys . length === 0 ) return cb ( null , my . cookies ) ;
114+ function doDecode ( key , queue , cb ) {
115+ var ctx = queue . ctx ;
116+ var cookie = ctx [ key ] ;
117+ if ( ! cookie ) return cb ( 'Not found cookie: ' + key ) ;
115118
116- var k = keys . pop ( ) ;
117- var v = my . cookies [ k ] ;
118- if ( ! v ) return cb ( 'Not found cookie: ' + k ) ;
119-
120- my . decodeCookie ( v , function ( e , cookie ) {
121- my . cookies [ k ] = cookie ;
122- my . decodeCookies ( keys , cb ) ;
119+ my . decodeCookie ( cookie , function ( e , cookie ) {
120+ ctx [ key ] = cookie ;
121+ return cb ( ) ;
123122 } ) ;
124- } ;
123+ }
125124
126- var KEYS = [ 'csrftoken' , 'LEETCODE_SESSION' ] ;
127125Chrome . getCookies = function ( cb ) {
128126 var sqlite3 = require ( 'sqlite3' ) ;
129127 var db = new sqlite3 . Database ( my . db ) ;
128+ var KEYS = [ 'csrftoken' , 'LEETCODE_SESSION' ] ;
130129
131130 db . serialize ( function ( ) {
132- my . cookies = { } ;
131+ var cookies = { } ;
133132 var sql = 'select name, encrypted_value from cookies where host_key like "%leetcode.com"' ;
134133 db . each ( sql , function ( e , x ) {
135134 if ( e ) return cb ( e ) ;
136135 if ( KEYS . indexOf ( x . name ) < 0 ) return ;
137- my . cookies [ x . name ] = x . encrypted_value ;
136+ cookies [ x . name ] = x . encrypted_value ;
138137 } ) ;
139138
140139 db . close ( function ( ) {
141140 my . getPassword ( function ( password ) {
142141 my . password = password ;
143- my . decodeCookies ( KEYS , cb ) ;
142+ var q = new Queue ( KEYS , cookies , doDecode ) ;
143+ q . run ( null , cb ) ;
144144 } ) ;
145145 } ) ;
146146 } ) ;
0 commit comments