package Ġcom . q if an . kg ank . base Ċ Ċ import Ġokhttp 3 . Response Ċ import Ġretrofit 2 . HttpException ĊĊ Ċ /** Ċ Ġ* ĠCreated Ġby ĠQ if an Ġon Ġ 1 2 / 0 3 / 2 0 1 9 . Ċ Ġ*/ Ċ Ċ sealed Ġclass ĠBase Result < out ĠT Ġ: ĠAny > Ġ{ ĊĊĠĠĠ Ġdata Ġclass ĠSuccess < out ĠT Ġ: ĠAny >( val Ġvalue : ĠT , Ġoverride Ġval Ġresponse : ĠResponse ) Ġ: ĠBase Result < T >(), ĊĠĠĠĠĠĠĠ ĠResponse Result Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" Result ĠSuccess Ġ{ value =$ value Ġ}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠError ( override Ġval Ġexception : ĠHttp Exception , Ġoverride Ġval Ġresponse : ĠResponse ) Ġ: ĠBase Result < Nothing >(), ĊĠĠĠĠĠĠĠ ĠError Result , ĠResponse Result Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ" Result . Error { exception =$ exception }" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠNetwork Ġexception Ġoccurred Ġtalking Ġto Ġthe Ġserver Ġor Ġwhen Ġan Ġunexpected ĊĠĠĠĠ Ġ* Ġexception Ġoccurred Ġcreating Ġthe Ġrequest Ġor Ġprocessing Ġthe Ġresponse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġdata Ġclass ĠException ( override Ġval Ġexception : ĠThrowable ) Ġ: ĠBase Result < Nothing >(), ĊĠĠĠĠĠĠĠ ĠError Result Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= Ġ" Result . Exception {$ exception }" ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġ[ Result ] Ġclasses Ġwith Ġ[ okhttp 3 . Response ]: Ġ[ Result . Ok ] Ġand Ġ[ Result . Error ] Ċ Ġ*/ Ċ interface ĠResponse Result Ġ{ ĊĠĠĠ Ġval Ġresponse : ĠResponse Ċ } Ċ Ċ /** Ċ Ġ* ĠInterface Ġfor Ġ[ Result ] Ġclasses Ġthat Ġcontains Ġ[ Throwable ]: Ġ[ Result . Error ] Ġand Ġ[ Result . Exception ] Ċ Ġ*/ Ċ interface ĠError Result Ġ{ ĊĠĠĠ Ġval Ġexception : ĠThrowable Ċ } Ċ Ċ /** Ċ Ġ* ĠReturns Ġ[ Result . Ok . value ] Ġor Ġ` null ` Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠBase Result < T >. get OrNull (): ĠT ? Ġ= Ġ( this Ġas ? ĠBase Result . Success )?. value Ċ Ċ /** Ċ Ġ* ĠReturns Ġ[ Result . Ok . value ] Ġor Ġ[ default ] Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠBase Result < T >. get OrDefault ( default : ĠT ): ĠT Ġ= Ġget OrNull () Ġ?: Ġdefault Ċ Ċ /** Ċ Ġ* ĠReturns Ġ[ Result . Ok . value ] Ġor Ġthrow Ġ[ throwable ] Ġor Ġ[ Error Result . exception ] Ċ Ġ*/ Ċ fun Ġ< T Ġ: ĠAny > ĠBase Result < T >. get OrThrow ( throwable : ĠThrowable ? Ġ= Ġnull ): ĠT Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠBase Result . Success Ġ-> Ġvalue ĊĠĠĠĠĠĠĠ Ġis ĠBase Result . Error Ġ-> Ġthrow Ġthrowable Ġ?: Ġexception ĊĠĠĠĠĠĠĠ Ġis ĠBase Result . Exception Ġ-> Ġthrow Ġthrowable Ġ?: Ġexception ĊĠĠĠ Ġ} Ċ }