webhooks: parse JSON request bodies
This commit is contained in:
parent
92dbdbe438
commit
0d789361d6
|
@ -3,9 +3,9 @@
|
|||
|
||||
## 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/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):
|
||||
result.query[Symbol key] =
|
||||
@[QueryValue(orKind: QueryValueKind.string, string: val)]
|
||||
if req.body == "":
|
||||
result.body = RequestBody(orKind: RequestBodyKind.absent)
|
||||
else:
|
||||
result.body = RequestBody(
|
||||
orKind: RequestBodyKind.present,
|
||||
present: cast[seq[byte]](req.body))
|
||||
let contentType = req.headers.getOrDefault("content-type")
|
||||
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:
|
||||
result.body.present = req.body.toPreserve
|
||||
|
||||
proc bootWebhookActor*(turn: var Turn; root: Cap): Actor =
|
||||
spawn("webhooks", turn) do (turn: var Turn):
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Package
|
||||
|
||||
version = "20231214"
|
||||
version = "20231226"
|
||||
author = "Emery Hemingway"
|
||||
description = "Utilites for Syndicated Actors and Synit"
|
||||
license = "unlicense"
|
||||
|
|
Loading…
Reference in New Issue