Skip to content

Commit

Permalink
[#3995] Use injections inside the routes (#3999)
Browse files Browse the repository at this point in the history
  • Loading branch information
mustafaozhan authored Oct 3, 2024
1 parent 8c3364d commit f3e2956
Show file tree
Hide file tree
Showing 5 changed files with 29 additions and 24 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,11 @@ import com.oztechan.ccc.backend.app.routes.currency
import com.oztechan.ccc.backend.app.routes.error
import com.oztechan.ccc.backend.app.routes.root
import com.oztechan.ccc.backend.app.routes.version
import com.oztechan.ccc.backend.controller.api.APIController
import com.oztechan.ccc.common.core.infrastructure.di.DISPATCHER_IO
import io.ktor.serialization.kotlinx.json.json
import io.ktor.server.application.Application
import io.ktor.server.application.install
import io.ktor.server.plugins.contentnegotiation.ContentNegotiation
import io.ktor.server.routing.routing
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import org.koin.core.qualifier.named
import org.koin.ktor.ext.inject

@Suppress("unused")
internal fun Application.apiModule() {
Expand All @@ -26,16 +19,10 @@ internal fun Application.apiModule() {
json()
}

val apiController: APIController by inject()
val globalScope: CoroutineScope by inject()
val ioDispatcher: CoroutineDispatcher by inject(named(DISPATCHER_IO))

routing {
globalScope.launch(ioDispatcher) {
root(ioDispatcher)
currency(apiController, ioDispatcher)
version(ioDispatcher)
error(ioDispatcher)
}
root()
currency()
version()
error()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,24 @@ package com.oztechan.ccc.backend.app.routes

import co.touchlab.kermit.Logger
import com.oztechan.ccc.backend.controller.api.APIController
import com.oztechan.ccc.common.core.infrastructure.di.DISPATCHER_IO
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.call
import io.ktor.server.response.respond
import io.ktor.server.routing.Route
import io.ktor.server.routing.get
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
import org.koin.core.qualifier.named
import org.koin.ktor.ext.inject

private const val PATH_BY_BASE = "/currency/byBase/"
private const val PARAMETER_BASE = "base"

internal fun Route.currency(
apiController: APIController,
ioDispatcher: CoroutineDispatcher
) {
internal fun Route.currency() {
val apiController: APIController by inject()
val ioDispatcher: CoroutineDispatcher by inject(named(DISPATCHER_IO))

get(PATH_BY_BASE) {
Logger.v { "GET Request $PATH_BY_BASE" }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package com.oztechan.ccc.backend.app.routes

import co.touchlab.kermit.Logger
import com.oztechan.ccc.common.core.infrastructure.di.DISPATCHER_IO
import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.call
Expand All @@ -14,11 +15,15 @@ import io.ktor.server.routing.Route
import io.ktor.server.routing.get
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
import org.koin.core.qualifier.named
import org.koin.ktor.ext.inject

private const val PATH_ERROR = "/error"
private const val ERROR_HTML = "error.html"

internal fun Route.error(ioDispatcher: CoroutineDispatcher) {
internal fun Route.error() {
val ioDispatcher: CoroutineDispatcher by inject(named(DISPATCHER_IO))

get(PATH_ERROR) {
Logger.v { "GET Request $PATH_ERROR" }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
package com.oztechan.ccc.backend.app.routes

import co.touchlab.kermit.Logger
import com.oztechan.ccc.common.core.infrastructure.di.DISPATCHER_IO
import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.call
Expand All @@ -14,11 +15,15 @@ import io.ktor.server.routing.Route
import io.ktor.server.routing.get
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
import org.koin.core.qualifier.named
import org.koin.ktor.ext.inject

private const val PATH_ROOT = "/"
private const val INDEX_HTML = "index.html"

internal fun Route.root(ioDispatcher: CoroutineDispatcher) {
internal fun Route.root() {
val ioDispatcher: CoroutineDispatcher by inject(named(DISPATCHER_IO))

get(PATH_ROOT) {
Logger.v { "GET Request $PATH_ROOT" }

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.oztechan.ccc.backend.app.routes

import co.touchlab.kermit.Logger
import com.oztechan.ccc.common.core.infrastructure.di.DISPATCHER_IO
import io.ktor.http.ContentType
import io.ktor.http.HttpStatusCode
import io.ktor.server.application.call
Expand All @@ -10,10 +11,14 @@ import io.ktor.server.routing.Route
import io.ktor.server.routing.get
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.withContext
import org.koin.core.qualifier.named
import org.koin.ktor.ext.inject

private const val PATH_VERSION = "/version"

internal fun Route.version(ioDispatcher: CoroutineDispatcher) {
internal fun Route.version() {
val ioDispatcher: CoroutineDispatcher by inject(named(DISPATCHER_IO))

get(PATH_VERSION) {
Logger.v { "GET Request $PATH_VERSION" }

Expand Down

0 comments on commit f3e2956

Please sign in to comment.