package Ġcom . air map . sdk . models Ċ Ċ import Ġcom . squareup . mos hi . Json Ċ import Ġcom . squareup . mos hi . Json Class Ċ Ċ // ĠVar ious Ġexamples Ġof Ġerror Ġresponse Ġformats Ġwe 've Ġseen Ġfrom Ġthe ĠAPI Ċ /* Ċ ( Code Ġ 4 0 0 ) Ċ { ĊĠ Ġ" status ": Ġ" fail ", ĊĠ Ġ" data ": Ġ{ ĊĠĠĠ Ġ" errors ": Ġ[ ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġ" name ": Ġ" ids ", ĊĠĠĠĠĠĠĠ Ġ" message ": Ġ" Must Ġinclude Ġa Ġcomma Ġseper ated Ġlist Ġof Ġuuid s " ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ] ĊĠ Ġ} Ċ } Ċ */ Ċ Ċ /* Ċ ( Code Ġ 4 0 0 ) Ċ { Ċ ĉ " status ": Ġ" fail ", Ċ ĉ " data ": Ġ{ Ċĉ ĉ " message ": Ġ" failed Ġto Ġcreate Ġflight Ġplan " Ċ ĉ } Ċ } Ċ Ġ*/ Ċ Ċ /* Ċ ( Code Ġ 4 0 1 ) Ċ { Ċ ĉ " msg ": Ġ" authentication Ġfailed " Ċ } Ċ Ġ*/ Ċ Ċ /* Ċ ( Status Ġ 5 0 0 ) Ċ ( Status Ġ 4 0 3 ) Ċ { Ċ ĉ " status ": Ġ" error ", Ċ ĉ " message ": Ġ" failed Ġto Ġcreate Ġflight Ġplan " Ċ } Ċ Ġ*/ Ċ Ċ /* Ċ ( Code Ġ 4 0 5 ) Ċ < Empty ĠResponse > Ċ Ġ*/ Ċ Ċ /* Ċ ( Code Ġ 4 0 4 ) Ċ <! DOCTYPE Ġhtml > Ċ < html Ġlang =" en "> Ċ < head > Ċ < meta Ġcharset =" utf - 8 "> Ċ < title > Error </ title > Ċ </ head > Ċ < body > Ċ < pre > Cannot ĠGET Ġ/ </ pre > Ċ </ body > Ċ </ html > Ċ Ġ*/ Ċ Ċ /* Ċ ( Code Ġ 5 0 4 ) Ċ upstream Ġrequest Ġtimeout Ċ Ġ*/ Ċ Ċ /* Ċ TODO : ĠHow Ġto Ġhandle Ġthe Ġbelow Ġresponse Ġwith Ġthe ĠError Details Ġclass ? Ġ" data " Ġhere Ġis Ġa Ġstring Ġinstead ĊĠ Ġof Ġan Ġobject Ġ:( ĊĠ ĠPot ential Ġsolution : ĠHave Ġmultiple Ġdata Ġclasses Ġand Ġg reed ily Ġattempt Ġto Ġparse Ġas Ġeach Ġone Ġuntil ĊĠ Ġit Ġsuc ced s Ġ( and Ġmake Ġthem Ġpart Ġof Ġa Ġsealed Ġclass ?) ĊĠ Ġ( see : Ġhttps :// github . com / air map / Air Map SDK - Kotlin / blob / ca ab 5 d / core / src / main / java / com / air map / sdk / models / Error . kt ) Ċ ( Code Ġ 4 0 4 ) Ċ {" status ":" fail "," data ":" No Ġair space Ġfound ." } Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠThis Ġclass Ġwill Ġwrap Ġan Ġerror Ġreturned Ġby Ġthe Ġserver . ĠIt Ġwill Ġcontain Ġthe Ġresponse Ġ[ code ] Ġand Ċ Ġ* Ġsome Ġ[ details ] Ġaround Ġwhat Ġmay Ġhave Ġgone Ġwrong Ċ Ġ*/ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ class ĠServer Error ( val Ġcode : ĠInt , Ġval Ġdetails : ĠError Details ) Ġ: ĊĠĠĠ ĠException (" ($ code ) Ġ${ details . display Message }") Ċ Ċ /** Ċ Ġ* ĠWe Ġattempt Ġto Ġcon solid ate Ġall Ġthe Ġdifferent Ġerror Ġformats Ġinto Ġone Ġclass . ĠNot Ġall Ġof Ġthe Ġfields Ċ Ġ* Ġhere Ġwill Ġhave Ġmeaning . ĠUse Ġ[ display Message ] Ġfor Ġsomething Ġmore Ġtang ible . ĠThe Ġraw Ġresponse Ġis Ċ Ġ* Ġcontained Ġin Ġ[ raw ]. ĠWarning : Ġsometimes Ġthe ĠAPI Ġreturns Ġraw ĠHTML , Ġwhich Ġcan Ġlead Ġto Ġa Ġlong Ġ[ raw ] Ċ Ġ* Ġresponse Ġbody . ĠWhen Ġaccessing Ġ[ raw ], Ġbe Ġsure Ġto Ġcheck Ġits Ġsize Ġbefore Ġusage Ċ Ġ*/ Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠError Details ( ĊĠĠĠ Ġ@ Json ( name Ġ= Ġ" status ") Ġval Ġstatus : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ Json ( name Ġ= Ġ" data ") Ġval Ġdata : ĠData Ġ= ĠData (), ĊĠĠĠ Ġ@ Json ( name Ġ= Ġ" msg ") Ġval Ġmsg : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ Json ( name Ġ= Ġ" message ") Ġval Ġmessage : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ Transient Ġval Ġraw : ĠString Ġ= Ġ"", Ċ ) Ġ{ ĊĠĠĠ Ġ@ Json Class ( generate Adapter Ġ= Ġtrue ) ĊĠĠĠ Ġdata Ġclass ĠData ( ĊĠĠĠĠĠĠĠ Ġ@ Json ( name Ġ= Ġ" message ") Ġval Ġmessage : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġ@ Json ( name Ġ= Ġ" errors ") Ġval Ġerrors : ĠList < Error > Ġ= ĠlistOf (), ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Json Class ( generate Adapter Ġ= Ġtrue ) ĊĠĠĠ Ġdata Ġclass ĠError ( ĊĠĠĠĠĠĠĠ Ġ@ Json ( name Ġ= Ġ" name ") Ġval Ġname : ĠString Ġ= Ġ"", ĊĠĠĠĠĠĠĠ Ġ@ Json ( name Ġ= Ġ" message ") Ġval Ġmessage : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġval Ġdisplay Message Ġ= Ġ( listOf ( status , Ġmsg , Ġmessage , Ġdata . message ) Ġ+ ĊĠĠĠĠĠĠĠ Ġdata . errors . map Ġ{ Ġ"${ it . name }: Ġ${ it . message }" Ġ}) ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . trim (',', Ġ' :', Ġ'.', Ġ' Ġ') Ġ} ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠ Ġ. if Empty Ġ{ Ġif Ġ( raw . isNotBlank ()) ĠlistOf ( raw ) Ġelse ĠlistOf (" Unknown Ġerror ") Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString (". Ġ") Ċ } Ċ