package Ġcom . ext code . project . core . di Ċ Ċ import Ġandroidx . room . Room Ċ import Ġcom . ext code . project . core . data . Movie App Repository Ċ import Ġcom . ext code . project . core . data . source . local . Local DataSource Ċ import Ġcom . ext code . project . core . data . source . local . room . Movie Database Ċ import Ġcom . ext code . project . core . data . source . remote . Remote DataSource Ċ import Ġcom . ext code . project . core . data . source . remote . network . ApiService Ċ import Ġcom . ext code . project . core . domain . repository . IM ov ie App Repository Ċ import Ġcom . ext code . project . core . utils . App Executors Ċ import Ġnet . sql cipher . database . SQLite Database Ċ import Ġnet . sql cipher . database . Support Factory Ċ import Ġokhttp 3 . Certificate P inner Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġorg . k oin . android . ext . k oin . android Context Ċ 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 Ġdatabase Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġfactory Ġ{ Ġget < Movie Database >(). movie Dao () Ġ} ĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpassphrase : ĠByteArray Ġ= ĠSQLite Database . getBytes (" co dex t ". toCharArray ()) ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠSupport Factory ( pass phrase ) ĊĠĠĠĠĠĠĠ ĠRoom . database Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġandroid Context (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMovie Database :: class . java , Ġ" movie . db " ĊĠĠĠĠĠĠĠ Ġ). fallback To Dest ruct ive Migration () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Helper Factory ( factory ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġnetwork Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhostname Ġ= Ġ" api . the mov ied b . org " ĊĠĠĠĠĠĠĠ Ġval Ġcertificate P inner Ġ= ĠCertificate P inner . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( hostname , Ġ" sha 2 5 6 /+ vq Z VA z T q UP 8 BG k fl 8 8 y U 7 SQ 3 C 8 J 2 u NE a 5 5 B 7 R Zj Eg 0 =") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ ĠOk HttpClient . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( Http Logging Interceptor (). setLevel ( Http Logging Interceptor . Level . BODY )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. connect Timeout ( 1 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Timeout ( 1 2 0 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. certificate P inner ( certificate P inner ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠ Ġ} ĊĠĠĠ Ġsingle Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġretrofit Ġ= ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl (" https :// api . the mov ied b . org / 3 / discover /") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( get ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠ Ġretrofit . create ( ApiService :: class . java ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ val Ġrepository Module Ġ= Ġmodule Ġ{ ĊĠĠĠ Ġsingle Ġ{ ĠLocal DataSource ( get ()) Ġ} ĊĠĠĠ Ġsingle Ġ{ ĠRemote DataSource ( get ()) Ġ} ĊĠĠĠ Ġfactory Ġ{ ĠApp Executors () Ġ} ĊĠĠĠ Ġsingle < IM ov ie App Repository > Ġ{ ĠMovie App Repository ( get (), Ġget (), Ġget ()) Ġ} Ċ }