mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-03-04 08:03:15 +00:00
* logosdelivery_get_available_configs collects and format WakuNodeConf options * simplify debug config output
55 lines
1.8 KiB
Nim
55 lines
1.8 KiB
Nim
import std/[json, strutils]
|
|
import waku/factory/waku_state_info
|
|
import tools/confutils/[cli_args, config_option_meta]
|
|
|
|
proc logosdelivery_get_available_node_info_ids(
|
|
ctx: ptr FFIContext[Waku], callback: FFICallBack, userData: pointer
|
|
) {.ffi.} =
|
|
## Returns the list of all available node info item ids that
|
|
## can be queried with `get_node_info_item`.
|
|
requireInitializedNode(ctx, "GetNodeInfoIds"):
|
|
return err(errMsg)
|
|
|
|
return ok($ctx.myLib[].stateInfo.getAllPossibleInfoItemIds())
|
|
|
|
proc logosdelivery_get_node_info(
|
|
ctx: ptr FFIContext[Waku],
|
|
callback: FFICallBack,
|
|
userData: pointer,
|
|
nodeInfoId: cstring,
|
|
) {.ffi.} =
|
|
## Returns the content of the node info item with the given id if it exists.
|
|
requireInitializedNode(ctx, "GetNodeInfoItem"):
|
|
return err(errMsg)
|
|
|
|
let infoItemIdEnum =
|
|
try:
|
|
parseEnum[NodeInfoId]($nodeInfoId)
|
|
except ValueError:
|
|
return err("Invalid node info id: " & $nodeInfoId)
|
|
|
|
return ok(ctx.myLib[].stateInfo.getNodeInfoItem(infoItemIdEnum))
|
|
|
|
proc logosdelivery_get_available_configs(
|
|
ctx: ptr FFIContext[Waku], callback: FFICallBack, userData: pointer
|
|
) {.ffi.} =
|
|
## Returns information about the accepted config items.
|
|
requireInitializedNode(ctx, "GetAvailableConfigs"):
|
|
return err(errMsg)
|
|
|
|
let optionMetas: seq[ConfigOptionMeta] = extractConfigOptionMeta(WakuNodeConf)
|
|
var configOptionDetails = newJArray()
|
|
|
|
# for confField, confValue in fieldPairs(conf):
|
|
# defaultConfig[confField] = $confValue
|
|
|
|
for meta in optionMetas:
|
|
configOptionDetails.add(
|
|
%*{meta.fieldName: meta.typeName & "(" & meta.defaultValue & ")", "desc": meta.desc}
|
|
)
|
|
|
|
var jsonNode = newJObject()
|
|
jsonNode["configOptions"] = configOptionDetails
|
|
let asString = pretty(jsonNode)
|
|
return ok(pretty(jsonNode))
|