summaryrefslogtreecommitdiff
path: root/backupdesk/lib/shim.hoon
blob: 5cec0b0ceb30406a8db0a6966eb4be6abe6c610e (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
/-  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)]  
::
::
:: 


--