This ksp processor will find all Ktorfit services and create a Koin module with those. Compiled with Kotlin 2.0.21. Please report compatibility with earlier/later versions.
plugins {
// Add ksp
}
dependencies {
ksp("com.dshatz:ktorfit-koin:1.1.0")
implementation("com.dshatz:ktorfit-koin-lib:1.1.0")
// Also add ktorfit and koin
}
interface PriceService {
@GET("https://api.binance.com/api/v3/ticker/price")
suspend fun getCurrentPrice(@Query("symbol") symbol: String): Response
}
@ServiceModule(packageScan = "com.example")
class NetworkModule
val module = module {
single<Ktorfit> { Ktorfit.Builder().build() }
}
startKoin {
// networkModule is the Koin module generated by Ktorfit-Koin.
modules(module, networkModule)
}
@Single
fun provideKtorfit(): Ktorfit {
return Ktorfit.Builder().build()
}
@Module(includes = [NetworkModule::class])
@ComponentScan(...)
class MyModule
startKoin {
modules(MyModule().module)
}
@Single
class PriceRepo(private val priceService: PriceService) {}
or
val service: PriceService by get().inject()
This library supports KOIN_CONFIG_CHECK.
This project is experimental and was made to address my usecase.
I do aim to make it useful for others, so if your usecase does not work, create an issue with examples, and I'll do my best.