summaryrefslogtreecommitdiff
path: root/desk/app
diff options
context:
space:
mode:
Diffstat (limited to 'desk/app')
-rw-r--r--desk/app/nostril.hoon204
-rw-r--r--desk/app/nostrill.hoon254
2 files changed, 254 insertions, 204 deletions
diff --git a/desk/app/nostril.hoon b/desk/app/nostril.hoon
deleted file mode 100644
index 51f9965..0000000
--- a/desk/app/nostril.hoon
+++ /dev/null
@@ -1,204 +0,0 @@
-/- sur=nostril, nsur=nostr
-/+ lib=nostril, nlib=nostr, sr=sortug,
- shim, dbug, muta=nostril-mutations, jsonlib=json-nostril,
- trill=trill-post
-/= 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)
- mutat ~(. muta [state 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-ui
- %handle-http-request serve
- ==
- :: handling shim events
- ++ serve
- =/ order !<(order:web vase)
- :: ~& request.req.order
- ?: .=(url.request.req.order '/nostr-shim')
- =/ msg (handle:shim order)
- ?~ msg `this
- ~& "msg processed"
- =/ relay (~(get by relays) url.u.msg)
- =/ nevents=(list event:nsur) ?~ relay [event.u.msg ~] [event.u.msg u.relay]
- =/ nevents2 (scag 100 nevents)
- =. relays (~(put by relays) url.u.msg nevents2)
- =/ response (ebail:rout id.order)
- [response this]
-
- ::
- :_ this (rout:rout order)
-
- ::
- ++ on-ui
- =/ jon=json !<(json vase)
- ~& > on-ui-jon=jon
- =/ upoke=(unit poke:ui:sur) (ui:de:jsonlib jon)
- ?~ upoke ~& bad-ui-poke=jon `this
- ?- -.u.upoke
- %fols (handle-fols +.u.upoke)
- %prof (handle-prof +.u.upoke)
- %keys (handle-keys +.u.upoke)
- %post (handle-post +.u.upoke)
- %rela (handle-rela +.u.upoke)
- ==
- ++ handle-post |= poke=post-poke:ui:sur
- ?- -.poke
- %add
- =/ sp (build-sp:trill our.bowl our.bowl content.poke)
- =/ p (build-post:trill now.bowl pubkey.poke sp)
- =. state (add-to-feed:mutat p)
- `this
- %rt `this
- %del `this
- ==
- ++ handle-fols |= poke=fols-poke:ui:sur
- `this
- ++ handle-prof |= poke=prof-poke:ui:sur
- ?- -.poke
- %add
- =. profiles (~(put by profiles) +<.poke +>.poke)
- `this
- %del
- =. profiles (~(del by profiles) +.poke)
- `this
- ==
- ++ handle-keys |= poke=keys-poke:ui:sur
- ?- -.poke
- %add
- =/ ks (gen-keys:nlib eny.bowl)
- =. keys (~(put by keys) -.ks +.ks)
- ~& new-keys=keys
- `this
- %del
- =. profiles (~(del by profiles) +.poke)
- `this
- ==
- ++ handle-rela |= poke=relay-poke:ui:sur
- ?- -.poke
- %send
- =/ upoast (get-poast:mutat host.poke id.poke)
- ?~ upoast `this
- :_ this :_ ~
- =/ keylist ~(tap by keys)
- =/ key (snag 0 keylist)
- =/ event (post-to-event:lib key eny.bowl u.upoast)
- =/ =req:shim:nsur [%post event relays.poke]
- (send:shim dap.bowl req)
- ==
-
- ::
- ++ debug
- =/ noun !<(* vase)
- ?+ -.noun `this
- %wtf
- =/ lol=(unit @) ~
- =/ l ~| "wtf" (need lol)
- `this
- %genkey
- =/ keys (gen-keys:nlib eny.bowl)
- ~& keys=keys
- `this
- %printkey
- =/ keylist ~(tap by keys)
- =/ key (snag 0 keylist)
- ~& pub=(scow:sr %ux -.key)
- ~& priv=(scow:sr %ux +.key)
- `this
- %feed
- =/ lol debug-own-feed:mutat
- `this
- %rt :: relay test
- :_ this :_ ~
- :: khan
- =/ =req:shim:nsur :- %get
- %+ turn ~(tap by relays)
- |= [url=@t *]
- =/ kinds ~[0 1 6 7]
- =/ =filter:nsur [~ ~ kinds ~ ~ ~ `5]
- [url ~[filter]]
- (send:shim dap.bowl req)
- ::
- %rt2
- =/ rls ~(tap by relays)
- =/ lol
- |- ?~ rls ~
- =/ rl i.rls
- ~& > relay=[-.rl (lent +.rl)]
- $(rls t.rls)
- `this
- ==
- ::
- --
-::
-++ on-watch
-|= =(pole knot)
- ?> .=(our.bowl src.bowl)
- ?+ pole !!
- [%ui ~]
- :_ this
- =/ jon (state:en:jsonlib state)
- [%give %fact ~ [%json !>(jon)]]^~
- ==
-::
-++ on-leave
- |~ =(pole knot)
- ^- (quip card:agent:gall agent:gall)
- `this
-::
-++ on-peek
- |~ =(pole knot)
- ^- (unit (unit cage))
- ~& > on-peek=pole
- ?+ pole ~
- [%j %feed rest=*] ~
- [%j %post rest=*] ~
- ==
-::
-++ 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
---
diff --git a/desk/app/nostrill.hoon b/desk/app/nostrill.hoon
new file mode 100644
index 0000000..575fa3e
--- /dev/null
+++ b/desk/app/nostrill.hoon
@@ -0,0 +1,254 @@
+/- sur=nostrill, nsur=nostr
+/+ lib=nostrill, nlib=nostr, sr=sortug,
+ shim, dbug, muta=nostrill-mutations, jsonlib=json-nostrill,
+ trill=trill-post
+/= 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)
+ mutat ~(. muta [state bowl])
+ shimm ~(. shim [state bowl])
+++ on-init
+ ^- (quip card:agent:gall agent:gall)
+ =/ default (default-state:lib bowl)
+ :_ this(state default)
+ :~ 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)
+ |^
+ ?+ mark `this
+ %noun debug
+ %json on-ui
+ %handle-http-request handle-shim
+ ==
+ :: handling shim events
+ ++ handle-shim
+ =/ order !<(order:web vase)
+ :: ~& request.req.order
+ ?: .=(url.request.req.order '/nostr-shim')
+ =/ msg (parse-msg:shim order)
+ ?~ msg `this
+ ?> ?=(%ws -.u.msg)
+ :: =^ cards state (handle-shim-msg:mutat u.msg)
+ =^ cards state (handle-ws:mutat +.u.msg)
+ [cards this]
+
+ ::
+ :_ this (rout:rout order)
+
+ ::
+ ++ on-ui
+ =/ jon=json !<(json vase)
+ ~& > on-ui-jon=jon
+ =/ upoke=(unit poke:ui:sur) (ui:de:jsonlib jon)
+ ?~ upoke ~& bad-ui-poke=jon `this
+ ?- -.u.upoke
+ %keys handle-cycle-keys
+ %fols (handle-fols +.u.upoke)
+ %prof (handle-prof +.u.upoke)
+ %post (handle-post +.u.upoke)
+ %rela (handle-rela +.u.upoke)
+ ==
+ ++ handle-cycle-keys
+ =/ ks (gen-keys:nlib eny.bowl)
+ =. keys [ks keys]
+ :: =/ nkeys keys(i ks, t `(list keys:nsur)`keys)
+ :: :: =. keys nkeys
+ ~& new-keys=keys
+ `this
+
+ ++ handle-post |= poke=post-poke:ui:sur
+ ?- -.poke
+ %add
+ =/ sp (build-sp:trill our.bowl our.bowl content.poke)
+ =/ p (build-post:trill now.bowl pubkey.poke sp)
+ =. state (add-to-feed:mutat p)
+ `this
+ %rt `this
+ %del `this
+ ==
+ ++ handle-fols |= poke=fols-poke:ui:sur
+ `this
+ ++ handle-prof |= poke=prof-poke:ui:sur
+ ?- -.poke
+ %add
+ =. profiles (~(put by profiles) +<.poke +>.poke)
+ `this
+ %del
+ =. profiles (~(del by profiles) +.poke)
+ `this
+ ==
+ ++ handle-rela |= poke=relay-poke:ui:sur
+ ?- -.poke
+ %send
+ =/ upoast (get-poast:mutat host.poke id.poke)
+ ?~ upoast `this
+ =/ event (post-to-event:lib i.keys eny.bowl u.upoast)
+ =/ req=bulk-req:shim:nsur [relays.poke %event event]
+ =/ cards :~((send:shimm req))
+ [cards this]
+ ==
+
+
+ ::
+ ++ debug
+ =/ noun !<(* vase)
+ ?+ noun `this
+ %wtf
+ =/ lol=(unit @) ~
+ =/ l ~| "wtf" (need lol)
+ `this
+ %genkey
+ =/ keys (gen-keys:nlib eny.bowl)
+ ~& keys=keys
+ `this
+ %printkey
+ =/ key i.keys
+ ~& pub=(scow:sr %ux -.key)
+ ~& priv=(scow:sr %ux +.key)
+ `this
+ %feed
+ =/ lol debug-own-feed:mutat
+ `this
+ %nstats
+ ~& nostr-feed=~(wyt by nostr-feed)
+ ~& profiles=~(wyt in ~(key by profiles))
+ =/ lol (print-relay-stats:lib relays)
+
+ `this
+ %http
+ ~& pending=pending
+ `this
+ %rt :: relay test
+ =^ cards state get-posts:shimm
+ [cards this]
+ %rt0
+ =/ ids
+ %+ roll (tap:norm:sur nostr-feed) |= [[@ ev=event:nsur] acc=[(set @ux) (set @ux)]]
+ ?. .=(kind.ev 1) acc
+ %= acc
+ - (~(put in -.acc) id.ev)
+ + (~(put in +.acc) pubkey.ev)
+ ==
+ =^ cards state (populate-profiles:mutat -.ids)
+ :: (get-profiles:shimm +.ids)
+ :: (get-engagement:shimm -.ids)
+ [cards this]
+ %rt1
+ =/ l ~(tap by pending)
+ =/ l (scag 1 l)
+ =| cards=(list card:agent:gall)
+ |-
+ ?~ l
+ ~& cards=(lent cards) [cards this]
+ =/ [sub-id=@t pf=filter:nsur done=filter:nsur] i.l
+ =/ diff (diff-filters:nlib pf done)
+ :: ~& > diff=diff
+ ?~ authors.pf $(l t.l)
+ =^ cs state (populate-profiles:mutat u.authors.pf)
+
+ $(l t.l, cards (weld cards cs))
+ %rt2
+
+ =/ poasts (tap:norm:sur nostr-feed)
+ =/ pcount (lent poasts)
+ =| invalid=(list @t)
+ |- ?~ poasts
+ ~& >>> invalid=invalid
+ `this
+ =/ p=event:nsur +.i.poasts
+ =/ valid (validate-pubkey:nlib pubkey.p)
+ ?. valid
+ =/ ids (crip (scow:sr %ux id.p))
+ ~& ids
+ ~& content.p
+ $(invalid [ids invalid], poasts t.poasts)
+ $(poasts t.poasts)
+ %rt3
+ =/ poasts (tap:norm:sur nostr-feed)
+ =| pubkeys=(set @ux)
+ =/ pks=(set @ux)
+ |- ?~ poasts pubkeys
+ =/ p=event:nsur +.i.poasts
+ =/ npks (~(put in pubkeys) pubkey.p)
+ $(poasts t.poasts, pubkeys npks)
+ ::
+ =^ cards state (populate-profiles:mutat pks)
+ [cards this]
+ ==
+
+ ::
+ --
+::
+++ on-watch
+|= =(pole knot)
+ ?> .=(our.bowl src.bowl)
+ ?+ pole !!
+ [%ui ~]
+ :_ this
+ =/ jon (state:en:jsonlib state)
+ [%give %fact ~ [%json !>(jon)]]^~
+ ==
+::
+++ on-leave
+ |~ =(pole knot)
+ ^- (quip card:agent:gall agent:gall)
+ `this
+::
+++ on-peek
+ |~ =(pole knot)
+ ^- (unit (unit cage))
+ ~& > on-peek=pole
+ ?+ pole ~
+ [%j %feed rest=*] ~
+ [%j %post rest=*] ~
+ ==
+::
+++ on-agent
+ |~ [wire sign:agent:gall]
+ ^- (quip card:agent:gall agent:gall)
+ `this
+::
+++ on-arvo
+ |~ [wire=(pole knot) =sign-arvo]
+ ^- (quip card:agent:gall agent:gall)
+ ?+ wire `this
+ [%http sub-id=@t *]
+ ?> ?=([%khan %arow *] sign-arvo)
+ ?: ?=(%| -.p.sign-arvo) `this
+ =/ jstring !<(@ +>.p.sign-arvo)
+ =/ msg (parse-body:shimm jstring)
+ ?~ msg ~& `@t`jstring `this
+ ?> ?=(%http -.u.msg)
+ =^ cards state (handle-http:mutat sub-id.wire +.u.msg)
+ `this
+ ==
+::
+++ on-fail
+ |~ [term tang]
+ ^- (quip card:agent:gall agent:gall)
+ `this
+--