64 lines
2.2 KiB
Kotlin
64 lines
2.2 KiB
Kotlin
package be.simplenotes.app.modules
|
|
|
|
import be.simplenotes.app.Server
|
|
import be.simplenotes.app.filters.AuthFilter
|
|
import be.simplenotes.app.filters.AuthType
|
|
import be.simplenotes.app.filters.ErrorFilter
|
|
import be.simplenotes.app.filters.TransactionFilter
|
|
import be.simplenotes.app.routes.Router
|
|
import be.simplenotes.app.utils.StaticFileResolver
|
|
import be.simplenotes.app.utils.StaticFileResolverImpl
|
|
import be.simplenotes.app.views.ErrorView
|
|
import be.simplenotes.shared.config.ServerConfig
|
|
import org.eclipse.jetty.server.ServerConnector
|
|
import org.http4k.core.Filter
|
|
import org.http4k.core.RequestContexts
|
|
import org.http4k.routing.RoutingHttpHandler
|
|
import org.http4k.server.ConnectorBuilder
|
|
import org.http4k.server.Jetty
|
|
import org.http4k.server.asServer
|
|
import org.koin.core.qualifier.named
|
|
import org.koin.core.qualifier.qualifier
|
|
import org.koin.dsl.module
|
|
import org.koin.dsl.onClose
|
|
import org.http4k.server.ServerConfig as Http4kServerConfig
|
|
|
|
val serverModule = module {
|
|
single(createdAtStart = true) { Server(get(), get()).start() } onClose { it?.stop() }
|
|
single { get<RoutingHttpHandler>().asServer(get()) }
|
|
single<Http4kServerConfig> {
|
|
val config = get<ServerConfig>()
|
|
val builder: ConnectorBuilder = { server: org.eclipse.jetty.server.Server ->
|
|
ServerConnector(server).apply {
|
|
port = config.port
|
|
host = config.host
|
|
}
|
|
}
|
|
Jetty(config.port, builder)
|
|
}
|
|
single<StaticFileResolver> { StaticFileResolverImpl(get()) }
|
|
single {
|
|
Router(
|
|
get(),
|
|
get(),
|
|
get(),
|
|
get(),
|
|
get(),
|
|
get(),
|
|
get(),
|
|
requiredAuth = get(AuthType.Required.qualifier),
|
|
optionalAuth = get(AuthType.Optional.qualifier),
|
|
apiAuth = get(named("apiAuthFilter")),
|
|
get(),
|
|
get(),
|
|
get(),
|
|
)()
|
|
}
|
|
single { RequestContexts() }
|
|
single<Filter>(AuthType.Optional.qualifier) { AuthFilter(get(), AuthType.Optional, get()) }
|
|
single<Filter>(AuthType.Required.qualifier) { AuthFilter(get(), AuthType.Required, get()) }
|
|
single { ErrorFilter(get()) }
|
|
single { TransactionFilter(get()) }
|
|
single { ErrorView(get()) }
|
|
}
|