summaryrefslogtreecommitdiff
path: root/desk/ted/fetch.hoon
diff options
context:
space:
mode:
Diffstat (limited to 'desk/ted/fetch.hoon')
-rw-r--r--desk/ted/fetch.hoon24
1 files changed, 24 insertions, 0 deletions
diff --git a/desk/ted/fetch.hoon b/desk/ted/fetch.hoon
new file mode 100644
index 0000000..6444ca7
--- /dev/null
+++ b/desk/ted/fetch.hoon
@@ -0,0 +1,24 @@
+/- spider
+/+ strandio
+=, strand=strand:spider
+=, dejs-soft:format
+=, strand-fail=strand-fail:libstrand:spider
+^- thread:spider
+|= arg=vase
+ =/ request ;;(request:http q.arg)
+ ~& req=request
+ =/ m (strand ,vase) ^- form:m
+ :: =/ m (strand ,json) ^- form:m
+ ;< ~ bind:m (send-request:strandio request)
+ ;< res=client-response:iris bind:m take-client-response:strandio
+ ?. ?=(%finished -.res) (strand-fail:strand %no-body ~)
+ :: =/ headers headers.response-header.res
+ :: =/ redirect (get-header:http 'location' headers)
+ :: ?^ redirect (pure:m [%| u.redirect])
+
+ ::
+ ?~ full-file.res (strand-fail:strand %no-body ~)
+ =/ body=@t q.data.u.full-file.res
+ :: ~& resbody=body
+ =/ json [%s body]
+ (pure:m !>(json))