webhooks: parse JSON request bodies
This commit is contained in:
parent
92dbdbe438
commit
0d789361d6
|
@ -3,9 +3,9 @@
|
||||||
|
|
||||||
## An actor for relaying Webhooks.
|
## An actor for relaying Webhooks.
|
||||||
|
|
||||||
import std/[asyncdispatch, asynchttpserver, net, sets, strutils, tables, uri]
|
import std/[asyncdispatch, asynchttpserver, json, net, sets, strutils, tables, uri]
|
||||||
|
|
||||||
import preserves
|
import preserves, preserves/jsonhooks
|
||||||
import syndicate, syndicate/[bags, relays]
|
import syndicate, syndicate/[bags, relays]
|
||||||
import syndicate/protocols/[http, transportAddress]
|
import syndicate/protocols/[http, transportAddress]
|
||||||
|
|
||||||
|
@ -31,12 +31,17 @@ proc toRecord(req: Request; seqnum: BiggestInt; path: seq[string]): HttpRequest
|
||||||
for key, val in decodeQuery(req.url.query):
|
for key, val in decodeQuery(req.url.query):
|
||||||
result.query[Symbol key] =
|
result.query[Symbol key] =
|
||||||
@[QueryValue(orKind: QueryValueKind.string, string: val)]
|
@[QueryValue(orKind: QueryValueKind.string, string: val)]
|
||||||
if req.body == "":
|
let contentType = req.headers.getOrDefault("content-type")
|
||||||
result.body = RequestBody(orKind: RequestBodyKind.absent)
|
if req.body.len > 0:
|
||||||
|
result.body = RequestBody(orKind: RequestBodyKind.present)
|
||||||
|
case contentType.toString
|
||||||
|
of "application/json":
|
||||||
|
var js = parseJson req.body
|
||||||
|
result.body.present = js.toPreserve
|
||||||
|
of "application/octet-stream":
|
||||||
|
result.body.present = cast[seq[byte]](req.body).toPreserve
|
||||||
else:
|
else:
|
||||||
result.body = RequestBody(
|
result.body.present = req.body.toPreserve
|
||||||
orKind: RequestBodyKind.present,
|
|
||||||
present: cast[seq[byte]](req.body))
|
|
||||||
|
|
||||||
proc bootWebhookActor*(turn: var Turn; root: Cap): Actor =
|
proc bootWebhookActor*(turn: var Turn; root: Cap): Actor =
|
||||||
spawn("webhooks", turn) do (turn: var Turn):
|
spawn("webhooks", turn) do (turn: var Turn):
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# Package
|
# Package
|
||||||
|
|
||||||
version = "20231214"
|
version = "20231226"
|
||||||
author = "Emery Hemingway"
|
author = "Emery Hemingway"
|
||||||
description = "Utilites for Syndicated Actors and Synit"
|
description = "Utilites for Syndicated Actors and Synit"
|
||||||
license = "unlicense"
|
license = "unlicense"
|
||||||
|
|
Loading…
Reference in New Issue