package Ġdev . d nih ze . rev or ate . data . network . exception Ċ Ċ import Ġdev . d nih ze . rev or ate . model . network . exception . ApiException Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . io . IOException Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Singleton Ċ class ĠApiException Factory Ġ@ Inject Ġconstructor () Ġ{ ĊĊĠĠĠ Ġfun Ġcreate ( cause : ĠThrowable ): ĠApiException Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( cause ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠHttp Exception Ġ-> Ġcreate HttpException ( cause ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠIOException Ġ-> ĠApiException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" IO ĠException Ġon Ġnetwork Ġcall ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause Ġ= Ġcause ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠApiException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage Ġ= Ġ" Unexpected Ġexception Ġon Ġnetwork Ġcall ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcause Ġ= Ġcause ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate HttpException ( cause : ĠHttp Exception ): ĠApiException Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhttp Code Ġ= Ġcause . code () ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbody Ġ= Ġcause . response ()?. error Body ()?. string () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" HTTP ĠException :[ code : Ġ$ http Code ; Ġbody : Ġ$ body ]" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApiException ( http Code , Ġbody , Ġmessage , Ġcause ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Unexpected Ġthrowable Ġcaught Ġwhile Ġcreating ĠApiException Ġfrom ĠHttp Exception ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠApiException ( http Code , Ġnull , Ġ" Error Ġwhile Ġcreating ĠApiException ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }