.TH HGET 1
.SH NAME
-hget, hpost \- retrieve, post to 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
] [
.PP
.B hpost
[
-.B -u
-]
-.I url
-[
+.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
is invoked to execute the transaction submitting the form data.
.PP
The
-.B -u
-flag sets the target URL to
-.I url.
-As the
-.I url
-parameter is always required, it can be optionally specified
-in the first argument without the
-.B -u
-flag.
-.PP
-The
.B -g
and
.B -p
.B -m
flag sets the form method to POST and its enctype to
.B multipart/form-data.
-In all cases, the form action URL is set to
+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
.B name@file
is interpreted as a file upload, with the information following the
.B @
-symbol treated as the full path to the location of the file.
+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
.IP
.EX
% hpost http://p.intma.in
-/bin/hpost -u http://p.intma.in -p paste.cgi text:
+hpost -u http://p.intma.in -p paste.cgi text:
.EE
.PP
Manually specify fields to be sent to a given
% hpost -u http://p.intma.in -p paste.cgi text:'test post'
.EE
.PP
-Upload a file.
+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
-% hpost http://i.intma.in file@/tmp/screen.png | rc >/dev/null
+% 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 webfs (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).