@@ -9,10 +9,10 @@ use self::sql::*;
99use crate :: { cfg, err:: Error , plugins:: LeetCode } ;
1010use colored:: Colorize ;
1111use diesel:: prelude:: * ;
12+ use reqwest:: Response ;
1213use serde:: de:: DeserializeOwned ;
1314use serde_json:: Value ;
1415use std:: collections:: HashMap ;
15- use reqwest:: Response ;
1616
1717/// sqlite connection
1818pub fn conn ( p : String ) -> SqliteConnection {
@@ -60,32 +60,27 @@ impl Cache {
6060 Ok ( ( ) )
6161 }
6262
63- async fn get_user_info ( & self ) -> Result < ( String , bool ) , Error > {
64- let user = parser:: user (
65- self . clone ( ) . 0
66- . get_user_info ( ) . await ?
67- . json ( ) . await ?
68- ) ;
63+ async fn get_user_info ( & self ) -> Result < ( String , bool ) , Error > {
64+ let user = parser:: user ( self . clone ( ) . 0 . get_user_info ( ) . await ?. json ( ) . await ?) ;
6965 match user {
7066 None => Err ( Error :: NoneError ) ,
7167 Some ( None ) => Err ( Error :: CookieError ) ,
72- Some ( Some ( ( s, b) ) ) => Ok ( ( s, b) )
68+ Some ( Some ( ( s, b) ) ) => Ok ( ( s, b) ) ,
7369 }
7470 }
7571
7672 async fn is_session_bad ( & self ) -> bool {
7773 // i.e. self.get_user_info().contains_err(Error::CookieError)
78- match self . get_user_info ( ) . await {
79- Err ( Error :: CookieError ) => true ,
80- _ => false
81- }
74+ matches ! ( self . get_user_info( ) . await , Err ( Error :: CookieError ) )
8275 }
8376
8477 async fn resp_to_json < T : DeserializeOwned > ( & self , resp : Response ) -> Result < T , Error > {
85- let maybe_json: Result < T , _ > = resp. json ( ) . await ;
78+ let maybe_json: Result < T , _ > = resp. json ( ) . await ;
8679 if maybe_json. is_err ( ) && self . is_session_bad ( ) . await {
8780 Err ( Error :: CookieError )
88- } else { Ok ( maybe_json?) }
81+ } else {
82+ Ok ( maybe_json?)
83+ }
8984 }
9085
9186 /// Download leetcode problems to db
@@ -123,16 +118,17 @@ impl Cache {
123118 Ok ( p)
124119 }
125120
126- /// Get daily problem
121+ /// Get daily problem
127122 pub async fn get_daily_problem_id ( & self ) -> Result < i32 , Error > {
128123 parser:: daily (
129124 self . clone ( )
130125 . 0
131126 . get_question_daily ( )
132127 . await ?
133128 . json ( ) // does not require LEETCODE_SESSION
134- . await ?
135- ) . ok_or ( Error :: NoneError )
129+ . await ?,
130+ )
131+ . ok_or ( Error :: NoneError )
136132 }
137133
138134 /// Get problems from cache
@@ -179,13 +175,14 @@ impl Cache {
179175 debug ! ( "{:#?}" , & json) ;
180176 match parser:: desc ( & mut rdesc, json) {
181177 None => return Err ( Error :: NoneError ) ,
182- Some ( false ) => return
183- if self . is_session_bad ( ) . await {
178+ Some ( false ) => {
179+ return if self . is_session_bad ( ) . await {
184180 Err ( Error :: CookieError )
185181 } else {
186182 Err ( Error :: PremiumError )
187- } ,
188- Some ( true ) => ( )
183+ }
184+ }
185+ Some ( true ) => ( ) ,
189186 }
190187
191188 // update the question
@@ -215,7 +212,8 @@ impl Cache {
215212 . await ?
216213 . json ( )
217214 . await ?,
218- ) . ok_or ( Error :: NoneError ) ?;
215+ )
216+ . ok_or ( Error :: NoneError ) ?;
219217 let t = Tag {
220218 r#tag : rslug. to_string ( ) ,
221219 r#refs : serde_json:: to_string ( & ids) ?,
@@ -258,22 +256,20 @@ impl Cache {
258256 let mut code: String = "" . to_string ( ) ;
259257
260258 let maybe_file_testcases: Option < String > = test_cases_path ( & p)
261- . map ( |filename| {
262- let mut tests = "" . to_string ( ) ;
263- File :: open ( filename)
264- . and_then ( |mut file_descriptor| file_descriptor. read_to_string ( & mut tests) )
265- . map ( |_| Some ( tests) )
266- . unwrap_or ( None )
267- } )
268- . unwrap_or ( None ) ;
259+ . map ( |filename| {
260+ let mut tests = "" . to_string ( ) ;
261+ File :: open ( filename)
262+ . and_then ( |mut file_descriptor| file_descriptor. read_to_string ( & mut tests) )
263+ . map ( |_| Some ( tests) )
264+ . unwrap_or ( None )
265+ } )
266+ . unwrap_or ( None ) ;
269267
270268 // Takes test cases using following priority
271269 // 1. cli parameter
272270 // 2. test cases from the file
273271 // 3. sample test case from the task
274- let testcase = testcase
275- . or ( maybe_file_testcases)
276- . unwrap_or ( d. case ) ;
272+ let testcase = testcase. or ( maybe_file_testcases) . unwrap_or ( d. case ) ;
277273
278274 File :: open ( code_path ( & p, None ) ?) ?. read_to_string ( & mut code) ?;
279275
@@ -286,18 +282,31 @@ impl Cache {
286282 json. insert ( "data_input" , testcase) ;
287283
288284 let url = match run {
289- Run :: Test => conf. sys . urls . get ( "test" ) . ok_or ( Error :: NoneError ) ?. replace ( "$slug" , & p. slug ) ,
285+ Run :: Test => conf
286+ . sys
287+ . urls
288+ . get ( "test" )
289+ . ok_or ( Error :: NoneError ) ?
290+ . replace ( "$slug" , & p. slug ) ,
290291 Run :: Submit => {
291292 json. insert ( "judge_type" , "large" . to_string ( ) ) ;
292- conf. sys . urls . get ( "submit" ) . ok_or ( Error :: NoneError ) ?. replace ( "$slug" , & p. slug )
293+ conf. sys
294+ . urls
295+ . get ( "submit" )
296+ . ok_or ( Error :: NoneError ) ?
297+ . replace ( "$slug" , & p. slug )
293298 }
294299 } ;
295300
296301 Ok ( (
297302 json,
298303 [
299304 url,
300- conf. sys . urls . get ( "problems" ) . ok_or ( Error :: NoneError ) ?. replace ( "$slug" , & p. slug ) ,
305+ conf. sys
306+ . urls
307+ . get ( "problems" )
308+ . ok_or ( Error :: NoneError ) ?
309+ . replace ( "$slug" , & p. slug ) ,
301310 ] ,
302311 ) )
303312 }
@@ -309,13 +318,9 @@ impl Cache {
309318 trace ! ( "Run veriy recursion..." ) ;
310319 std:: thread:: sleep ( Duration :: from_micros ( 3000 ) ) ;
311320
312- let json: VerifyResult = self . resp_to_json (
313- self
314- . clone ( )
315- . 0
316- . verify_result ( rid. clone ( ) )
317- . await ?
318- ) . await ?;
321+ let json: VerifyResult = self
322+ . resp_to_json ( self . clone ( ) . 0 . verify_result ( rid. clone ( ) ) . await ?)
323+ . await ?;
319324
320325 Ok ( json)
321326 }
@@ -343,8 +348,10 @@ impl Cache {
343348 // Check if leetcode accepted the Run request
344349 if match run {
345350 Run :: Test => run_res. interpret_id . is_empty ( ) ,
346- Run :: Submit => run_res. submission_id == 0
347- } { return Err ( Error :: CookieError ) }
351+ Run :: Submit => run_res. submission_id == 0 ,
352+ } {
353+ return Err ( Error :: CookieError ) ;
354+ }
348355
349356 let mut res: VerifyResult = VerifyResult :: default ( ) ;
350357 while res. state != "SUCCESS" {
0 commit comments