mirror of
https://github.com/logos-messaging/logos-delivery.git
synced 2026-07-23 13:03:11 +00:00
* WIP logosdeliverynode app initial commit * WIP - extra cli option * WIP: messaging client REST endpoints * Add event poll for messaging rest with cache mechanism * Messaging rest tests * test: assert 404 via raw string client in messaging REST test presto's typed REST client raises RestDecodingError when it cannot decode a non-2xx text error body into the response type. Add a RestResponse[string] stub (messagingGetSendEventsByIdRawV1) and point the "already-polled id -> 404" assertion at it, matching the relay REST test pattern. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * remove customized cli args as confutils has no support for it * Introduce --entry-layer and re-introduce --mode flags into cli args, applied new driver into LogosDelivery + tests * Add messaging REST client test * Add docker image build of logosdeliverynode for CI builds * Fix tests * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Refactor Messaging REST API to better match Messaging Send and Receive APIs * chore: migrate messaging REST API to Opt[T] Follow-up to the rebase onto master's repo-wide Option[T] -> Opt[T] change (#4035). Converts the code this branch adds to the new convention: - messaging/rest_api/types.nim: MessagingJsonEnvelope fields to Opt[T], Opt.some/Opt.none, and json_serialization/pkg/results instead of json_serialization/std/options. - tests: WakuNodeConf.clusterId is now Opt[uint16]; DTO fields are Opt. `Option[ContentBody]` in the handlers is presto's own API and stays as-is. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
47 lines
1.4 KiB
Nim
47 lines
1.4 KiB
Nim
{.push raises: [].}
|
|
|
|
import results
|
|
|
|
import logos_delivery/api/conf/modes
|
|
import logos_delivery/api/conf/messaging_conf
|
|
import logos_delivery/api/conf/channels_conf
|
|
|
|
export modes, messaging_conf, channels_conf
|
|
|
|
type LogosDeliveryConf* = object
|
|
## Aggregates the per-layer config objects. A layer is mounted iff its config
|
|
## is present.
|
|
kernelConf*: KernelConf
|
|
messagingConf*: Opt[MessagingClientConf]
|
|
channelsConf*: Opt[ReliableChannelManagerConf]
|
|
|
|
proc init*(T: type LogosDeliveryConf, kernelConf: KernelConf): LogosDeliveryConf =
|
|
return LogosDeliveryConf(kernelConf: kernelConf)
|
|
|
|
proc init*(
|
|
T: type LogosDeliveryConf,
|
|
entryLayer: EntryLayer = EntryLayer.channels,
|
|
mode: LogosDeliveryMode,
|
|
preset: string,
|
|
messagingOverrides: MessagingClientConf,
|
|
channelsOverrides: ReliableChannelManagerConf,
|
|
): ConfResult[LogosDeliveryConf] =
|
|
## Structured (preset + overrides) entry. Only `messaging` / `channels` layers
|
|
## reach here; the `kernel` layer uses `init(kernelConf)` (raw, mode ignored).
|
|
let merged = merge(?resolvePreset(preset), messagingOverrides)
|
|
var kernelConf = ?toWakuNodeConf(merged, mode)
|
|
kernelConf.preset = preset
|
|
return ok(
|
|
LogosDeliveryConf(
|
|
kernelConf: KernelConf(kernelConf),
|
|
messagingConf: Opt.some(merged),
|
|
channelsConf:
|
|
if entryLayer == EntryLayer.channels:
|
|
Opt.some(channelsOverrides)
|
|
else:
|
|
Opt.none(ReliableChannelManagerConf),
|
|
)
|
|
)
|
|
|
|
{.pop.}
|