summaryrefslogtreecommitdiff
path: root/desk/ted/beg.hoon
blob: 61d79c1a832269a7a83298be4d19247813f6af73 (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
/-  spider
/+  strandio, jsonlib=json-nostrill, sr=sortug
=,  strand=strand:spider
=,  strand-fail=strand-fail:libstrand:spider
^-  thread:spider
|=  arg=vase
  =/  m  (strand ,vase)  ^-  form:m
  |^
  =/  ujon  !<((unit json) arg)
  :: ~&  ujon=ujon
  ?~  ujon  (pure:m !>(bail))
  =/  req  (ui:de:jsonlib u.ujon)
  ?~  req  (pure:m !>(bail))
  ?.  ?=(%begs -.u.req)  (pure:m !>(bail))
  ?-  +<.u.req
    %feed
      ;<  =bowl:spider  bind:m  get-bowl:strandio
      =/  desk  q.byk.bowl
      ~&  dock=[+>.u.req desk]
      ;<  =cage  bind:m  (watch-one:strandio /beg/feed [+>.u.req desk] /beg/feed)
      ~&  >  watch-cage=-.cage
      =/  j  !<(json +.cage)
      (pure:m !>(j))

    %thread
      ;<  =bowl:spider  bind:m  get-bowl:strandio
      =/  desk  q.byk.bowl
      ~&  dock=[+>.u.req desk]
      =/  ship=@p  +>-.u.req
      =/  id=@da  +>+.u.req
      =/  ids  (crip (scow:sr %uw `@`id))
      =/  wire  /beg/thread/[ids]
      ;<  =cage  bind:m  (watch-one:strandio wire [ship desk] wire)
      ~&  >  watch-cage=-.cage
      =/  j  !<(json +.cage)
      (pure:m !>(j))
  ==
    ++  bail  ^-  json
    %+  frond:enjs:format  %error
    s+'error'
  --