summaryrefslogtreecommitdiff
path: root/backupdesk/lib/shim.hoon
diff options
context:
space:
mode:
authorpolwex <polwex@sortug.com>2025-09-17 12:24:41 +0700
committerpolwex <polwex@sortug.com>2025-09-17 12:24:41 +0700
commit387af8fc1603805b02ce03f8adba4fa73a954f7c (patch)
tree6ac4fe9c33a14d9da418a97955a38efb9338d869 /backupdesk/lib/shim.hoon
parent31a47ce72255bb56920e417d250541b04be82648 (diff)
relay much more robust
Diffstat (limited to 'backupdesk/lib/shim.hoon')
-rw-r--r--backupdesk/lib/shim.hoon88
1 files changed, 88 insertions, 0 deletions
diff --git a/backupdesk/lib/shim.hoon b/backupdesk/lib/shim.hoon
new file mode 100644
index 0000000..5cec0b0
--- /dev/null
+++ b/backupdesk/lib/shim.hoon
@@ -0,0 +1,88 @@
+/- sur=nostrill, nsur=nostr
+/+ js=json-nostr, sr=sortug, nlib=nostr
+/= web /web/router
+|_ [=state:sur =bowl:gall]
+
++$ card card:agent:gall
+++ parse-msg
+ |= [eyre-id=@ta req=inbound-request:eyre]
+ ^- (unit [url=@ relay-msg:nsur])
+ ?~ body.request.req ~
+ =/ jstring q.u.body.request.req
+ =/ ures (de:json:html jstring)
+ ?~ ures ~
+ (msg:de:js u.ures)
+:: ++ get
+:: |%
+:: __
+++ 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
+ |= 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:nsur headers `(json-body:web req-body)]
+ =/ pat /shim
+ [%pass (weld /ws pat) %arvo %k %fard dap.bowl %fetch %noun !>(request)]
+::
+::
+::
+
+
+--