summaryrefslogtreecommitdiff
path: root/desk/lib/shim.hoon
diff options
context:
space:
mode:
Diffstat (limited to 'desk/lib/shim.hoon')
-rw-r--r--desk/lib/shim.hoon112
1 files changed, 102 insertions, 10 deletions
diff --git a/desk/lib/shim.hoon b/desk/lib/shim.hoon
index be95b70..4afdf2b 100644
--- a/desk/lib/shim.hoon
+++ b/desk/lib/shim.hoon
@@ -1,23 +1,115 @@
-/- sur=nostr
-/+ js=json-nostr
+/- sur=nostrill, nsur=nostr
+/+ js=json-nostr, sr=sortug, nlib=nostr, constants
/= web /web/router
-|%
+|_ [=state:sur =bowl:gall]
-++ handle
++$ card card:agent:gall
+++ parse-msg
|= [eyre-id=@ta req=inbound-request:eyre]
- ^- (unit [url=@ event=event:sur])
+ ^- (unit res:shim:nsur)
?~ body.request.req ~
=/ jstring q.u.body.request.req
+ (parse-body jstring)
+++ parse-body |= jstring=@t
=/ ures (de:json:html jstring)
?~ ures ~
- (msg:de:js u.ures)
+ (shim-res:de:js u.ures)
+:: __
+++ get-req |= fs=(list filter:nsur)
+ ^- [bulk-req:shim:nsur _state]
+ =/ rls ~(tap by relays.state)
+ =| urls=(list @t)
+ =/ sub-id (gen-sub-id:nlib eny.bowl)
+ =/ =req:shim:nsur [%req sub-id fs]
+ |- ?~ rls [[urls req] state]
+ :: build http card
+ =/ [url=@t rs=relay-stats:nsur] i.rls
+ :: mutate relays stats
+ =/ es=event-stats:nsur [fs 0]
+ =/ nreqs (~(put by reqs.rs) sub-id es)
+ =/ nrs rs(reqs nreqs)
+ =. relays.state (~(put by relays.state) url nrs)
+ $(urls [url urls], rls t.rls)
+
+++ get-posts
+ ^- (quip card _state)
+ =/ kinds (silt ~[1])
+ =/ last-week (sub now.bowl ~d7)
+ :: =/ since (to-unix-secs:jikan:sr last-week)
+ =/ =filter:nsur [~ ~ `kinds ~ `last-week ~ ~]
+ =^ req=bulk-req:shim:nsur state (get-req ~[filter])
+ :- :~((send req)) state
+
+++ get-profiles
+ |= pubkeys=(set @ux)
+ ^- (quip card _state)
+ =/ kinds (silt ~[0])
+ =/ =filter:nsur [~ `pubkeys `kinds ~ ~ ~ ~]
+ =^ req=bulk-req:shim:nsur state (get-req ~[filter])
+ :- :~((send req)) state
+
+++ get-engagement
+ |= post-ids=(set @ux)
+ ^- (quip card _state)
+ =/ post-strings %- ~(run in post-ids) |= id=@ux (crip (scow:sr %ux id))
+ =/ =filter:nsur
+ =/ kinds (silt ~[6 7])
+ =/ tags (malt :~([%e post-strings]))
+ [~ ~ `kinds `tags ~ ~ ~]
+ =^ req state (get-req ~[filter])
+ :- :~((send req)) state
+
+++ get-quotes
+ |= post-id=@ux
+ ^- (quip card _state)
+ =/ post-string (crip (scow:sr %ux post-id))
+ =/ kinds (silt ~[1])
+ =/ tags (malt :~([%q (silt ~[post-string])]))
+ =/ =filter:nsur [~ ~ `kinds `tags ~ ~ ~]
+ =^ req state (get-req ~[filter])
+ :- :~((send req)) state
+
+
++ send
- |= [desk=@tas =req:shim:sur] ^- card:agent:gall
- =/ req-body (req:en:js req)
+ |= req=bulk-req:shim:nsur ^- card:agent:gall
+ =/ req-body (bulk-req:en:js req)
+ :: ~& shim-req-json=(en:json:html req-body)
=/ headers :~
[key='content-type' value='application/json']
==
- =/ =request:http [%'POST' url:shim:sur headers `(json-body:web req-body)]
+ =/ =request:http [%'POST' url:shim:nsur headers `(json-body:web req-body)]
=/ pat /shim
- [%pass (weld /ws pat) %arvo %k %fard desk %fetch %noun !>(request)]
+ [%pass (weld /ws pat) %arvo %k %fard dap.bowl %fetch %noun !>(request)]
+
+++ send-http
+ |= req=http-req:shim:nsur
+ ^- card:agent:gall
+ =/ req-body (http-req:en:js req)
+ :: ~& shim-req-json=(en:json:html req-body)
+ =/ headers :~
+ [key='content-type' value='application/json']
+ ==
+ =/ =request:http [%'POST' url:shim:nsur headers `(json-body:web req-body)]
+ [%pass /http/[sub-id.req] %arvo %k %fard dap.bowl %fetch %noun !>(request)]
+::
+:: HTTP
+::
+
+++ get-profiles-http
+ |= pubkeys=(set @ux)
+ ^- (quip card _state)
+ =/ relays ~(key by relays.state)
+ :: TODO make a function to use most reliable
+ =/ relay (head ~(tap in relays))
+ ~& http=relay
+ =/ sub-id (gen-sub-id:nlib eny.bowl)
+ =/ kinds (silt ~[0])
+ =/ total=filter:nsur [~ `pubkeys `kinds ~ ~ ~ ~]
+ =/ chunk (silt (scag 10 ~(tap in pubkeys)))
+ =/ =filter:nsur [~ `chunk `kinds ~ ~ ~ ~]
+ =. pending.state (~(put by pending.state) sub-id [total *filter:nsur])
+ =/ req=http-req:shim:nsur [relay http-delay:constants sub-id ~[total]]
+ =/ =card (send-http req)
+ :- :~(card) state
+
--