/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠCode p unk , ĠLLC Ċ Ġ* ĠAuthor ( s ): ĠS cott ĠSl ater Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . code p unk . core . domain . model Ċ Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ Ċ /** Ċ Ġ* ĠA Ġresponse Ġreturned Ġfrom Ġthe Ġnetwork . ĠThis Ġresponse Ġoptionally Ġcontains Ġa Ġ[ text ] Ċ Ġ* Ġstring , Ġan Ġ[ error Type ], Ġ[ error Description ], Ġa Ġ[ hint ] Ġdetail ing Ġpossible Ġsteps Ġto Ġmit igate Ġthe Ċ Ġ* Ġerror , Ġand Ġan Ġoptional Ġmap Ġof Ġfield - specific Ġ[ errors ]. Ċ Ġ*/ Ċ data Ġclass ĠNetwork Message ( ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġmessage Ġstring . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtext : ĠString ?, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtype Ġof Ġthe Ġerror Ġthat Ġwas Ġencountered . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġerror Type : ĠError Type ?, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġdescription Ġof Ġany Ġencountered Ġ[ error Type ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġerror Description : ĠString ?, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġhint Ġthat Ġdescribes Ġpossible Ġre med ies Ġfor Ġany Ġencountered Ġ[ error Type ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhint : ĠString ?, ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAny Ġerrors Ġ( rel ating Ġto Ġspecific Ġkeys ) Ġthat Ġwere Ġdiscovered Ġduring Ġthe Ġrequest . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġerrors : ĠMap < String , ĠArray < String >> ? Ċ Ċ ) Ġ: ĠParcel able Ġ{ ĊĊĠĠĠ Ġ// Ġregion ĠConstructors ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConstructor Ġthat Ġtakes Ġa Ġ[ Parcel ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( parcel : ĠParcel ) Ġ: Ġthis ( ĊĠĠĠĠĠĠĠ Ġparcel . readString (), ĊĠĠĠĠĠĠĠ Ġparcel . read Serializable () Ġas ĠError Type ?, ĊĠĠĠĠĠĠĠ Ġparcel . readString (), ĊĠĠĠĠĠĠĠ Ġparcel . readString (), ĊĠĠĠĠĠĠĠ Ġread Errors ( parcel ) ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ// Ġend region ĠConstructors ĊĊĠĠĠ Ġ// Ġregion ĠImplemented Ġmethods ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFl att ens Ġthis Ġobject Ġin Ġto Ġthe Ġsupplied Ġ[ parcel ]. ĠImplementation Ġof Ġ[ Parcelable ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( parcel : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġparcel . writeString ( text ) ĊĠĠĠĠĠĠĠ Ġparcel . write Serializable ( error Type ) ĊĠĠĠĠĠĠĠ Ġparcel . writeString ( error Description ) ĊĠĠĠĠĠĠĠ Ġparcel . writeString ( hint ) ĊĠĠĠĠĠĠĠ Ġwrite Errors ( parcel , Ġerrors ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDescri bes Ġthe Ġkinds Ġof Ġspecial Ġobjects Ġcontained Ġin Ġthis Ġ[ Parcelable ] Ġinstance 's Ġmar sha led ĊĠĠĠĠ Ġ* Ġrepresentation . ĠImplementation Ġof Ġ[ Parcelable ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ// Ġend region ĠImplemented Ġmethods ĊĊĠĠĠ Ġ// Ġregion ĠNested / inner Ġclasses ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAn Ġenum erated Ġclass Ġdescribing Ġthe Ġtype Ġof Ġerror Ġrepresented Ġin Ġthis Ġ[ Network Message ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġenum Ġclass ĠError Type Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġerror Ġtype Ġthat Ġresults Ġfrom Ġattempting Ġto Ġauthenticate Ġor Ġlog Ġin Ġto Ġa Ġuser Ġaccount ĊĠĠĠĠĠĠĠĠ Ġ* Ġthat Ġis Ġcurrently Ġinactive . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠIN ACTIVE _ USER , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġerror Ġtype Ġthat Ġresults Ġfrom Ġattempting Ġto Ġauthenticate Ġor Ġlog Ġin Ġto Ġa Ġuser Ġaccount ĊĠĠĠĠĠĠĠĠ Ġ* Ġusing Ġinvalid Ġcredentials . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠINVALID _ CRED ENTIAL S , ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġerror Ġtype Ġthat Ġresults Ġfrom Ġattempting Ġto Ġauthenticate Ġor Ġlog Ġin Ġto Ġa Ġuser Ġaccount ĊĠĠĠĠĠĠĠĠ Ġ* Ġwith Ġan Ġinvalid Ġrequest Ġ( i . e . Ġnot Ġsupply ing Ġa Ġpassword , Ġor Ġother Ġrequired Ġfield Ġetc .) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ ĠINVALID _ REQUEST ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĠNested / inner Ġclasses ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// Ġregion ĠProperties ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠA Ġpublic ĠCRE ATOR Ġfield Ġthat Ġgenerates Ġinstances Ġof Ġ[ Network Message ] Ġfrom Ġa Ġ[ Parcel ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠCRE ATOR : ĠParcel able . Creator < Network Message > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠParcel able . Creator < Network Message > Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġregion ĠMethods ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠImplementation Ġof Ġ[ Parcelable . Creator ]. ĠCreate Ġa Ġnew Ġinstance Ġof ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġ[ Network Message ], Ġinstanti ating Ġit Ġfrom Ġthe Ġgiven Ġ[ Parcel ] Ġwhose Ġdata Ġhad ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġpreviously Ġbeen Ġwritten Ġby Ġ[ Parcelable . writeTo Parcel ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( source : ĠParcel ): ĠNetwork Message Ġ= ĠNetwork Message ( source ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠImplementation Ġof Ġ[ Parcelable . Creator ]. ĠCreate Ġa Ġnew Ġarray Ġof Ġ[ Network Message ]. ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Network Message ?> Ġ= ĠarrayOf Null s ( size ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġend region Ġmethods ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġend region ĠProperties ĊĊĠĠĠĠĠĠĠ Ġ// Ġregion ĠMethods ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReads Ġthe Ġ[ errors ] Ġmap Ġfrom Ġthe Ġsupplied Ġ[ parcel ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġread Errors ( parcel : ĠParcel ): ĠMap < String , ĠArray < String >> ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhas Errors Ġ= Ġparcel . read Byte (). toInt () Ġ!= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Errors ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsize Ġ= Ġparcel . readInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHashMap < String , ĠArray < String >>( size ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . readString ()?. also Ġ{ Ġkey Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠArray ( parcel . readInt ()) Ġ{ Ġ"" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . readString Array ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( key , Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠWrites Ġthe Ġ[ errors ] Ġmap Ġto Ġthe Ġsupplied Ġ[ parcel ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġwrite Errors ( parcel : ĠParcel , Ġerrors : ĠMap < String , ĠArray < String >> ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġerrors ?. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . write Byte ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeInt ( it . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . entries . forEach Ġ{ Ġentry Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeString ( entry . key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeInt ( entry . value . size ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparcel . writeString Array ( entry . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġparcel . write Byte ( 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġend region Ġmethods ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġend region ĠComp anion Ġobject Ċ Ċ } Ċ