NAME

   HTTP::Simple - Simple procedural interface to HTTP::Tiny

SYNOPSIS

     perl -MHTTP::Simple -e'getprint(shift)' 'https://example.com'

     use HTTP::Simple;

     my $content = get 'https://example.com';

     if (mirror('https://example.com', '/path/to/file.html') == 304) { ... }

     if (is_success(getprint 'https://example.com')) { ... }

     postform('https://example.com', {foo => ['bar', 'baz']});

     postjson('https://example.com', [{bar => 'baz'}]);

     postfile('https://example.com', '/path/to/file.png');

DESCRIPTION

   This module is a wrapper of HTTP::Tiny that provides simplified
   functions for performing HTTP requests in a similar manner to
   LWP::Simple, but with slightly more useful error handling. For full
   control of the request process and response handling, use HTTP::Tiny
   directly.

   IO::Socket::SSL is required for HTTPS requests with HTTP::Tiny.

   Request methods that return the body content of the response will
   return a byte string suitable for directly printing, but that may need
   to be decoded for text operations.

   The HTTP::Tiny object used by these functions to make requests can be
   accessed as $HTTP::Simple::UA (for example, to configure the timeout,
   or replace it with a compatible object like HTTP::Tinyish).

   The JSON encoder used by the JSON functions defaults to a JSON::PP
   instance, and can be accessed as $HTTP::Simple::JSON.

FUNCTIONS

   All functions are exported by default. Functions can also be requested
   individually or with the tags :request, :status, or :all.

get

     my $contents = get($url);

   Retrieves the document at the given URL with a GET request and returns
   it as a byte string. Throws an exception on connection or HTTP errors.

getjson

     my $data = getjson($url);

   Retrieves the JSON document at the given URL with a GET request and
   decodes it from JSON to a Perl structure. Throws an exception on
   connection, HTTP, or JSON errors.

head

     my $headers = head($url);

   Retrieves the headers at the given URL with a HEAD request and returns
   them as a hash reference. Header field names are normalized to lower
   case, and values may be an array reference if the header is repeated.
   Throws an exception on connection or HTTP errors.

getprint

     my $status = getprint($url);

   Retrieves the document at the given URL with a GET request and prints
   it as it is received. Returns the HTTP status code. Throws an exception
   on connection errors.

getstore

     my $status = getstore($url, $path);

   Retrieves the document at the given URL with a GET request and stores
   it to the given file path. Returns the HTTP status code. Throws an
   exception on connection or filesystem errors.

mirror

     my $status = mirror($url, $path);

   Retrieves the document at the given URL with a GET request and mirrors
   it to the given file path, using the If-Modified-Since headers to
   short-circuit if the file exists and is new enough, and the
   Last-Modified header to set its modification time. Returns the HTTP
   status code. Throws an exception on connection, HTTP, or filesystem
   errors.

postform

     my $contents = postform($url, $form);

   Sends a POST request to the given URL with the given hash or array
   reference of form data serialized to application/x-www-form-urlencoded.
   Returns the response body as a byte string. Throws an exception on
   connection or HTTP errors.

postjson

     my $contents = postjson($url, $data);

   Sends a POST request to the given URL with the given data structure
   encoded to JSON. Returns the response body as a byte string. Throws an
   exception on connection, HTTP, or JSON errors.

postfile

     my $contents = postfile($url, $path);
     my $contents = postfile($url, $path, $content_type);

   Sends a POST request to the given URL, streaming the contents of the
   given file. The content type is passed as application/octet-stream if
   not specified. Returns the response body as a byte string. Throws an
   exception on connection, HTTP, or filesystem errors.

is_info

     my $bool = is_info($status);

   Returns true if the status code indicates an informational response
   (1xx).

is_success

     my $bool = is_success($status);

   Returns true if the status code indicates a successful response (2xx).

is_redirect

     my $bool = is_redirect($status);

   Returns true if the status code indicates a redirection response (3xx).

is_error

     my $bool = is_error($status);

   Returns true if the status code indicates an error response (4xx or
   5xx).

is_client_error

     my $bool = is_client_error($status);

   Returns true if the status code indicates a client error response
   (4xx).

is_server_error

     my $bool = is_server_error($status);

   Returns true if the status code indicates a server error response
   (5xx).

BUGS

   Report any issues on the public bugtracker.

AUTHOR

   Dan Book <[email protected]>

COPYRIGHT AND LICENSE

   This software is Copyright (c) 2019 by Dan Book.

   This is free software, licensed under:

     The Artistic License 2.0 (GPL Compatible)

SEE ALSO

   LWP::Simple, HTTP::Tinyish, ojo