package Ġcom . vot . low ell bur ket t . vot . Common Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . preference . Preference Manager Ċ import Ġandroid . webkit . Web Resource Request Ċ import Ġandroid . webkit . WebView Ċ import Ġandroid . webkit . WebView Client Ċ import Ġcom . android . vol ley . Request Ċ import Ġcom . android . vol ley . Response Ċ import Ġcom . android . vol ley . toolbox . JsonObject Request Ċ import Ġcom . android . vol ley . toolbox . String Request Ċ import Ġcom . vot . low ell bur ket t . vot . R Ċ Ċ class ĠAuth enticate WebView Client ( finish : Ġ() Ġ-> ĠUnit ) Ġ: ĠWebView Client () Ġ{ ĊĠĠĠ Ġval Ġfinished Ġ= Ġfinish ĊĊĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġurl : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Url Loading ( view , ĠUri . parse ( url )) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshould Override Url Loading ( view : ĠWebView ?, Ġrequest : ĠWeb Resource Request ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Url Loading ( view , Ġrequest ?. url !! ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġoverride Url Loading ( view : ĠWebView ?, Ġuri : ĠUri ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri . toString (). contains ( view ?. context !!. getString ( R . string . redirect _ uri ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcontext Ġ= Ġview . context ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġerror Ġ= Ġuri . getQuery Parameters ( context . getString ( R . string . error )). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġcode Ġ= Ġuri . getQuery Parameters ( context . getString ( R . string . code )). first () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstate Ġ= Ġuri . getQuery Parameters ( context . resources . getResource Entry Name ( R . string . state )). first () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull Ġ|| Ġstate Ġ!= Ġcontext . getString ( R . string . state )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠException ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar ĠaccessToken Url Ġ= ĠUrl Helper ( context ). ac ess Token Url Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpost Data Ġ= Ġcontext . getString ( R . string . token _ post _ data ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" AUTHORIZATION _ CODE ", Ġ" authorization _ code ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" CODE ", Ġcode ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace (" URI ", Ġcontext . getString ( R . string . redirect _ uri )) Ċ // Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġrequest Ġ= ĠString Request ( Request . Method . POST , ĠaccessToken Url , ĠResponse . Listener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠResponse . Error Listener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠPreference Manager . getDefault SharedPreferences ( view . context ). edit (). putString (" auth _ token ", Ġcode ). apply () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinished . invoke () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . load Url ( uri . toString ()) ĊĠĠĠ Ġ} Ċ }