HttpServers.kt
package com.hexagontk.http.server
import com.hexagontk.core.text.Ansi.RESET
import com.hexagontk.core.text.AnsiColor.BLUE
import com.hexagontk.core.text.AnsiColor.CYAN
import com.hexagontk.core.text.AnsiColor.DEFAULT
import com.hexagontk.core.text.AnsiEffect.BOLD
import com.hexagontk.http.handlers.HandlerBuilder
import com.hexagontk.http.handlers.HttpHandler
/**
* Default server banner message.
*/
val serverBanner: String = """
$CYAN _________
$CYAN / \
$CYAN / ____ /
$CYAN / / / /
$CYAN / / /__/$BLUE /\$BOLD H E X A G O N$RESET
$CYAN / /$BLUE / \$DEFAULT ___
$CYAN \ /$BLUE ___ / /
$CYAN \/$BLUE / / / /$CYAN T O O L K I T$RESET
$BLUE / /___/ /
$BLUE / /
$BLUE \_________/ https://hexagontk.com/http_server
$RESET
""".trimIndent()
/**
* Create a server and start it.
*
* @param adapter Adapter instance which implements [HttpServerPort].
* @param handler Handler to be used by the server.
* @param settings Server settings info.
*
* @return The started [HttpServer] instance.
*/
fun serve(
adapter: HttpServerPort,
handler: HttpHandler,
settings: HttpServerSettings = HttpServerSettings()
): HttpServer =
HttpServer(adapter, handler, settings).apply { start() }
/**
* Create a server and start it.
*
* @param adapter Adapter instance which implements [HttpServerPort].
* @param settings Server settings info.
* @param block Lambda to be used to create the server's handlers.
*
* @return The started [HttpServer] instance.
*/
fun serve(
adapter: HttpServerPort,
settings: HttpServerSettings = HttpServerSettings(),
block: HandlerBuilder.() -> Unit
): HttpServer =
HttpServer(adapter, settings, block).apply { start() }