.TH HGET 1
.SH NAME
-hget \- retrieve a web page corresponding to a url
+hget, hpost, webpaste, urlencode \- retrieve, post to a web page corresponding to a url
.SH SYNOPSIS
.B hget
[
+.B -l
+|
.B -o
.I file
] [
.I baseurl
]
.I url
+.PP
+.B hpost
+[
+.B -l
+] [
+.B -g
+.I action
+|
+.B -p
+.I action
+|
+.B -m
+.I action
+] [
+.B -u
+]
+.I url
+[
+.I name:value
+|
+.I name@file
+]
+.I ...
+.PP
+.B webpaste
+[
+.I file
+]
+.PP
+.B urlencode
+[
+.B -d
+] [
+.I file
+]
.SH DESCRIPTION
.I Hget
retrieves the web page specified by the URL
.I url
and writes it, absent the
+.B -l
+and
.B -o
-option, to standard output.
+options, to standard output.
.PP
The
.I url
read from standard input.
.PP
The
+.B -l
+option causes
+.I hget
+and
+.I hpost
+to print the location URL from the transaction response
+instead of retrieving the body data. This is useful
+for HTTP POST transactions that redirect to a URL containing
+the posted data so we wont refetch the data we just uploaded
+to the site.
+.PP
+The
.B -o
option is used to keep a local file in sync with a
web page. If the web page has been modified later than the
Option
.B -m
overrides the HTTP method used for the request.
+.PP
+.I Hpost
+retrieves the web page specified by the URL
+.I url,
+parses its HTML for form data, then prints
+.IR rc (1)
+commands to submit the forms with default field
+values.
+If an
+.I action
+URL is provided with the
+.B -g, -p
+or
+.B -m
+flags, then
+.I hget
+is invoked to execute the transaction submitting the form data.
+.PP
+The
+.B -g
+and
+.B -p
+flags set the form method to GET and POST, respectively. The
+.B -m
+flag sets the form method to POST and its enctype to
+.B multipart/form-data.
+In all cases, the target relative form action URL is set to
+.I action.
+.PP
+The
+.B -u
+flag sets the target URL to
+.I url.
+As the
+.I url
+parameter is always required, the
+.B -u
+flag can be omitted when
+.I url
+follows directly after the last option if any.
+.PP
+The remaining arguments of the form
+.B name:value
+are interpreted as text form field names and values to be submitted. An
+argument of the form
+.B name@file
+is interpreted as a file upload, with the information following the
+.B @
+symbol treated as the file name.
+For
+.B multipart/form-data
+uploads (see
+.B -m
+flag), the file has to be seekable as
+.IR file (1)
+is invoked to determine its mime type.
+.PP
+.I Webpaste
+uploads the contents either of its standard input or
+.I file
+to the pastebin website
+.B http://okturing.com
+and then prints a URL where the contents may be retrieved.
+.PP
+.I Urlencode
+is a helper program to URL encode and decode files. The
+.B -d
+flag, instead of encode, decodes URL encoded file. If no
+.I file
+is given, standard input is read. The resulting data
+is written to standard output.
+.SH EXAMPLES
+Download a file from the web.
+.IP
+.EX
+% hget http://9front.org/img/nix-on.jpg >/tmp/nix-on.jpg
+.EE
+.PP
+Retrieve the commands needed to submit a form, which may then be
+edited and sent.
+.IP
+.EX
+% hpost http://p.intma.in
+hpost -u http://p.intma.in -p paste.cgi text:
+.EE
+.PP
+Manually specify fields to be sent to a given
+.I url.
+.IP
+.EX
+% hpost -u http://p.intma.in -p paste.cgi text:'test post'
+.EE
+.PP
+Upload a file, print the resulting URL
+.IP
+.EX
+% hpost -l http://i.intma.in file@/tmp/screen.png | rc
+.EE
+.PP
+Upload the output of
+.IR ns (1)
+to
+.B http://okturing.com
+.IP
+.EX
+% ns | webpaste
+.EE
.SH SOURCE
.B /rc/bin/hget
+.br
+.B /rc/bin/hpost
+.br
+.B /rc/bin/webpaste
+.br
+.B /sys/src/cmd/urlencode.c
.SH "SEE ALSO"
.IR webfs (4),
-.IR ftpfs (4)
+.IR ftpfs (4),
+.IR file (1)
.SH DIAGNOSTICS
-.I Hget
-requires
+.IR Hget ,
+.I hpost
+and
+.I webpaste
+require
.IR webfs (4)
service mounted on
.B /mnt/web
to work.
+.SH HISTORY
+.I Hget
+first appeared in Plan 9 from Bell Labs. It was
+rewritten as an
+.I rc
+script for 9front (January, 2012).
+.I Hpost
+and
+.I urlencode
+first appeared in 9front (October, 2012).
+.I Webpaste
+first appeared in 9front (September, 2013).