package Ġcom . rr v ie ir 4 . pick arr . plugins Ċ Ċ import Ġcom . rr v ie ir 4 . pick arr . config . Config Ċ import Ġcom . rr v ie ir 4 . pick arr . services . notification . Notification Client Ċ import Ġcom . rr v ie ir 4 . pick arr . services . notification . telegram . Telegram Client Ċ import Ġcom . rr v ie ir 4 . pick arr . services . popular . Pop ular Service Ċ import Ġcom . rr v ie ir 4 . pick arr . services . popular . sources . I mdb Service Ċ import Ġcom . rr v ie ir 4 . pick arr . services . recommend ation . Recommendation Service Ċ import Ġcom . rr v ie ir 4 . pick arr . services . serv arr . rad arr . Rad arr Service Ċ import Ġcom . rr v ie ir 4 . pick arr . services . serv arr . son arr . Son arr Service Ċ import Ġcom . rr v ie ir 4 . pick arr . services . storage . DB Client Ċ import Ġcom . rr v ie ir 4 . pick arr . services . t mdb . T mdb Service Ċ import Ġcom . rr v ie ir 4 . pick arr . task . Recommendation Tracker Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . client .* Ċ import Ġio . ktor . client . engine . c io .* Ċ import Ġio . ktor . client . features . json .* Ċ import Ġio . ktor . client . features . logging .* Ċ import Ġorg . k oin . core . qual ifier . named Ċ import Ġorg . k oin . dsl . module Ċ import Ġorg . k oin . ktor . ext . K oin Ċ Ċ fun ĠApplication . setup DI () Ġ{ ĊĠĠĠ Ġinstall ( K oin ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmodules ( app Module ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġval Ġapp Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle Ġ{ ĠConfig . setup From Env () Ġas ĠConfig Ġ} ĊĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ ĠHttpClient ( C IO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Logging ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= ĠLogger . DEFAULT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= ĠLogLevel . INFO ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Json Feature ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserializer Ġ= ĠGson Serializer () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory < Notification Client > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget < Config >() ĊĠĠĠĠĠĠĠ ĠTelegram Client ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . telegram Config . telegram User Token , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . telegram Config . telegram Chat Id , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . action Url Config . action Url , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . action Url Config . add Movie Method , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . action Url Config . add TV Method ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory < Pop ular Service > Ġ{ ĠI mdb Service ( get ()) Ġ} ĊĊĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠ ĠRad arr Service ( get < Config >(). rad arr Config , Ġget ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠ ĠSon arr Service ( get < Config >(). son arr Config , Ġget ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠ ĠT mdb Service ( get < Config >(). t mdb Config , Ġget ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory ( named ( MO VI ES _ RE COMM END ATION _ SERVICE _ NAME )) Ġ{ ĊĠĠĠĠĠĠĠ ĠRecommend ation Service ( get (), Ġget < Rad arr Service >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory ( named ( TV _ RE COMM END ATION _ SERVICE _ NAME )) Ġ{ ĊĠĠĠĠĠĠĠ ĠRecommend ation Service ( get (), Ġget < Son arr Service >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠ ĠRecommend ation Service ( get (), Ġget < Son arr Service >()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfactory Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġget < Config >() ĊĠĠĠĠĠĠĠ ĠRecommend ation Tracker ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( MO VI ES _ RE COMM END ATION _ SERVICE _ NAME )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ( named ( TV _ RE COMM END ATION _ SERVICE _ NAME )), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDB Client , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . movie Requirements , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig . tv Requirements ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġconst Ġval ĠMO VI ES _ RE COMM END ATION _ SERVICE _ NAME Ġ= Ġ" movies " Ċ private Ġconst Ġval ĠTV _ RE COMM END ATION _ SERVICE _ NAME Ġ= Ġ" tv " Ċ