Коин использует DSL для описания модулей.Обычно вы объявляете сам модуль на верхнем уровне.Поскольку вам нужно предоставить baseUrl
, вам придется создать для него фабрику.
Аннотация @Provides
совершенно неактуальна, но @Singleton
необходимо перевести и сделать так с single
,Чтобы получить зависимости, просто позвоните get()
.
fun netModule(baseUrl: String) = module {
single {
HttpLoggingInterceptor(
HttpLoggingInterceptor.Logger { message ->
Logger.d("NETWORK: $message")
}).apply {
level = HttpLoggingInterceptor.Level.NONE
}
}
single {
OkHttpClient.Builder()
.addInterceptor(get<HttpLoggingInterceptor>())
.build()
}
single {
Moshi.Builder()
.add(KotlinJsonAdapterFactory())
.build()
}
single {
Retrofit.Builder()
.client(get())
.baseUrl(baseUrl)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build()
}
single { get<Retrofit>().create(ApiInterface::class.java) }
}