HGET(1)                                                   HGET(1)

     NAME
          hget, hpost, webpaste, urlencode - retrieve, post to a web
          page corresponding to a url

     SYNOPSIS
          hget [ -l | -o file ] [ -p body | -P ] [ -r header ] [ -m
          method ] [ -b baseurl ] url

          hpost [ -l ] [ -g action | -p action | -m action ] [ -u ]
          url [ name:value | name@file ] ...

          webpaste [ file ]

          urlencode [ -d ] [ file ]

     DESCRIPTION
          Hget retrieves the web page specified by the URL url and
          writes it, absent the -l and -o options, to standard output.

          The url can be a relative path like ../index.html if a abso-
          lute baseurl was specified with the -b option.

          If url is of type HTTP and the -p or -P options are speci-
          fied, then a HTTP POST is performed.  With -p the data to be
          posted is provided by the body argument as a string or
          alternatively with -P read from standard input.

          The -l option causes hget and 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.

          The -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
          file, it is copied into the file.  If the file is up to date
          but incomplete, hget will fetch the missing bytes.

          Option -r sends an arbitrary HTTP header.

          Option -m overrides the HTTP method used for the request.

          Hpost retrieves the web page specified by the URL url,
          parses its HTML for form data, then prints rc(1) commands to
          submit the forms with default field values.  If an action
          URL is provided with the -g, -p or -m flags, then hget is
          invoked to execute the transaction submitting the form data.

          The -g and -p flags set the form method to GET and POST,
          respectively. The -m flag sets the form method to POST and

     HGET(1)                                                   HGET(1)

          its enctype to multipart/form-data. In all cases, the target
          relative form action URL is set to action.

          The -u flag sets the target URL to url. As the url parameter
          is always required, the -u flag can be omitted when url fol-
          lows directly after the last option if any.

          The remaining arguments of the form name:value are inter-
          preted as text form field names and values to be submitted.
          An argument of the form name@file is interpreted as a file
          upload, with the information following the @ symbol treated
          as the file name.  For multipart/form-data uploads (see -m
          flag), the file has to be seekable as file(1) is invoked to
          determine its mime type.

          Webpaste uploads the contents either of its standard input
          or file to the pastebin website http://okturing.com and then
          prints a URL where the contents may be retrieved.

          Urlencode is a helper program to URL encode and decode
          files. The -d flag, instead of encode, decodes URL encoded
          file. If no file is given, standard input is read. The
          resulting data is written to standard output.

     EXAMPLES
          Download a file from the web.

               % hget http://9front.org/img/nix-on.jpg >/tmp/nix-on.jpg

          Retrieve the commands needed to submit a form, which may
          then be edited and sent.

               % hpost http://p.intma.in
               hpost -u http://p.intma.in -p paste.cgi text:

          Manually specify fields to be sent to a given url.

               % hpost -u http://p.intma.in -p paste.cgi text:'test post'

          Upload a file, print the resulting URL

               % hpost -l http://i.intma.in file@/tmp/screen.png | rc

          Upload the output of ns(1) to http://okturing.com

               % ns | webpaste

     SOURCE
          /rc/bin/hget
          /rc/bin/hpost
          /rc/bin/webpaste
          /sys/src/cmd/urlencode.c

     HGET(1)                                                   HGET(1)

     SEE ALSO
          webfs(4), ftpfs(4), file(1)

     DIAGNOSTICS
          Hget, hpost and webpaste require webfs(4) service mounted on
          /mnt/web to work.

     HISTORY
          Hget first appeared in Plan 9 from Bell Labs. It was rewrit-
          ten as an rc script for 9front (January, 2012).  Hpost and
          urlencode first appeared in 9front (October, 2012).
          Webpaste first appeared in 9front (September, 2013).