1
0
This commit is contained in:
Hubert Van De Walle 2020-10-06 15:54:41 +02:00
parent cf09799bc6
commit f0155dea31
10 changed files with 76 additions and 58 deletions

View File

@ -40,7 +40,7 @@
<dependency>
<groupId>org.http4k</groupId>
<artifactId>http4k-core</artifactId>
<version>3.260.0</version>
<version>3.265.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>

View File

@ -1,55 +1,10 @@
package starter
import org.http4k.core.then
import org.http4k.filter.ServerFilters
import org.http4k.routing.ResourceLoader
import org.http4k.routing.RoutingHttpHandler
import org.http4k.routing.routes
import org.http4k.routing.static
import org.http4k.server.SunHttp
import org.http4k.server.asServer
import org.koin.core.context.startKoin
import org.koin.dsl.bind
import org.koin.dsl.module
import org.koin.dsl.onClose
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import starter.routes.IndexRouteSupplier
import starter.routes.RouteSupplier
import starter.routes.ZipRouteSupplier
import starter.routes.toRouter
import starter.templates.*
val mainModule = module {
single(createdAtStart = true) {
get<Logger>().info("Starting on http://localhost:7000")
get<RoutingHttpHandler>().asServer(SunHttp(7000)).start()
} onClose { it?.stop() }
single { Config().load() }
single { LoggerFactory.getLogger("Starter") }
single { Views(get(), get()) }
single { ProjectZip(getAll()) }
}
val templateModule = module {
single { PomTemplate(get()) } bind Template::class
single { MainTemplate(get()) } bind Template::class
single { LogbackTemplate(get()) } bind Template::class
single { GitignoreTemplate(get()) } bind Template::class
}
val routesModule = module {
single { IndexRouteSupplier(get()) } bind RouteSupplier::class
single { ZipRouteSupplier(get(), get()) } bind RouteSupplier::class
single {
ServerFilters.CatchAll().then(
routes(
static(ResourceLoader.Classpath("/assets")),
getAll<RouteSupplier>().toRouter()
))
}
}
import starter.modules.mainModule
import starter.modules.pebbleModule
import starter.modules.routesModule
import starter.modules.templateModule
fun main() {
startKoin {

View File

@ -1,6 +1,7 @@
package starter
package starter.config
import com.electronwill.nightconfig.core.file.FileConfig
import starter.*
import com.electronwill.nightconfig.core.Config as NightConfig
data class StarterConfig(

View File

@ -0,0 +1,24 @@
package starter.modules
import org.http4k.routing.RoutingHttpHandler
import org.http4k.server.SunHttp
import org.http4k.server.asServer
import org.koin.dsl.module
import org.koin.dsl.onClose
import org.slf4j.Logger
import org.slf4j.LoggerFactory
import starter.ProjectZip
import starter.config.Config
import starter.views.Views
val mainModule = module {
single(createdAtStart = true) {
get<Logger>().info("Starting on http://localhost:7000")
get<RoutingHttpHandler>().asServer(SunHttp(7000)).start()
} onClose { it?.stop() }
single { Config().load() }
single { LoggerFactory.getLogger("Starter") }
single { Views(get(), get()) }
single { ProjectZip(getAll()) }
}

View File

@ -1,4 +1,4 @@
package starter
package starter.modules
import com.mitchellbosecke.pebble.extension.escaper.SafeString
import com.mitchellbosecke.pebble.template.EvaluationContext
@ -6,6 +6,7 @@ import com.mitchellbosecke.pebble.template.PebbleTemplate
import org.intellij.lang.annotations.Language
import org.koin.dsl.bind
import org.koin.dsl.module
import starter.Dependency
import starter.utils.PebbleEngineBuilder
import starter.utils.PebbleEngineBuilder.CacheType.ConcurrentMap
import starter.utils.PebbleFunction

View File

@ -0,0 +1,25 @@
package starter.modules
import org.http4k.core.then
import org.http4k.filter.ServerFilters
import org.http4k.routing.ResourceLoader
import org.http4k.routing.routes
import org.http4k.routing.static
import org.koin.dsl.bind
import org.koin.dsl.module
import starter.routes.IndexRouteSupplier
import starter.routes.RouteSupplier
import starter.routes.ZipRouteSupplier
import starter.routes.toRouter
val routesModule = module {
single { IndexRouteSupplier(get()) } bind RouteSupplier::class
single { ZipRouteSupplier(get(), get()) } bind RouteSupplier::class
single {
ServerFilters.CatchAll().then(
routes(
static(ResourceLoader.Classpath("/assets")),
getAll<RouteSupplier>().toRouter()
))
}
}

View File

@ -0,0 +1,12 @@
package starter.modules
import org.koin.dsl.bind
import org.koin.dsl.module
import starter.templates.*
val templateModule = module {
single { PomTemplate(get()) } bind Template::class
single { MainTemplate(get()) } bind Template::class
single { LogbackTemplate(get()) } bind Template::class
single { GitignoreTemplate(get()) } bind Template::class
}

View File

@ -4,8 +4,7 @@ import org.http4k.core.Method
import org.http4k.core.Response
import org.http4k.core.Status
import org.http4k.routing.bind
import starter.StarterConfig
import starter.Views
import starter.views.Views
class IndexRouteSupplier(private val views: Views) : RouteSupplier {
override fun get() = "/" bind Method.GET to {

View File

@ -8,15 +8,15 @@ import org.http4k.core.with
import org.http4k.routing.bind
import starter.Project
import starter.ProjectZip
import starter.StarterConfig
import starter.config.StarterConfig
import starter.extensions.attachment
import starter.extensions.badRequest
import starter.extensions.ok
import java.io.ByteArrayInputStream
class ZipRouteSupplier(
private val conf: StarterConfig,
private val projectZip: ProjectZip,
private val conf: StarterConfig,
private val projectZip: ProjectZip,
) : RouteSupplier {
override fun get() = "/" bind Method.POST to { req ->

View File

@ -1,6 +1,7 @@
package starter
package starter.views
import com.mitchellbosecke.pebble.PebbleEngine
import starter.config.StarterConfig
import starter.utils.render
class Views(private val engine: PebbleEngine, config: StarterConfig) {