diff options
author | polwex <polwex@sortug.com> | 2025-08-28 12:59:01 +0700 |
---|---|---|
committer | polwex <polwex@sortug.com> | 2025-08-28 12:59:01 +0700 |
commit | 7c0681a06e0358887d2f64001dc43125554766c9 (patch) | |
tree | cd19f060a5f4147d6ee6928eecfe1abf03bdbb8e /desk/app/nostril.hoon |
init
Diffstat (limited to 'desk/app/nostril.hoon')
-rw-r--r-- | desk/app/nostril.hoon | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/desk/app/nostril.hoon b/desk/app/nostril.hoon new file mode 100644 index 0000000..f941493 --- /dev/null +++ b/desk/app/nostril.hoon @@ -0,0 +1,118 @@ +/- sur=nostril +/+ lib=nostril, shim, dbug +/= web /web/router +|% ++$ versioned-state $%(state-0:sur) +-- +=| versioned-state +=* state - +%- agent:dbug +^- agent:gall +|_ =bowl:gall ++* this . + rout ~(. router:web [state bowl]) + cards ~(. cards:lib bowl) +++ on-init + ^- (quip card:agent:gall agent:gall) + :_ this(state default:sur) + :~ shim-binding:cards + == +:: +++ on-save + ^- vase + !>(state) +:: +++ on-load + |~ old-state=vase + ^- (quip card:agent:gall agent:gall) + =/ old-state !<(versioned-state old-state) + ?- -.old-state + %0 `this(state old-state) + == +:: +++ on-poke + |~ [=mark =vase] + ^- (quip card:agent:gall agent:gall) + ~& >> on-poke-nostril=mark + |^ + ?+ mark `this + %noun debug + %json on-ws + %handle-http-request serve + == + :: web ui + ++ serve + =/ order !<(order:web vase) + :: ~& request.req.order + ?: .=(url.request.req.order '/nostr-shim') + =/ event (handle:shim order) + ?~ event `this + =/ nevents=(list event:sur) [u.event events] + =/ nevents2=(list event:sur) (scag 100 nevents) + =. events nevents2 + =/ response (ebail:rout id.order) + [response this] + + :: + :_ this (rout:rout order) + + :: + ++ on-ws + =/ jon=json !<(json vase) + ~& > on-ws-jon=jon + + `this + :: + ++ debug + =/ noun !<(* vase) + ?+ -.noun `this + %genkey + =/ keys (gen-keys:lib eny.bowl) + ~& keys=keys + `this + %rt :: relay test + :_ this :_ ~ + :: khan + =/ relay-list=(list json) %+ turn ~(tap in relays) + |= t=@t ^- json [%s t] + =/ req-body=json %- frond:enjs:format [%relays %a relay-list] + =/ headers :~ + [key='content-type' value='application/json'] + == + =/ =request:http [%'POST' shim-url:sur headers `(json-body:web req-body)] + =/ pat /lol/lmao + [%pass (weld /ws pat) %arvo %k %fard dap.bowl %fetch %noun !>(request)] + == + :: + -- +:: +++ on-watch + |~ =(pole knot) + ^- (quip card:agent:gall agent:gall) + `this +:: +++ on-leave + |~ =(pole knot) + ^- (quip card:agent:gall agent:gall) + `this +:: +++ on-peek + |~ =(pole knot) + ^- (unit (unit cage)) + ~ +:: +++ on-agent + |~ [wire sign:agent:gall] + ^- (quip card:agent:gall agent:gall) + `this +:: +++ on-arvo + |~ [wire =sign-arvo] + ^- (quip card:agent:gall agent:gall) + `this +:: +++ on-fail + |~ [term tang] + ^- (quip card:agent:gall agent:gall) + `this +-- |