package Ġcom . qm . clean module . base . network . response Ċ Ċ import Ġokhttp 3 . ResponseBody Ċ import Ġretrofit 2 . Converter Ċ import Ġretrofit 2 . HttpException Ċ import Ġjava . io . IOException Ċ Ċ internal Ġconst Ġval ĠUNKNOWN _ ERROR _ RESPONSE _ CODE Ġ= Ġ 5 2 0 Ċ Ċ internal Ġfun Ġ< E Ġ: ĠAny > ĠHttp Exception . extract From HttpException ( ĊĠĠĠ Ġerror Converter : ĠConverter < ResponseBody , ĠE > Ċ ): ĠNetwork Response . ServerError < E > Ġ{ ĊĠĠĠ Ġval Ġerror Ġ= Ġresponse ()?. error Body () ĊĠĠĠ Ġval Ġresponse Code Ġ= Ġresponse ()?. code () Ġ?: ĠUNKNOWN _ ERROR _ RESPONSE _ CODE ĊĠĠĠ Ġval Ġheaders Ġ= Ġresponse ()?. headers () ĊĠĠĠ Ġval Ġerror Body Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠ Ġerror Ġ== Ġnull Ġ-> Ġnull Ġ// ĠNo Ġerror Ġcontent Ġavailable ĊĠĠĠĠĠĠĠ Ġerror . content Length () Ġ== Ġ 0 L Ġ-> Ġnull Ġ// ĠError Ġcontent Ġis Ġempty ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThere Ġis Ġerror Ġcontent Ġpresent , Ġso Ġwe Ġshould Ġtry Ġto Ġextract Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror Converter . convert ( error ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġunable Ġto Ġextract Ġcontent , Ġreturn Ġwith Ġa Ġnull Ġbody Ġand Ġdon 't Ġparse Ġfurther ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠNetwork Response . ServerError ( null , Ġresponse Code , Ġheaders ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠNetwork Response . ServerError ( error Body , Ġresponse Code , Ġheaders ) Ċ } Ċ Ċ internal Ġfun Ġ< S Ġ: ĠAny , ĠE Ġ: ĠAny > ĠThrowable . extract Network Response ( ĊĠĠĠ Ġerror Converter : ĠConverter < ResponseBody , ĠE > Ċ ): ĠNetwork Response < S , ĠE > Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠIOException Ġ-> ĠNetwork Response . Network Error ( this ) ĊĠĠĠĠĠĠĠ Ġis ĠHttp Exception Ġ-> Ġextract From HttpException < E >( error Converter ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠNetwork Response . Unknown Error ( this ) ĊĠĠĠ Ġ} Ċ }