/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠHub ĠTeam Ġof Ġp anda - lang Ġorganization Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . p anda _ lang . hub . packages Ċ Ċ import Ġio . ktor . application . Application Ċ import Ġio . ktor . client . HttpClient Ċ import Ġio . ktor . routing . Routing Ċ import Ġkotlinx . coroutines . run Blocking Ċ import Ġorg . lit ote . km ongo . coroutine . Coroutine Database Ċ import Ġorg . p anda _ lang . hub . github . Remote GitHub Client Ċ import Ġorg . p anda _ lang . hub . user . User Facade Ċ import Ġjava . util . concurrent . Executors Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ const Ġval ĠE MIT _ STATS _ DELAY _ IN _ SECONDS Ġ= Ġ 1 0 L Ċ Ċ private Ġval ĠS CH ED UL ER Ġ= ĠExec utors . new Single Thread Scheduled Executor () Ċ Ċ fun ĠApplication . packages Module ( httpClient : ĠHttpClient , Ġuser Facade : ĠUser Facade , Ġdatabase : ĠCor outine Database ): ĠPackage Facade Ġ{ ĊĠĠĠ Ġval Ġgit Hub Client Ġ= ĠRemote GitHub Client ( httpClient ) ĊĊĠĠĠ Ġval Ġpackage Collection Ġ= Ġdatabase . get Collection < Package >() ĊĠĠĠ Ġval Ġpackage Repository Ġ= ĠMongo Package Repository ( package Collection ) ĊĠĠĠ Ġval Ġpackage Service Ġ= ĠPackage Service ( git Hub Client , Ġuser Facade , Ġpackage Repository ) ĊĠĠĠ Ġval Ġstats Service Ġ= ĠStats Service ( package Service ) ĊĊĠĠĠ ĠS CH ED UL ER . schedule With Fixed Delay ( ĊĠĠĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstats Service . emit Cached Requests () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ ĠE MIT _ STATS _ DELAY _ IN _ SECONDS , ĠE MIT _ STATS _ DELAY _ IN _ SECONDS , ĠTimeUnit . SECONDS ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġreturn ĠPackage Facade ( package Service , Ġstats Service ) Ċ } Ċ Ċ fun Ġinstall Package Routing ( routing : ĠRouting , Ġpackage Facade : ĠPackage Facade ) Ġ{ ĊĠĠĠ Ġrouting . routes ( package Facade ) Ċ } Ċ