package Ġcom . example . po cket _ library _ list Ċ Ċ import Ġandroid . accounts . Account Ċ import Ġandroid . accounts . Account Manager Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Message Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . ImageView Ċ import Ġandroid . widget . TextView Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . app . AppCompat Delegate Ċ import Ġcom . google . android . gms . auth . api . signin . Google SignIn Ċ import Ġcom . squareup . pic asso . Pic asso Ċ import Ġinterfaces . Interface Ċ import Ġmodels . Books hel ves Volume Models Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . Request Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Response Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjavax . security . auth . callback . Callback Ċ Ċ class ĠStats Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAppCompat Delegate . setDefault Night Mode ( AppCompat Delegate . MODE _ N IGHT _ NO ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . stats ) ĊĊĠĠĠĠĠĠĠ Ġretrieve Read Books Data () ĊĠĠĠĠĠĠĠ Ġretrieve To Read Books Data () ĊĠĠĠĠĠĠĠ Ġretrieve Currently Reading Books Data () ĊĠĠĠĠĠĠĠ Ġretrieve Basic Info () ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Retrie ves ĠEnd - users Ġfull Ġname Ġand Ġavatar Ġimage . ĊĠĠĠ Ġ@ Suppress Lint (" SetText I 1 8 n ") ĊĠĠĠ Ġprivate Ġfun Ġretrieve Basic Info () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġac ct Ġ= ĠGoogle SignIn . getLast Signed In Account ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( acct Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson Name Ġ= Ġac ct . displayName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġperson Photo Ġ= Ġac ct . photoUrl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġavatar : ĠImageView Ġ= ĠfindViewById ( R . id . profile Pic ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtext : ĠTextView Ġ= ĠfindViewById ( R . id . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext . append (" Ġ$ person Name ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPic asso . get (). load ( person Photo ). into ( avatar ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcalculate Reading Time ( pages : ĠInt ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"% . 2 f ". format ((( pages Ġ* Ġ 1 . 5 ) Ġ/ Ġ 6 0 ) Ġ/ Ġ 2 4 ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠOn Error Ġ: ĠCallback Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġhandle Message (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" onError ", Ġ" ERROR ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrieve Read Books Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġam Ġ= ĠAccount Manager . get ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġaccounts Ġ= Ġam . get Account sBy Type (" com . google ") ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġvar Ġmy Account : ĠAccount ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġaccounts . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( accounts [ i ]. type Ġ== Ġ" com . google ") Ġmy Account Ġ= Ġaccounts [ i ] ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġam . get AuthToken ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Account , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAccount Ġretrieved Ġusing Ġget Account sBy Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Manage Ġyour Ġtasks ", ĠĠĠ Ġ// ĠAuth Ġscope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAuth enticator - specific Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠYour Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result . getString ( Account Manager . KEY _ AUTH TOKEN )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Read Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// www . googleapis . com / books / v 1 /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result . getString ( Account Manager . KEY _ AUTH TOKEN ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCallback Ġcalled Ġwhen Ġa Ġtoken Ġis Ġsuccessfully Ġacquired ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). apply Ġ{ ĠOn Error () Ġ} ĠĠĠĠĠĠ Ġ// ĠCallback Ġcalled Ġif Ġan Ġerror Ġoccurs ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Read Data ( baseUrl : ĠString , Ġtoken : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġlogging . apply Ġ{ Ġlogging . level Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( logging ) ĊĊĠĠĠĠĠĠĠ ĠhttpClient . add Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest Ġ= Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġ" Bearer Ġ$ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder (). add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( httpClient . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Interface :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġservice . get Books hel ves Books (" 4 ") ĊĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: Ġretrofit 2 . Callback < Books hel ves Volume Models > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Books hel ves Volume Models >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Books hel ves Volume Models > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolumes : ĠBooks hel ves Volume Models Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġread Book Count Ġ= ĠfindViewById < TextView >( R . id . read Books Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġread Page Count Ġ= ĠfindViewById < TextView >( R . id . read Pages ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġread Time Ġ= ĠfindViewById < TextView >( R . id . time Sp ent Reading ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpage Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġvolumes . total Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Count Ġ+= Ġvolumes . items ! ![ i ]. volume Info !!. page Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Book Count . append (" Ġ" Ġ+ Ġvolumes . total Items . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Page Count . append (" Ġ$ page Count ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Time . append (" Ġ" Ġ+ Ġcalculate Reading Time ( page Count ) Ġ+ Ġ" Ġdays ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Books hel ves Volume Models > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" An ĠERROR Ġoccurred ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrieve To Read Books Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġam Ġ= ĠAccount Manager . get ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġaccounts Ġ= Ġam . get Account sBy Type (" com . google ") ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġvar Ġmy Account : ĠAccount ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġaccounts . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( accounts [ i ]. type Ġ== Ġ" com . google ") Ġmy Account Ġ= Ġaccounts [ i ] ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġam . get AuthToken ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Account , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAccount Ġretrieved Ġusing Ġget Account sBy Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Manage Ġyour Ġtasks ", ĠĠĠ Ġ// ĠAuth Ġscope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAuth enticator - specific Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠYour Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result . getString ( Account Manager . KEY _ AUTH TOKEN )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget To Read Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// www . googleapis . com / books / v 1 /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result . getString ( Account Manager . KEY _ AUTH TOKEN ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCallback Ġcalled Ġwhen Ġa Ġtoken Ġis Ġsuccessfully Ġacquired ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). apply Ġ{ ĠOn Error () Ġ} ĠĠĠĠĠĠ Ġ// ĠCallback Ġcalled Ġif Ġan Ġerror Ġoccurs ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget To Read Data ( baseUrl : ĠString , Ġtoken : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġlogging . apply Ġ{ Ġlogging . level Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( logging ) ĊĊĠĠĠĠĠĠĠ ĠhttpClient . add Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest Ġ= Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġ" Bearer Ġ$ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder (). add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( httpClient . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Interface :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġservice . get Books hel ves Books (" 2 ") ĊĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: Ġretrofit 2 . Callback < Books hel ves Volume Models > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Books hel ves Volume Models >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Books hel ves Volume Models > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolumes : ĠBooks hel ves Volume Models Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Read Book Count Ġ= ĠfindViewById < TextView >( R . id . to Read Books Count ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Read Page Count Ġ= ĠfindViewById < TextView >( R . id . pages Left To Read ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġto Read Time Ġ= ĠfindViewById < TextView >( R . id . needed Time ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġpage Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġvolumes . total Items ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Count Ġ+= Ġvolumes . items ! ![ i ]. volume Info !!. page Count ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Read Book Count . append (" Ġ" Ġ+ Ġvolumes . total Items . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Read Page Count . append (" Ġ$ page Count ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġto Read Time . append (" Ġ" Ġ+ Ġcalculate Reading Time ( page Count ) Ġ+ Ġ" Ġdays ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Books hel ves Volume Models > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" An ĠERROR Ġoccurred ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġretrieve Currently Reading Books Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġam Ġ= ĠAccount Manager . get ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġaccounts Ġ= Ġam . get Account sBy Type (" com . google ") ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġvar Ġmy Account : ĠAccount ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġaccounts . indices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( accounts [ i ]. type Ġ== Ġ" com . google ") Ġmy Account Ġ= Ġaccounts [ i ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġam . get AuthToken ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmy Account , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAccount Ġretrieved Ġusing Ġget Account sBy Type () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Manage Ġyour Ġtasks ", ĠĠĠ Ġ// ĠAuth Ġscope ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAuth enticator - specific Ġoptions ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠYour Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result . getString ( Account Manager . KEY _ AUTH TOKEN )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Currently Reading Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" https :// www . googleapis . com / books / v 1 /", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . result . getString ( Account Manager . KEY _ AUTH TOKEN ) !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCallback Ġcalled Ġwhen Ġa Ġtoken Ġis Ġsuccessfully Ġacquired ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). apply Ġ{ ĠOn Error () Ġ} ĠĠĠĠĠĠ Ġ// ĠCallback Ġcalled Ġif Ġan Ġerror Ġoccurs ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Currently Reading Data ( baseUrl : ĠString , Ġtoken : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġlogging Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġlogging . apply Ġ{ Ġlogging . level Ġ= ĠHttp Logging Interceptor . Level . BODY Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠhttpClient Ġ= ĠOk HttpClient . Builder (). add Interceptor ( logging ) ĊĊĠĠĠĠĠĠĠ ĠhttpClient . add Interceptor Ġ{ Ġchain Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrequest : ĠRequest Ġ= Ġchain . request (). newBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Header (" Authorization ", Ġ" Bearer Ġ$ token ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchain . proceed ( request ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġretrofit : ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRet rofit . Builder (). add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( httpClient . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġretrofit . create ( Interface :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġcall Ġ= Ġservice . get Books hel ves Books (" 3 ") ĊĊĠĠĠĠĠĠĠ Ġcall . enqueue ( object Ġ: Ġretrofit 2 . Callback < Books hel ves Volume Models > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall : ĠCall < Books hel ves Volume Models >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠResponse < Books hel ves Volume Models > ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( response . code () Ġ== Ġ 2 0 0 ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvolumes : ĠBooks hel ves Volume Models Ġ= Ġresponse . body () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrently Reading Book Count Ġ= ĠfindViewById < TextView >( R . id . now Reading Books ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrently Reading Book Count . append (" Ġ" Ġ+ Ġvolumes . total Items . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < Books hel ves Volume Models > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġ" An ĠERROR Ġoccurred ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} Ċ Ċ }