package Ġio . pl ast ique . core . work Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . work . Rx Worker Ċ import Ġandroidx . work . Worker Parameters Ċ import Ġio . pl ast ique . core . client . HttpException Ċ import Ġio . pl ast ique . core . client . HttpResponse Codes Ċ import Ġio . pl ast ique . core . client . Http Transport Exception Ċ import Ġio . pl ast ique . core . client . No Network Connection Exception Ċ import Ġio . pl ast ique . core . client . RateLimit Exceeded Exception Ċ import Ġio . reactivex . Comp letable Ċ import Ġio . reactivex . Single Ċ import Ġtim ber . log . Tim ber Ċ Ċ abstract Ġclass ĠComp letable Worker ( app Context : ĠContext , Ġworker Params : ĠWorker Parameters ) Ġ: ĠRx Worker ( app Context , Ġworker Params ) Ġ{ ĊĠĠĠ Ġabstract Ġfun Ġcreate Comp letable Work (): ĠComp letable ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Work (): ĠSingle < Result > Ġ{ ĊĠĠĠĠĠĠĠ ĠTim ber . tag ( log Tag ). d (" Started ") ĊĠĠĠĠĠĠĠ Ġreturn Ġcreate Comp letable Work () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Single Default ( Result . success ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. onError Return Ġ{ Ġerror Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . tag ( log Tag ). e ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error . is Retry able ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . retry () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠResult . failure () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. do On Success Ġ{ ĠTim ber . tag ( log Tag ). d (" Finished Ġwith Ġresult Ġ% s ", Ġit ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠThrowable . is Retry able : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠNo Network Connection Exception , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHttp Transport Exception , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRate Limit Exceeded Exception Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHttp Exception Ġ-> Ġresponse Code Ġ>= ĠHttpResponse Codes . INTERNAL _ SERVER _ ERROR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlog Tag : ĠString Ġget () Ġ= Ġjava Class . simple Name Ċ } Ċ