mirror of
https://github.com/logos-messaging/logos-messaging-nim.git
synced 2026-05-12 05:19:33 +00:00
* Soft-deprecate --cluster-id=N triggering the associated preset selection * Rewrite applyNetworkConf to apply user-set fields over preset fields * Add createNode(preset, mode, overrides, additions) nim api * Generate WakuNodeConfOverlay (all Option fields) from WakuNodeConf * New parser for configJson handles new messaging shape and full conf shape * Change all confbuilder defaults from literal values to DefaultXXX consts * Change int/bool WakuNodeConf fields to Option to get user intent w/o sentinels * Make Option CLI default-value help mention defaults now owned by confbuilder * Misc refactors, fixes * Add tests
68 lines
2.0 KiB
Nim
68 lines
2.0 KiB
Nim
import chronicles, std/[net, options, sequtils], results
|
|
import ../waku_conf
|
|
|
|
logScope:
|
|
topics = "waku conf builder rest server"
|
|
|
|
const
|
|
DefaultRestEnabled*: bool = false
|
|
DefaultRestPort*: Port = Port(0)
|
|
DefaultRestAdmin*: bool = false
|
|
|
|
################################
|
|
## REST Server Config Builder ##
|
|
################################
|
|
type RestServerConfBuilder* = object
|
|
enabled*: Option[bool]
|
|
|
|
allowOrigin*: seq[string]
|
|
listenAddress*: Option[IpAddress]
|
|
port*: Option[Port]
|
|
admin*: Option[bool]
|
|
relayCacheCapacity*: Option[uint32]
|
|
|
|
proc init*(T: type RestServerConfBuilder): RestServerConfBuilder =
|
|
RestServerConfBuilder()
|
|
|
|
proc withEnabled*(b: var RestServerConfBuilder, enabled: bool) =
|
|
b.enabled = some(enabled)
|
|
|
|
proc withAllowOrigin*(b: var RestServerConfBuilder, allowOrigin: seq[string]) =
|
|
b.allowOrigin = concat(b.allowOrigin, allowOrigin)
|
|
|
|
proc withListenAddress*(b: var RestServerConfBuilder, listenAddress: IpAddress) =
|
|
b.listenAddress = some(listenAddress)
|
|
|
|
proc withPort*(b: var RestServerConfBuilder, port: Port) =
|
|
b.port = some(port)
|
|
|
|
proc withPort*(b: var RestServerConfBuilder, port: uint16) =
|
|
b.port = some(Port(port))
|
|
|
|
proc withAdmin*(b: var RestServerConfBuilder, admin: bool) =
|
|
b.admin = some(admin)
|
|
|
|
proc withRelayCacheCapacity*(b: var RestServerConfBuilder, relayCacheCapacity: uint32) =
|
|
b.relayCacheCapacity = some(relayCacheCapacity)
|
|
|
|
proc build*(b: RestServerConfBuilder): Result[Option[RestServerConf], string] =
|
|
if not b.enabled.get(DefaultRestEnabled):
|
|
return ok(none(RestServerConf))
|
|
|
|
if b.listenAddress.isNone():
|
|
return err("restServer.listenAddress is not specified")
|
|
if b.relayCacheCapacity.isNone():
|
|
return err("restServer.relayCacheCapacity is not specified")
|
|
|
|
return ok(
|
|
some(
|
|
RestServerConf(
|
|
allowOrigin: b.allowOrigin,
|
|
listenAddress: b.listenAddress.get(),
|
|
port: b.port.get(DefaultRestPort),
|
|
admin: b.admin.get(DefaultRestAdmin),
|
|
relayCacheCapacity: b.relayCacheCapacity.get(),
|
|
)
|
|
)
|
|
)
|