NAME

    HTTP::Tinyish - HTTP::Tiny compatible HTTP client wrappers

SYNOPSIS

      my $http = HTTP::Tinyish->new(agent => "Mozilla/4.0");
    
      my $res = $http->get("http://www.cpan.org/");
      warn $res->{status};
    
      $http->post("http://example.com/post", {
          headers => { "Content-Type" => "application/x-www-form-urlencoded" },
          content => "foo=bar&baz=quux",
      });
    
      $http->mirror("http://www.cpan.org/modules/02packages.details.txt.gz", "./02packages.details.txt.gz");

DESCRIPTION

    HTTP::Tinyish is a wrapper module for HTTP client modules LWP,
    HTTP::Tiny and HTTP client software curl and wget.

    It provides an API compatible to HTTP::Tiny, and the implementation has
    been extracted out of App::cpanminus. This module can be useful in a
    restrictive environment where you need to be able to download CPAN
    modules without an HTTPS support in built-in HTTP library.

BACKEND SELECTION

    Backends are searched in the order of: LWP, HTTP::Tiny, curl and wget.
    HTTP::Tinyish will auto-detect if the backend also supports HTTPS, and
    use the appropriate backend based on the given URL to the request
    methods.

    For example, if you only have HTTP::Tiny but without SSL related
    modules, it is possible that:

      my $http = HTTP::Tinyish->new;
    
      $http->get("http://example.com");  # uses HTTP::Tiny
      $http->get("https://example.com"); # uses curl

COMPATIBILITIES

    All request related methods such as get, post, put, delete, request,
    patch and mirror are supported.

 LWP

      * LWP backend requires LWP 5.802 or over to be functional, and
      LWP::Protocol::https to send HTTPS requests.

      * mirror method doesn't consider third options hash into account
      (i.e. you can't override the HTTP headers).

      * proxy is automatically detected from environment variables.

      * timeout, max_redirect, agent, default_headers and verify_SSL are
      translated.

 HTTP::Tiny

    Because the actual HTTP::Tiny backend is used, all APIs are supported.

 Curl

      * This module has been tested with curl 7.22 and later.

      * HTTPS support is automatically detected by running curl --version
      and see its protocol output.

      * timeout, max_redirect, agent, default_headers and verify_SSL are
      supported.

 Wget

      * This module requires Wget 1.12 and later.

      * Wget prior to 1.15 doesn't support sending custom HTTP methods, so
      if you use $http->put for example, you'll get an internal error
      response (599).

      * HTTPS support is automatically detected.

      * mirror() method doesn't send If-Modified-Since header to the
      server, which will result in full-download every time because wget
      doesn't support --timestamping combined with -O option.

      * timeout, max_redirect, agent, default_headers and verify_SSL are
      supported.

SIMILAR MODULES

      * File::Fetch - is core since 5.10. Has support for non-HTTP
      protocols such as ftp and git. Does not support HTTPS or basic
      authentication as of this writing.

      * Plient - provides more complete runtime API, but seems only
      compatible on Unix environments. Does not support mirror() method.

AUTHOR

    Tatsuhiko Miyagawa

COPYRIGHT

    Tatsuhiko Miyagawa, 2015-

LICENSE

    This module is licensed under the same terms as Perl itself.