Skip to content

Instantly share code, notes, and snippets.

Created January 31, 2013 21:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save anonymous/4686849 to your computer and use it in GitHub Desktop.
Save anonymous/4686849 to your computer and use it in GitHub Desktop.
download big with rebol3
rebol[]
REBOL [Title: "Simple Async HTTP"]
send-http-request: func [port] [
write port to-binary ajoin [
"GET " port/spec/path " HTTP/1.0" crlf
"Host: " port/spec/host crlf
crlf
]
]
;!!
done: false
read-http: func [
"Async HTTP reader"
url [url!]
/local spec port
][
spec: probe decode-url url
spec/2: to-lit-word 'tcp
port: open spec
port/awake: func [event] [
;print ["Awake-event:" event/type]
switch/default event/type [
lookup [open event/port]
connect [send-http-request event/port]
wrote [read event/port]
read [
;print ["Read" length? event/port/data "bytes"]
read event/port
]
close [
;!!
done: true
return true
]
] [
print ["Unexpected event:" event/type]
close event/port
return true
]
false ; returned
]
port
]
print "reading..."
;!!
; rp: read-http http://www.rebol.net/
rp: read-http http://netcologne.dl.sourceforge.net/project/warzone2100/releases/3.1.0/warzone2100-3.1.0.tar.xz
;!!
while[not done][wait [rp 1] print ["beep " length? rp/data]]
close rp
print ["finished " length? rp/data]
;print to-string rp/data
data: copy/part find/tail rp/data #{0d0a0d0a} tail rp/data
;write %rebol-net.html data
;browse %rebol-net.html
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment