package Ġcom . github . tsch ol ze . du ob ah n . data . network . repositories Ċ Ċ import Ġcom . github . tsch ol ze . du ob ah n . data . domain . models . to Model Ċ import Ġcom . github . tsch ol ze . du ob ah n . data . network . dto . Aut ob ah n Ċ import Ġcom . github . tsch ol ze . du ob ah n . data . network . dto . Aut ob ah ns Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . engine . c io .* Ċ import Ġio . ktor . client . features . json .* Ċ import Ġio . ktor . client . features . json . serializer .* Ċ import Ġio . ktor . client . request .* Ċ import Ġio . ktor . http .* Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . slf 4 j . LoggerFactory Ċ Ċ class ĠUn processed Data Repository : ĠK oin Component Ġ{ ĊĊĠĠĠ Ġ// ĠMARK : Ġ- ĠPrivate Ġproperties Ġ- ĊĊĠĠĠ Ġprivate Ġvar Ġaut ob ah ns Ġ= ĠlistOf < com . github . tsch ol ze . du ob ah n . data . domain . models . Aut ob ah n >() ĊĊĠĠĠ Ġ// ĠMARK : Ġ- ĠInternal Ġgetters Ġ- ĊĊĠĠĠ Ġfun Ġget Aut ob ah ns (): ĠList < com . github . tsch ol ze . du ob ah n . data . domain . models . Aut ob ah n > ĊĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaut ob ah ns ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġcached Ġdata Ġis Ġempty , Ġfetch Ġdata Ġfrom Ġremote . ĊĠĠĠĠĠĠĠ Ġ// ĠElse Ġuse Ġcached Ġdata . ĊĠĠĠĠĠĠĠ Ġif Ġ( aut ob ah ns . count () Ġ== Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcoroutine Scope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoperation Ġ= Ġasync Ġ{ Ġfetch Aut ob ah ns () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoperation . await () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġaut ob ah ns ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsuspend Ġfun Ġfetch Aut ob ah ns ( ĊĠĠĠĠĠĠĠ Ġcompletion : Ġ(( List < com . github . tsch ol ze . du ob ah n . data . domain . models . Aut ob ah n >) Ġ-> ĠUnit )? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠFetch Ġdata Ġfrom Ġremote . ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġclient . get < Aut ob ah ns >( url String Ġ= ĠURL ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠCache Ġfetched Ġdata . ĊĠĠĠĠĠĠĠ Ġaut ob ah ns Ġ= Ġcontainer . aut ob ah ns . map Ġ{ Ġit . to Model () Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġ 3 . ĠInvoke Ġoptional Ġcompletion Ġblock . ĊĠĠĠĠĠĠĠ Ġcompletion ?. invoke ( aut ob ah ns ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠMARK : Ġ- ĠComp anion Ġ- ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEndpoint Ġurl Ġof Ġaut ob ah n Ġids . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠURL Ġ= Ġ" https :// raw . githubusercontent . com / tsch ol ze / kotlin - ag gregator - script - du ob ah n / main / aut ob ah ns . json " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠRepository 's Ġlogger . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger ( Un processed Data Repository :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠHttp Ġclient Ġwhich Ġwill Ġbe Ġused Ġfor Ġall Ġnetwork Ġrequests . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġclient Ġ= ĠHttpClient ( C IO ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠSetup Ġjson Ġserializer . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠKotlin x Serializer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkotlinx . serialization . json . Json Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġignore Unknown Keys Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpretty Print Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Len ient Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccept Content Types Ġ= Ġaccept Content Types Ġ+ ĠContentType . Any ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }