package Ġcom . lu ke . movies . di Ċ Ċ import Ġcom . lu ke . movies . Build Config Ċ import Ġcom . jak ew h art on . ret rofit 2 . adapter . rx java 2 . Rx Java 2 Call Adapter Factory Ċ import Ġcom . lu ke . movies . data . api . Api Services Ċ import Ġcom . lu ke . movies . data . repositories . movie Details . Movie Details Repository Ċ import Ġcom . lu ke . movies . data . repositories . movies . Movies Repository Ċ import Ġcom . lu ke . movies . view Models . Movies ViewModel Ċ import Ġcom . lu ke . movies . view Models . Movie Details ViewModel Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . k oin . android x . view model . dsl . viewModel Ċ import Ġorg . k oin . dsl . module Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjava . util . concurrent . TimeUnit ĊĊ Ċ val Ġrepositories Module Ġ= Ġmodule Ġ{ ĊĊĠĠĠ Ġfun Ġprovide Movies Repository ( api Services : ĠApi Services ): ĠMov ies Repository Ġ= ĊĠĠĠĠĠĠĠ ĠMov ies Repository ( api Services ) ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide Movies Repository ( get ()) Ġ} ĊĊĠĠĠ Ġfun Ġprovide Movie Details Repository ( api Services : ĠApi Services ): ĠMovie Details Repository Ġ= ĊĠĠĠĠĠĠĠ ĠMovie Details Repository ( api Services ) ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide Movie Details Repository ( get ()) Ġ} Ċ } Ċ Ċ val ĠviewModel Module Ġ= Ġmodule Ġ{ ĊĊĠĠĠ Ġfun Ġprovide Movies ViewModel ( repository : ĠMov ies Repository ): ĠMov ies ViewModel Ġ= ĊĠĠĠĠĠĠĠ ĠMov ies ViewModel ( repository ) ĊĊĠĠĠ Ġfun Ġprovide Movie Details ViewModel ( repository : ĠMovie Details Repository ): ĠMovie Details ViewModel Ġ= ĊĠĠĠĠĠĠĠ ĠMovie Details ViewModel ( repository ) ĊĊĠĠĠ ĠviewModel Ġ{ Ġprovide Movies ViewModel ( get ()) Ġ} ĊĊĠĠĠ ĠviewModel Ġ{ Ġprovide Movie Details ViewModel ( get ()) Ġ} Ċ } ĊĊ Ċ val Ġnetwork Modules Ġ= Ġmodule Ġ{ ĊĊĠĠĠ Ġsingle < Api Services > Ġ{ ĊĠĠĠĠĠĠĠ Ġget < Ret rofit >(). create ( Api Services :: class . java ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġconnect Timeout : ĠLong Ġ= Ġ 4 0 ĊĠĠĠ Ġval Ġread Timeout : ĠLong Ġ= Ġ 4 0 ĊĊĠĠĠ Ġfun Ġprovide HttpClient (): ĠOk HttpClient Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġok HttpClient Builder Ġ= ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( connect Timeout , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( read Timeout , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Build Config . DEBUG ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhttp Logging Interceptor Ġ= ĠHttp Logging Interceptor (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġok HttpClient Builder . add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġok HttpClient Builder . build () ĊĠĠĠĠĠĠĠ Ġreturn Ġok HttpClient Builder . build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprovide Ret rofit ( client : ĠOk HttpClient , ĠbaseUrl : ĠString ): ĠRet rofit Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( baseUrl ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Call Adapter Factory ( Rx Java 2 Call Adapter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( client ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġsingle Ġ{ Ġprovide HttpClient () Ġ} ĊĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ Ġprovide Ret rofit ( get (), ĠBuild Config . BASE _ URL ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ val Ġall Modules Ġ= Ġrepositories Module Ġ+ ĠviewModel Module Ġ+ Ġnetwork Modules