package Ġcom . sem icolon . walk hub . di Ċ Ċ import Ġcom . sem icolon . data . interceptor . Authorization Interceptor Ċ import Ġcom . sem icolon . data . remote . api .* Ċ import Ġdagger . Module Ċ import Ġdagger . Provides Ċ import Ġdagger . h ilt . Install In Ċ import Ġdagger . h ilt . components . Singleton Component Ċ import Ġio . socket . client . IO Ċ import Ġio . socket . client . Socket Ċ import Ġio . socket . engine io . client . transport s . WebSocket Ċ import Ġokhttp 3 . Ok HttpClient Ċ import Ġokhttp 3 . logging . Http Logging Interceptor Ċ import Ġretrofit 2 . Ret rofit Ċ import Ġretrofit 2 . converter . gson . Gson Converter Factory Ċ import Ġjavax . inject . Singleton Ċ Ċ @ Module Ċ @ Install In ( Singleton Component :: class ) Ċ object ĠNet Work Module Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠBASE _ URL Ġ= Ġ" https :// server . walk hub . co . kr " ĊĠĠĠ Ġprivate Ġconst Ġval ĠSOCKET _ BASE _ URL Ġ= Ġ" http :// 2 1 1 . 3 8 . 8 6 . 9 2 : 8 0 8 1 " ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Http Logging Interceptor () Ġ= ĠHttp Logging Interceptor () ĊĠĠĠĠĠĠĠ Ġ. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlevel Ġ= ĠHttp Logging Interceptor . Level . BODY ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ok HttpClient ( ĊĠĠĠĠĠĠĠ Ġhttp Logging Interceptor : ĠHttp Logging Interceptor , ĊĠĠĠĠĠĠĠ Ġauthorization Interceptor : ĠAuthorization Interceptor ĊĠĠĠ Ġ): ĠOk HttpClient Ġ= ĊĠĠĠĠĠĠĠ ĠOk HttpClient ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( http Logging Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Interceptor ( authorization Interceptor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Options ( ĊĠĠĠĠĠĠĠ Ġok HttpClient : ĠOk HttpClient ĊĠĠĠ Ġ): ĠIO . Options Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoptions Ġ= ĠIO . Options () ĊĠĠĠĠĠĠĠ Ġoptions . call Factory Ġ= Ġok HttpClient ĊĠĠĠĠĠĠĠ Ġoptions . web Socket Factory Ġ= Ġok HttpClient ĊĠĠĠĠĠĠĠ Ġoptions . transport s Ġ= ĠarrayOf ( WebSocket . NAME ) ĊĠĠĠĠĠĠĠ Ġreturn Ġoptions ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Socket ( ĊĠĠĠĠĠĠĠ Ġoptions : ĠIO . Options ĊĠĠĠ Ġ): ĠSocket Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠIO . socket ( SOCKET _ BASE _ URL , Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Ret rofit ( ĊĠĠĠĠĠĠĠ Ġok HttpClient : ĠOk HttpClient ĊĠĠĠ Ġ): ĠRet rofit Ġ= ĊĠĠĠĠĠĠĠ ĠRet rofit . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. baseUrl ( BASE _ URL ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. client ( ok HttpClient ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add Converter Factory ( Gson Converter Factory . create ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Challenge Api ( ret rofit : ĠRet rofit ): ĠChallenge Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Challenge Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Exercise Api ( ret rofit : ĠRet rofit ): ĠExercise Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Exercise Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Image Api ( ret rofit : ĠRet rofit ): ĠImages Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Images Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Notice Api ( ret rofit : ĠRet rofit ): ĠNot ices Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Not ices Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Notification Api ( ret rofit : ĠRet rofit ): ĠNotification Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Notification Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Rank Api ( ret rofit : ĠRet rofit ): ĠRank Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Rank Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide School Api ( ret rofit : ĠRet rofit ): ĠSchool Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( School Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide User Api ( ret rofit : ĠRet rofit ): ĠUser Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( User Api :: class . java ) ĊĊĠĠĠ Ġ@ Provides ĊĠĠĠ Ġfun Ġprovide Level Api ( ret rofit : ĠRet rofit ): ĠLevel Api Ġ= ĊĠĠĠĠĠĠĠ Ġretrofit . create ( Level Api :: class . java ) Ċ }