package Ġcom . sle ew ell . sle ew ell . mvp . menu . profile . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . I Login Api Ċ import Ġcom . sle ew ell . sle ew ell . api . sle ew ell . model . Result Login S le ew ell Ċ import Ġcom . sle ew ell . sle ew ell . mvp . menu . profile . ApiClient S le ew ell Ċ import Ġcom . sle ew ell . sle ew ell . mvp . menu . profile . contract . Login Contract Ċ import Ġokhttp 3 . Multipart Body Ċ import Ġokhttp 3 . RequestBody Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback ĊĊ Ċ class ĠLogin Model ( context : ĠContext ) Ġ: ĠLogin Contract . Model Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġapi Ġ: ĠI Login Api ? Ġ= ĠApi Client S le ew ell . ret rofit . create ( I Login Api :: class . java ) ĊĠĠĠ Ġprivate Ġval Ġtag Ġ= Ġ" Connection Model " ĊĊĠĠĠ Ġoverride Ġfun Ġlogin ToS le ew ell ( on Finished Listener : ĠLogin Contract . Model . On Finished Listener , Ġname Ġ: ĠString , Ġpassword : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠMultip art Body . Builder (). setType ( Multipart Body . FORM ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . add FormData Part (" login ", Ġname ) ĊĠĠĠĠĠĠĠ Ġbuilder . add FormData Part (" password ", Ġpassword ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Body : ĠRequest Body Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ: ĠCall < Result Login S le ew ell >? Ġ= Ġapi ?. login S le ew ell ( request Body ) ĊĊĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġcall ?. request (). toString ()) ĊĊĠĠĠĠĠĠĠ Ġcall ?. enqueue ( object Ġ: ĠCallback < Result Login S le ew ell > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Result Login S le ew ell >, Ġresponse : Ġretrofit 2 . Response < Result Login S le ew ell >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Res : ĠResult Login S le ew ell ? Ġ= Ġresponse . body () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Body Ġnull Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Code Ġ: Ġ" Ġ+ Ġresponse . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( Throwable (" Body Ġnull Ġerror Ġ: Ġ" Ġ+ Ġresponse . code ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Finished ( response Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Result Login S le ew ell >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġt . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlogin To Google ( on Finished Listener : ĠLogin Contract . Model . On Finished Listener , Ġtoken : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠMultip art Body . Builder (). setType ( Multipart Body . FORM ) ĊĊĠĠĠĠĠĠĠ Ġbuilder . add FormData Part (" token ", Ġtoken ) ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Body : ĠRequest Body Ġ= Ġbuilder . build () ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ: ĠCall < Result Login S le ew ell >? Ġ= Ġapi ?. login Google ( request Body ) ĊĊĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġcall ?. request (). toString ()) ĊĊĠĠĠĠĠĠĠ Ġcall ?. enqueue ( object Ġ: ĠCallback < Result Login S le ew ell > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < Result Login S le ew ell >, Ġresponse : Ġretrofit 2 . Response < Result Login S le ew ell >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Res : ĠResult Login S le ew ell ? Ġ= Ġresponse . body () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response Res Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Body Ġnull Ġerror ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Code Ġ: Ġ" Ġ+ Ġresponse . code ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( Throwable (" Body Ġnull Ġerror Ġ: Ġ" Ġ+ Ġresponse . code ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġ" Success ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Finished ( response Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Result Login S le ew ell >, Ġt : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġt . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġon Finished Listener . on Failure ( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} Ċ }