package Ġio . github . j ix iao y ong . wan android . api . interceptor Ċ Ċ import Ġcf . android 6 6 6 . app library . Logger Ċ import Ġio . github . j ix iao y ong . wan android . data . Cookies Bean Ċ import Ġio . github . j ix iao y ong . wan android . utils . Common Constants Ċ import Ġio . github . j ix iao y ong . wan android . utils . Database Utils Ċ import Ġokhttp 3 . Cookie Ċ import Ġokhttp 3 . Cookie Jar Ċ import Ġokhttp 3 . Http Url Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* Ġ ĠCreated Ġby Ġj ix iao y ong 1 9 9 5 @ gmail . com Ċ Ġ* Ġ ĠData : Ġ 2 0 1 9 / 1 1 / 1 5 . Ċ Ġ* Ġ ĠDescription : Ċ Ġ*/ Ċ class ĠCookie Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġcookie Map : ĠHashMap < String , ĠList < Cookie >> Ġ= Ġhash Map Of () ĊĠĠĠ Ġprivate Ġval Ġseparator Ġ= Ġ"_ SEPARATOR _" ĊĊĠĠĠ Ġval Ġcookie Jar Ġ= Ġobject Ġ: ĠCookie Jar Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsave From Response ( url : ĠHttp Url , Ġcookies : ĠMutable List < Cookie >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin Url Ġ= ĠCommon Constants . Web Sites . BASE _ URL _ W AN ANDROID Ġ+ Ġ" user / login " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġregister Url Ġ= ĠCommon Constants . Web Sites . BASE _ URL _ W AN ANDROID Ġ+ Ġ" user / register " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest Url Ġ= Ġurl . url (). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( request Url Ġ== Ġlogin Url Ġ|| Ġrequest Url Ġ== Ġregister Url ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhost Name Ġ= Ġurl . host () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Map [ host Name ] Ġ= Ġcookies ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogin UserName Cookie Ġ= Ġcookies . find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . name () Ġ== Ġ" login UserName " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLogger . d (" host Name :$ host Name Ġlogin UserName :${ login UserName Cookie ?. value ()}, expires At :${ login UserName Cookie ?. expires At () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDatabase Utils . database . cookies Dao (). insert ( Cookies Bean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhost Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookies . join ToString ( separator Ġ= Ġseparator ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin UserName Cookie ?. value (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogin UserName Cookie ?. expires At () Ġ?: ĠSystem . currentTimeMillis () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload For Request ( url : ĠHttp Url ): ĠMutable List < Cookie > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhost Name Ġ= Ġurl . host () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( cookie Map . containsKey ( host Name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookie Map [ host Name ]?. to Mutable List () Ġ?: Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookies Str Ġ= ĠDatabase Utils . database . cookies Dao (). query All Cookies (). find Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . host Name Ġ== Ġhost Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. cookies Str ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcookies Str ?. split ( separator )?. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// J SESSION ID = F 2 EC 1 8 7 6 7 2 6 B 1 4 EF 3 E AF 2 6 C 1 7 2 FA 2 6 7 6 ; ĠPath =/ ; ĠSecure ; ĠHttp Only ; Ċ // ĠExp ires = Sun , Ġ 1 5 - Dec - 2 0 1 9 Ġ 0 1 : 4 6 : 3 3 ĠGMT ; ĠDomain = wan android . com ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġ( c Name , Ġc Value ) Ġ= ĠPair ("", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcookie Str Map Ġ= Ġit . split ("; "). map Indexed Ġ{ Ġindex , Ġcookie Item Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġkey Ġ= Ġcookie Item . substring Before (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= Ġcookie Item . substring After (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Name Ġ= Ġkey ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc Value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkey Ġto Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. toMap () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCookie . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. name ( c Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. value ( c Value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. path ( cookie Str Map . getOrElse (" Path ", Ġ{ Ġ"/" Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. domain ( cookie Str Map . getOrElse (" Domain ", Ġ{ Ġ" wan android . com " Ġ})) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. expires At ( Date . parse ( cookie Str Map . getOrElse (" Expires ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ ĠDate ( System . currentTimeMillis ()). toString () Ġ} ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ?. to Mutable List () Ġ?: Ġmutable ListOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }