package Ġorg . fo ss as ia . open event . general . utils Ċ Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . BAD _ REQUEST Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . CONF LI CT Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . FOR BID DEN Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . METHOD _ NOT _ ALLOWED Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . NOT _ FOUND Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . REQUEST _ TIMEOUT Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . UN AUTHORIZ ED Ċ import Ġorg . fo ss as ia . open event . general . utils . Http Errors . UN PROCESS ABLE _ ENTITY Ċ import Ġorg . fo ss as ia . open event . general . utils . StringUtils . isEmpty Ċ import Ġorg . json . JSONObject Ċ import Ġretrofit 2 . HttpException Ċ import Ġtim ber . log . Tim ber Ċ Ċ const Ġval ĠERR ORS Ġ= Ġ" errors " Ċ const Ġval ĠSOURCE Ġ= Ġ" source " Ċ const Ġval ĠPO INTER Ġ= Ġ" pointer " Ċ const Ġval ĠDET AIL Ġ= Ġ" detail " Ċ const Ġval ĠTITLE Ġ= Ġ" title " Ċ const Ġval ĠCODE Ġ= Ġ" code " Ċ Ċ const Ġval ĠPO INTER _ LENGTH Ġ= Ġ 3 Ċ Ċ object ĠError Utils Ġ{ ĊĊĠĠĠ Ġfun ĠgetMessage ( throwable : ĠThrowable ): ĠError Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġerror Ġ= ĠError () ĊĠĠĠĠĠĠĠ Ġif Ġ( throwable Ġis ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( throwable . code ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBAD _ REQUEST , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠU NA UTH ORIZ ED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFOR BID DEN , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNOT _ FOUND , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMETHOD _ NOT _ ALLOWED , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ TIMEOUT Ġ-> Ġerror Ġ= Ġget Error Title And Details ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN PROCESS ABLE _ ENTITY , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCON FLI CT Ġ-> Ġerror Ġ= Ġget Error Details ( throwable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġerror . detail Ġ= Ġthrowable . message ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ( error . detail )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġthrowable . message ĊĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Error Details ( throwable : ĠThrowable ): ĠError Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠError () ĊĠĠĠĠĠĠĠ Ġif Ġ( throwable Ġis ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġthrowable . response ()?. error Body () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( response Body ?. string ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= ĠJSONObject ( jsonObject . get JSONArray ( ERRORS ). get ( 0 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Source Ġ= ĠJSONObject ( json Array . get ( SOURCE ). toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointed Field Ġ= Ġget Point ed Field ( error Source . getString ( POINTER )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( point ed Field Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġjson Array . get ( DETAIL ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . pointer Ġ= Ġpointed Field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġjson Array . get ( DETAIL ). toString (). replace (".", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . code Ġ= Ġerror Source . get ( CODE ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġjson Array . get ( DETAIL ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Error Title And Details ( throwable : ĠThrowable ): ĠError Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= ĠError () ĊĠĠĠĠĠĠĠ Ġif Ġ( throwable Ġis ĠHttp Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresponse Body Ġ= Ġthrowable . response ()?. error Body () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJSONObject ( response Body ?. string ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Array Ġ= ĠJSONObject ( jsonObject . get JSONArray ( ERRORS ). get ( 0 ). toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġerror Source Ġ= ĠJSONObject ( json Array . get ( SOURCE ). toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpointed Field Ġ= Ġget Point ed Field ( error Source . getString ( POINTER )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( point ed Field Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġjson Array . get ( DETAIL ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . pointer Ġ= Ġpointed Field ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġjson Array . get ( DETAIL ). toString (). replace (".", Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . code Ġ= Ġerror Source . get ( CODE ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . title Ġ= Ġjson Array . get ( TITLE ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . title Ġ= Ġjson Array . get ( TITLE ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror . detail Ġ= Ġjson Array . get ( DETAIL ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTim ber . e ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġerror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Point ed Field ( pointer String : ĠString ?): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( pointer String Ġ== Ġnull Ġ|| ĠisEmpty ( pointer String )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġpointer String . split ("/ ". to Regex ()). drop Last While Ġ{ Ġit . isEmpty () Ġ}. to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( path . size Ġ> ĠPO INTER _ LENGTH ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpath [ path . size Ġ- Ġ 1 ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ