HTTP::Tinyish − HTTP::Tiny compatible HTTP client wrappers
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");
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.
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
All request related methods such as "get", "post", "put", "delete", "request", "patch" and "mirror" are supported.
|
• |
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. |
Because the actual HTTP::Tiny backend is used, all APIs are supported.
|
• |
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. |
|
• |
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. |
|
• |
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. |
Tatsuhiko Miyagawa
Tatsuhiko Miyagawa, 2015−
This module is licensed under the same terms as Perl itself.