blob: f0d12a2ebcdf71eb7e7c7c47b4b25aece8be3591 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
/- sur=nostrill, nsur=nostr
/+ js=json-nostr, sr=sortug, nostr-keys, constants, server, ws=websockets
/= web /web/router
|_ [=state:sur =bowl:gall]
+$ card card:agent:gall
++ parse-msg
|= [eyre-id=@ta req=inbound-request:eyre]
^- (unit relay-msg:nsur)
?~ body.request.req ~
=/ jstring q.u.body.request.req
(parse-body jstring)
++ parse-body |= jstring=@t
=/ ures (de:json:html jstring)
?~ ures ~
=/ ur (relay-msg:de:js u.ures)
?~ ur ~& >>> relay-msg-parsing-failed=jstring ~
ur
:: __
:: ++ get-req |= fs=(list filter:nsur)
:: ^- [bulk-req:shim:nsur _state]
:: =/ rls ~(tap by relays.state)
:: =| urls=(list @t)
:: =/ sub-id (gen-sub-id:nostr-keys eny.bowl)
:: =/ req=client-msg:nsur [%req sub-id fs]
:: |- ?~ rls [[urls req] state]
:: :: build http card
:: =/ [url=@t rs=relay-stats:nsur] i.rls
:: :: mutate relays stats
:: =/ nrs rs(reqs nreqs)
:: =. relays.state (~(put by relays.state) url nrs)
:: $(urls [url urls], rls t.rls)
++ send-req |= fs=(list filter:nsur)
^- (quip card _state)
=/ sub-id (gen-sub-id:nostr-keys eny.bowl)
=/ req=client-msg:nsur [%req sub-id fs]
=/ rls ~(tap by relays.state)
?~ rls !!
:: TODO not how this should work
=/ rs=relay-stats:nsur +.i.rls
=/ wid -.i.rls
=/ url url.rs
=/ es=event-stats:nsur [fs 0]
=. reqs.rs (~(put by reqs.rs) sub-id es)
=. relays.state (~(put by relays.state) wid rs)
~& > sending-ws-req=sub-id
:- :~ (send url req) == state
++ get-posts
^- (quip card _state)
=/ kinds (silt ~[1])
:: =/ last-week (sub now.bowl ~d7)
=/ last-week (sub now.bowl ~m2)
:: =/ since (to-unix-secs:jikan:sr last-week)
=/ =filter:nsur [~ ~ `kinds ~ `last-week ~ ~]
(send-req ~[filter])
++ get-user-feed
|= pubkey=@ux
^- (quip card _state)
=/ kinds (silt ~[1])
:: =/ since (to-unix-secs:jikan:sr last-week)
=/ pubkeys (silt ~[pubkey])
=/ =filter:nsur [~ `pubkeys `kinds ~ ~ ~ ~]
(send-req ~[filter])
++ get-profiles
|= pubkeys=(set @ux)
^- (quip card _state)
=/ kinds (silt ~[0])
=/ =filter:nsur [~ `pubkeys `kinds ~ ~ ~ ~]
(send-req ~[filter])
++ 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 ~ ~ ~]
(send-req ~[filter])
++ 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 ~ ~ ~]
(send-req ~[filter])
::
++ test-connection
|= relay-url=@t
=/ kinds (silt ~[1])
=/ since (sub now.bowl ~m10)
=/ =filter:nsur [~ ~ `kinds ~ `since ~ ~]
=/ sub-id (gen-sub-id:nostr-keys eny.bowl)
=/ req=client-msg:nsur [%req sub-id ~[filter]]
:- :~ (send relay-url req) == state
++ send
|= [relay-url=@t req=client-msg:nsur] ^- card:agent:gall
~& >>> sendws=relay-url
=/ req-body=json (req:en:js req)
=/ octs (json-to-octs:server req-body)
=/ wmsg=websocket-message:eyre [1 `octs]
~& >> sup=sup.bowl
=/ conn (check-connected:ws relay-url bowl)
~& >>> send-client-conn=conn
?~ conn :: if no ws connection we start a thread which will connect first, then send the message
!!
:: =/ =task:iris [%websocket-connect dap.bowl relay-url]
:: [%pass /ws-req/nostrill %arvo %i task]
::
(give-ws-payload-client:ws wid.u.conn wmsg)
--
|