/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠF rol lo Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġus . f rol lo . f rol lo sdk . extensions Ċ Ċ import Ġretrofit 2 . Call Ċ import Ġretrofit 2 . Callback Ċ import Ġretrofit 2 . Response Ċ import Ġus . f rol lo . f rol lo sdk . F rol lo SDK Ċ import Ġus . f rol lo . f rol lo sdk . base . Resource Ċ import Ġus . f rol lo . f rol lo sdk . error . API Error Ċ import Ġus . f rol lo . f rol lo sdk . error . Data Error Ċ import Ġus . f rol lo . f rol lo sdk . error . F rol lo SDK Error Ċ import Ġus . f rol lo . f rol lo sdk . error . Network Error Ċ import Ġus . f rol lo . f rol lo sdk . error . OAuth 2 Error Ċ import Ġus . f rol lo . f rol lo sdk . error . OAuth 2 ErrorType Ċ import Ġus . f rol lo . f rol lo sdk . mapping . to Data Error Ċ import Ġus . f rol lo . f rol lo sdk . mapping . to OAuth 2 ErrorResponse Ċ import Ġus . f rol lo . f rol lo sdk . network . ApiResponse Ċ import Ġus . f rol lo . f rol lo sdk . network . ErrorResponse Type Ċ Ċ internal Ġfun Ġ< T > ĠCall < T >. enqueue ( error ResponseType : ĠError ResponseType Ġ= ĠError ResponseType . NORMAL , Ġcompletion : Ġ( Resource < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġthis . enqueue ( object Ġ: ĠCallback < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( call : ĠCall < T > ?, Ġresponse : ĠResponse < T > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġapi Response Ġ= ĠApiResponse ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( api Response . is Successful ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcompletion . invoke ( Resource . success ( data Ġ= Ġapi Response . body )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure ( error ResponseType , Ġapi Response , Ġnull , Ġcompletion ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( call : ĠCall < T > ?, Ġt : ĠThrowable ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Response Ġ= ĠApiResponse < T >( t ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Failure ( error ResponseType , Ġerror Response , Ġt , Ġcompletion ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}) Ċ } Ċ Ċ internal Ġfun Ġ< T > Ġhandle Failure ( error ResponseType : ĠError ResponseType , Ġerror Response : ĠApiResponse < T >, Ġt : ĠThrowable ? Ġ= Ġnull , Ġcompletion : Ġ( Resource < T >) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval Ġcode Ġ= Ġerror Response . code ĊĠĠĠ Ġval Ġerror Msg Ġ= Ġerror Response . errorMessage ĊĊĠĠĠ Ġval Ġo Auth 2 ErrorResponse Ġ= Ġerror Msg ?. to OAuth 2 ErrorResponse () ĊĠĠĠ Ġval Ġdata Error Ġ= Ġerror Msg ?. to Data Error () ĊĊĠĠĠ Ġif Ġ( data Error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompletion . invoke ( Resource . error ( error Ġ= ĠData Error ( data Error . type , Ġdata Error . sub Type ))) Ġ// ĠRe - create Ġnew ĠData Error Ġas Ġthe Ġjson Ġconverter Ġdoes Ġnot Ġhas Ġthe Ġcontext Ġobject ĊĠĠĠ Ġ} Ġelse Ġif Ġ( error ResponseType Ġ== ĠError ResponseType . O AUTH 2 Ġ&& Ġo Auth 2 ErrorResponse Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġo Auth 2 Error Ġ= ĠOAuth 2 Error ( response Ġ= Ġerror Msg ) ĊĠĠĠĠĠĠĠ Ġhandle OAuth 2 Failure ( o Auth 2 Error ) ĊĠĠĠĠĠĠĠ Ġcompletion . invoke ( Resource . error ( error Ġ= Ġo Auth 2 Error )) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( error ResponseType Ġ== ĠError ResponseType . NORMAL Ġ&& Ġcode Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompletion . invoke ( Resource . error ( error Ġ= ĠAPI Error ( code , Ġerror Msg ))) ĊĠĠĠ Ġ} Ġelse Ġif Ġ( t Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompletion . invoke ( Resource . error ( error Ġ= ĠNetwork Error ( t ))) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcompletion . invoke ( Resource . error ( error Ġ= ĠF rol lo SDK Error ( error Msg ))) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġhandle OAuth 2 Failure ( error : ĠOAuth 2 Error ) Ġ{ ĊĠĠĠ Ġwhen Ġ( error . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . INVALID _ REQUEST , ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . INVALID _ CLIENT , ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . INVALID _ GRANT , ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . INVALID _ SCOPE , ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . UN AUTHORIZ ED _ CLIENT , ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . UNSUPPORTED _ GRANT _ TYPE , ĊĠĠĠĠĠĠĠ ĠOAuth 2 ErrorType . SERVER _ ERROR Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( F rol lo SDK . is Setup ) ĠF rol lo SDK . network . token Invalid ated () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠDo Ġnothing ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ