diff options
Diffstat (limited to 'desk/lib/shim.hoon')
-rw-r--r-- | desk/lib/shim.hoon | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/desk/lib/shim.hoon b/desk/lib/shim.hoon new file mode 100644 index 0000000..ad07685 --- /dev/null +++ b/desk/lib/shim.hoon @@ -0,0 +1,53 @@ +/- sur=nostril +/+ sr=sortug +/= router /web/router +|% +++ handle + |= [eyre-id=@ta req=inbound-request:eyre] + ^- (unit event:sur) + ?~ body.request.req ~ + =/ ures (de:json:html q.u.body.request.req) + ?~ ures ~ + =/ event (event:dejs u.ures) + :: TODO log on failure or something + `event + + +++ dejs +=, dejs:format +|% +++ event + |= jon=json + ^- event:sur + %. jon + %- ot :~ + id+de-hex + pubkey+de-hex + ['created_at' ni] + kind+ni + tags+de-tags + content+so + sig+de-hex + == +++ de-hex |= jon=json ^- @ux + ?> ?=(%s -.jon) + =/ atom=(unit @) (slaw:sr %ux p.jon) + ?~ atom !! + u.atom +:: +++ de-tags |= jon=json ^- (list tag:sur) + ?> ?=(%a -.jon) %+ turn p.jon de-tag +++ de-tag |= j=json ^- tag:sur + ?> ?=(%a -.j) + =/ l=(list json) p.j + =/ key (@t ->.l) + =/ value (@t +<+.l) + =/ rest ;; (list @t) %+ turn ((list json) +>.l) |= aj=json (@t +.aj) + + [key value rest] + + + -- + +-- + |