package Ġno . nav . dag p enger . re gel . api . arena . adapter Ċ Ċ import Ġcom . github . kit tin un f . fuel . core . Request Ċ import Ġcom . github . kit tin un f . fuel . core . Response Deserial izable Ċ import Ġcom . github . kit tin un f . fuel . core . response Ċ import Ġcom . squareup . mos hi . FromJson Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . ToJson Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġjava . math . BigDecimal Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Year Month Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ val Ġm oshi Instance : ĠM oshi Ġ= ĠM oshi . Builder () ĊĠĠĠ Ġ. add ( Year Month Json Adapter ()) ĊĠĠĠ Ġ. add ( LocalDateTime Json Adapter ()) ĊĠĠĠ Ġ. add ( LocalDate Json Adapter ()) ĊĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠ Ġ. add ( URI Json Adapter ()) ĊĠĠĠ Ġ. add ( BigDecimal Json Adapter ()) ĊĠĠĠ Ġ. build () !! Ċ Ċ class ĠYear Month Json Adapter Ġ{ ĊĠĠĠ Ġ@ ToJson ĊĠĠĠ Ġfun ĠtoJson ( year Month : ĠYear Month ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġyear Month . format ( DateTime Formatter . of Pattern (" yyyy - MM ")) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FromJson ĊĠĠĠ Ġfun Ġfrom Json ( json : ĠString ): ĠYear Month Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠYear Month . parse ( json ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocalDate Json Adapter Ġ{ ĊĠĠĠ Ġ@ ToJson ĊĠĠĠ Ġfun ĠtoJson ( local Date : ĠLocalDate ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlocal Date . format ( DateTime Formatter . ISO _ LOCAL _ DATE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FromJson ĊĠĠĠ Ġfun Ġfrom Json ( json : ĠString ): ĠLocalDate Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocalDate . parse ( json ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocalDateTime Json Adapter Ġ{ ĊĠĠĠ Ġ@ ToJson ĊĠĠĠ Ġfun ĠtoJson ( local DateTime : ĠLocalDateTime ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġlocal DateTime . format ( DateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FromJson ĊĠĠĠ Ġfun Ġfrom Json ( json : ĠString ): ĠLocalDateTime Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠLocalDateTime . parse ( json ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠBigDecimal Json Adapter Ġ{ ĊĊĠĠĠ Ġ@ ToJson ĊĠĠĠ Ġfun ĠtoJson ( big Decimal : ĠBigDecimal ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbig Decimal . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ FromJson ĊĠĠĠ Ġfun Ġfrom Json ( json : ĠString ): ĠBigDecimal Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠBigDecimal ( json ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġfun Ġ< T Ġ: ĠAny > Ġm oshi Deserializer Of ( clazz : ĠClass < T >) Ġ= Ġobject Ġ: ĠResponse Deserial izable < T > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( content : ĠString ): ĠT ? Ġ= Ġm oshi Instance ĊĠĠĠĠĠĠĠ Ġ. adapter ( clazz ) ĊĠĠĠĠĠĠĠ Ġ. fromJson ( content ) Ċ } Ċ Ċ internal Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > ĠRequest . response Object () Ġ= Ġresponse ( mos hi Deserializer Of ( T :: class . java )) Ċ