package Ġcom . ma ze k ine . telegram . log ics . crypt oc urrencies Ċ Ċ import Ġcom . ma ze k ine . telegram . types . Crypt oc urrency Ċ import Ġcom . ma ze k ine . client . infrastructure . ApiClient Ċ import Ġcom . ma ze k ine . client . infrastructure . ByteArray Adapter Ċ import Ġcom . ma ze k ine . client . infrastructure . ClientException Ċ import Ġcom . ma ze k ine . client . infrastructure . Client Error Ċ import Ġcom . ma ze k ine . client . infrastructure . LocalDate Adapter Ċ import Ġcom . ma ze k ine . client . infrastructure . LocalDateTime Adapter Ċ import Ġcom . ma ze k ine . client . infrastructure . Server Exception Ċ import Ġcom . ma ze k ine . client . infrastructure . ServerError Ċ import Ġcom . ma ze k ine . client . infrastructure . Multi Value Map Ċ import Ġcom . ma ze k ine . client . infrastructure . Request Config Ċ import Ġcom . ma ze k ine . client . infrastructure . Request Method Ċ import Ġcom . ma ze k ine . client . infrastructure . Request Method . GET Ċ import Ġcom . ma ze k ine . client . infrastructure . ResponseType Ċ import Ġcom . ma ze k ine . client . infrastructure . Serializer Ċ import Ġcom . ma ze k ine . client . infrastructure . Success Ċ import Ġcom . ma ze k ine . client . infrastructure . UUID Adapter Ċ import Ġcom . ma ze k ine . client . infrastructure . to Multi Value Ċ import Ġcom . ma ze k ine . telegram . log ics . crypt oc urrencies . models . CM C Response Ċ import Ġcom . squareup . mos hi . M oshi Ċ import Ġcom . squareup . mos hi . adapters . R fc 3 3 3 9 Date Json Adapter Ċ import Ġcom . squareup . mos hi . kotlin . reflect . Kotlin Json Adapter Factory Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjava . util . Date Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ object ĠKnown Coins Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠInternal Ġcollection Ġof Ġmetadata Ġon Ġcoins , Ġloaded Ġfrom ĠCoin Market Cap Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġcoins : ĠMutable Map < String , ĠCrypt oc urrency > Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠM oshi Ġinstance Ġto Ġparse ĠJSON Ġfile ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm oshi : ĠM oshi Ġ= ĠM oshi . Builder () ĊĠĠĠĠĠĠĠ Ġ. add ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDate :: class . java , ĠR fc 3 3 3 9 Date Json Adapter () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. len ient () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. null Safe () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ. add ( LocalDateTime Adapter ()) ĊĠĠĠĠĠĠĠ Ġ. add ( LocalDate Adapter ()) ĊĠĠĠĠĠĠĠ Ġ. add ( UUID Adapter ()) ĊĠĠĠĠĠĠĠ Ġ. add ( ByteArray Adapter ()) ĊĠĠĠĠĠĠĠ Ġ. add ( Kotlin Json Adapter Factory ()) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIdent ifies Ġif Ġthe Ġcollection Ġof Ġcoins Ġwas Ġsuccessfully Ġinitialized ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġinitialized : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . reload () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ< tt > reload ()</ tt > Ġfunction Ġis Ġcalled Ġupon Ġthe Ġfirst Ġrequest Ġto Ġthe Ġobject . ĊĠĠĠĠ Ġ* ĠIt Ġbuilds Ġthe Ġcollection Ġof Ġdata Ġon Ġthe Ġcoins Ġfrom ĠCoin Market Cap 's Ġfeed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġcan Ġalso Ġbe Ġcalled Ġfrom Ġexternal Ġcode Ġif Ġthe Ġprimary Ġinitialization Ġfailed . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġreload () Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcoins Collection : ĠMutable Map < String , ĠCrypt oc urrency > Ġ= Ġmutable Map Of () ĊĊĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠLoading Ġconfiguration Ġfile ...") ĊĊĠĠĠĠĠĠĠ Ġval Ġjson : ĠC MC Response ? ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Ġ= Ġthis . mos hi . adapter ( CM C Response :: class . java ). len ient (). fromJson ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile (" telegram / src / main / kotlin / com / ma ze k ine / telegram / log ics / resources / CM C . json "). read Text () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} catch ( e : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠSomething Ġwent Ġwrong Ġwith Ġloading Ġconfiguration Ġfile . ĠDetails :\ n ${ e . message }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . initialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠRe stored Ġto Ġprevious Ġstate ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġjson !!. let { json Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠSuccessfully Ġloaded Ġcoins Ġdata . ĠBuilding Ġcollection ...") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson . data !!. forEach { coin Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoins Collection [ coin . symbol . toUpperCase ()] Ġ= ĠCrypt oc urrency ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin . symbol . toUpperCase (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin . name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcoin . platform ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( coins Collection . count () Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . coins Ġ= Ġcoins Collection ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠCoin s Ġcollection Ġsuccessfully Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . initialized ) Ġ" re loaded " Ġelse Ġ" initialized ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . initialized Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠSomething Ġwent Ġwrong Ġwith Ġcoins Ġcollection Ġinitialization ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( this . initialized ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ("[ KNOWN CO INS ] ĠRe stored Ġto Ġprevious Ġstate ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġcoin Ġwith Ġsuch Ġticker Ġexists Ġin Ġthe Ġlist Ġof Ġknown Ġcoins ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ ticker ] ĠA Ġsymbolic Ġname Ġof Ġa Ġcrypt oc urrency , Ġe . g . ĠBTC Ġfor ĠBitcoin . ĠCase - ins ensitive ĊĠĠĠĠ Ġ* Ġ@ return Ġ< tt > true </ tt > Ġif Ġthe Ġcoin Ġwith Ġsuch Ġticker Ġexists Ġin Ġthe Ġlibrary , Ġ< tt > false </ tt > Ġotherwise Ġor Ġif Ġthe Ġcollection Ġwas Ġnot Ġd uly Ġinitialized ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcontains ( ticker : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġobject Ġwas Ġinitialized . ĠIf Ġnot , Ġattempt Ġto Ġdo Ġit ĊĠĠĠĠĠĠĠ Ġif (! this . initialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . reload () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠIf Ġthere Ġis Ġstill Ġa Ġfailure ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! this . initialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġthis . coins . contains ( ticker . toUpperCase (). trim ()) Ċ Ċ /* ĊĠĠĠĠĠĠĠ Ġthis . coins [ ticker . toUpperCase (). trim ()] !!. let { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfalse Ċ */ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLet 's Ġget Ġdetails Ġon Ġa Ġcrypt oc urrency Ġby Ġits Ġticker ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ[ ticker ] ĠA Ġsymbolic Ġname Ġof Ġa Ġcrypt oc urrency , Ġe . g . ĠBTC Ġfor ĠBitcoin . ĠCase - ins ensitive ĊĠĠĠĠ Ġ* Ġ@ return Ġ< tt > Crypt oc urrency </ tt > Ġobject Ġcontaining Ġmetadata Ġon Ġthe Ġcoin , Ġif Ġexists Ġin Ġthe Ġcollection , Ġor Ġ< tt > null </ tt > Ġotherwise Ġor Ġif Ġthe Ġcollection Ġwas Ġnot Ġd uly Ġinitialized . ĊĠĠĠĠ Ġ* Ġ@ see Ġ[ Crypt oc urrency ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġget ( ticker : ĠString ): ĠCrypt oc urrency ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġobject Ġwas Ġinitialized . ĠIf Ġnot , Ġattempt Ġto Ġdo Ġit ĊĠĠĠĠĠĠĠ Ġif (! this . initialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . reload () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ĠIf Ġthere Ġis Ġstill Ġa Ġfailure ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif (! this . initialized ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġcoins [ ticker . toUpperCase (). trim ()] ĊĠĠĠ Ġ} Ċ }