HttpServerSettings.kt
- package com.hexagontk.http.server
- import com.hexagontk.core.Platform
- import com.hexagontk.http.SslSettings
- import com.hexagontk.http.model.HttpProtocol
- import com.hexagontk.http.model.HttpProtocol.HTTP
- import java.net.InetAddress
- import java.net.URI
- /**
- * Holds server settings info.
- *
- * @property bindAddress Address for the server.
- * @property bindPort Port for the server.
- * @property protocol Server's protocol.
- * @property sslSettings SSL settings info for configuring the server.
- * @property zip Option to compress server responses.
- * @property bindUrl Base URI to connect to the server. It lacks the port (as it can be dynamic).
- */
- class HttpServerSettings(
- val bindAddress: InetAddress = InetAddress.getLoopbackAddress(),
- val bindPort: Int = 2010,
- val protocol: HttpProtocol = HTTP,
- val sslSettings: SslSettings? = null,
- val zip: Boolean = false,
- ) {
- val bindUrl: URI by lazy {
- val scheme = if (protocol == HTTP) "http" else "https"
- val hostName =
- if (bindAddress.isAnyLocalAddress) Platform.ip else bindAddress.canonicalHostName
- URI("$scheme://$hostName")
- }
- fun with(
- bindAddress: InetAddress = this.bindAddress,
- bindPort: Int = this.bindPort,
- protocol: HttpProtocol = this.protocol,
- sslSettings: SslSettings? = this.sslSettings,
- zip: Boolean = this.zip,
- ): HttpServerSettings =
- HttpServerSettings(bindAddress, bindPort, protocol, sslSettings, zip)
- }