; Type /upd to begin.
alias upd {
set %upd.site www.example.com
set %upd.request /
set %upd.file example.html
set %upd.header 1
sockclose upd
sockopen upd %upd.site 80
_info Connecting to %upd.site
}
alias -l _info echo -sc info * upd: $1-
alias -l _cleanup {
sockclose upd
unset %upd.*
}
On *:sockopen:upd:{
if $sockerr {
_info Error: unable to connect.
_cleanup
return
}
_info Requesting file %upd.request
sockwrite -tn $sockname GET %upd.request HTTP/1.1
sockwrite -tn $sockname Host: %upd.site
sockwrite -tn $sockname Connection: close
if $isfile(%upd.file) {
sockwrite -tn $sockname If-Modified-Since: $&
$gmt($file(%upd.file).mtime)
}
sockwrite -tn $sockname
}
On *:sockread:upd:{
if %upd.header {
var %var
sockread %var
tokenize 32 %var
if HTTP/* iswm $1 {
if $2 == 200 {
; OK
_info Receiving data...
.remove %upd.file
}
elseif $2 == 304 {
; Not Modified
_info File not modified.
}
else {
_info Error: unrecognized reply: $1-
_cleanup
}
}
elseif !$1 {
; A blank line ends the header section
set %upd.header 0
}
}
else {
_info Writing to disk: %upd.file
sockread &var
bwrite %upd.file -1 &var
}
}
On *:sockclose:upd:{
_info Done.
_cleanup
}