Hello community, here is the log from the commit of package perl-HTTP-Tiny for openSUSE:Factory checked in at 2015-05-22 09:52:37 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/perl-HTTP-Tiny (Old) and /work/SRC/openSUSE:Factory/.perl-HTTP-Tiny.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "perl-HTTP-Tiny" Changes: -------- --- /work/SRC/openSUSE:Factory/perl-HTTP-Tiny/perl-HTTP-Tiny.changes 2015-04-15 16:25:43.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.perl-HTTP-Tiny.new/perl-HTTP-Tiny.changes 2015-05-22 09:52:37.000000000 +0200 @@ -1,0 +2,28 @@ +Wed May 20 08:22:41 UTC 2015 - co...@suse.com + +- updated to 0.056 + see /usr/share/doc/packages/perl-HTTP-Tiny/Changes + + 0.056 2015-05-19 06:00:40-04:00 America/New_York + + - No changes from 0.055 + + 0.055 2015-05-07 18:13:41-04:00 America/New_York (TRIAL RELEASE) + + [ADDED] + + - Added 'can_ssl' method to detect SSL support before trying and + failing with a fatal exception. + + - Added support for 308 redirects + + [FIXED] + + - When specifying a custom CA file, if that file is missing or + unreadable, HTTP::Tiny will no longer fall back to a default CA + + [DOCUMENTED] + + - Noted units are bytes for max_size + +------------------------------------------------------------------- Old: ---- HTTP-Tiny-0.054.tar.gz New: ---- HTTP-Tiny-0.056.tar.gz cpanspec.yml ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ perl-HTTP-Tiny.spec ++++++ --- /var/tmp/diff_new_pack.u5YcBE/_old 2015-05-22 09:52:38.000000000 +0200 +++ /var/tmp/diff_new_pack.u5YcBE/_new 2015-05-22 09:52:38.000000000 +0200 @@ -17,14 +17,15 @@ Name: perl-HTTP-Tiny -Version: 0.054 +Version: 0.056 Release: 0 %define cpan_name HTTP-Tiny -Summary: A small, simple, correct HTTP/1.1 client +Summary: Small, Simple, Correct Http/1.1 Client License: Artistic-1.0 or GPL-1.0+ Group: Development/Libraries/Perl Url: http://search.cpan.org/dist/HTTP-Tiny/ -Source: http://www.cpan.org/authors/id/D/DA/DAGOLDEN/%{cpan_name}-%{version}.tar.gz +Source0: http://www.cpan.org/authors/id/D/DA/DAGOLDEN/%{cpan_name}-%{version}.tar.gz +Source1: cpanspec.yml BuildArch: noarch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: perl @@ -53,6 +54,7 @@ %prep %setup -q -n %{cpan_name}-%{version} +find . -type f -print0 | xargs -0 chmod 644 %build %{__perl} Makefile.PL INSTALLDIRS=vendor ++++++ HTTP-Tiny-0.054.tar.gz -> HTTP-Tiny-0.056.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/Changes new/HTTP-Tiny-0.056/Changes --- old/HTTP-Tiny-0.054/Changes 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/Changes 2015-05-19 12:00:48.000000000 +0200 @@ -1,5 +1,27 @@ Release notes for HTTP-Tiny +0.056 2015-05-19 06:00:40-04:00 America/New_York + + - No changes from 0.055 + +0.055 2015-05-07 18:13:41-04:00 America/New_York (TRIAL RELEASE) + + [ADDED] + + - Added 'can_ssl' method to detect SSL support before trying and + failing with a fatal exception. + + - Added support for 308 redirects + + [FIXED] + + - When specifying a custom CA file, if that file is missing or + unreadable, HTTP::Tiny will no longer fall back to a default CA + + [DOCUMENTED] + + - Noted units are bytes for max_size + 0.054 2015-01-27 07:18:19-05:00 America/New_York [ADDED] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/MANIFEST new/HTTP-Tiny-0.056/MANIFEST --- old/HTTP-Tiny-0.054/MANIFEST 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/MANIFEST 2015-05-19 12:00:48.000000000 +0200 @@ -1,4 +1,4 @@ -# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.031. +# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.036. CONTRIBUTING.mkdn Changes LICENSE @@ -73,6 +73,7 @@ corpus/redirect-07.txt corpus/redirect-08.txt corpus/redirect-09.txt +corpus/redirect-10.txt cpanfile dist.ini eg/get.pl diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/META.json new/HTTP-Tiny-0.056/META.json --- old/HTTP-Tiny-0.054/META.json 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/META.json 2015-05-19 12:00:48.000000000 +0200 @@ -5,7 +5,7 @@ "David Golden <dagol...@cpan.org>" ], "dynamic_config" : 0, - "generated_by" : "Dist::Zilla version 5.031, CPAN::Meta::Converter version 2.143240", + "generated_by" : "Dist::Zilla version 5.036, CPAN::Meta::Converter version 2.150002", "license" : [ "perl_5" ], @@ -42,6 +42,7 @@ "File::Temp" : "0", "IO::Handle" : "0", "IPC::Open3" : "0", + "Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire" : "0", "Pod::Coverage::TrustPod" : "0", "Test::CPAN::Meta" : "0", "Test::More" : "0", @@ -98,7 +99,7 @@ "provides" : { "HTTP::Tiny" : { "file" : "lib/HTTP/Tiny.pm", - "version" : "0.054" + "version" : "0.056" } }, "release_status" : "stable", @@ -113,7 +114,7 @@ "web" : "https://github.com/chansen/p5-http-tiny" } }, - "version" : "0.054", + "version" : "0.056", "x_authority" : "cpan:DAGOLDEN", "x_contributors" : [ "Alan Gardner <gard...@pythian.com>", @@ -123,21 +124,21 @@ "Chris Weyl <cw...@alumni.drew.edu>", "Claes Jakobsson <cl...@surfar.nu>", "Clinton Gormley <cl...@traveljury.com>", - "Craig Berry <cbe...@cpan.org>", - "David Mitchell <da...@iabyn.com>", "Dean Pearce <pea...@pythian.com>", "Edward Zborowski <e...@rubensteintech.com>", "James Raspass <jrasp...@gmail.com>", + "Jeremy Mates <jma...@cpan.org>", "Jess Robinson <casta...@desert-island.me.uk>", "Lukas Eklund <lekl...@gmail.com>", "Martin J. Evans <mj...@ntlworld.com>", "Martin-Louis Bright <mlbri...@gmail.com>", "Mike Doherty <dohe...@cpan.org>", "Olaf Alders <o...@wundersolutions.com>", + "Olivier Mengué <dol...@cpan.org>", "Petr Písař <ppi...@redhat.com>", - "Serguei Trouchelle <s...@cpan.org>", "Sören Kornetzki <soeren.kornet...@delti.com>", "Syohei YOSHIDA <syo...@gmail.com>", + "Tatsuhiko Miyagawa <miyag...@bulknews.net>", "Tom Hukins <t...@eborcom.com>", "Tony Cook <t...@develop-help.com>" ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/META.yml new/HTTP-Tiny-0.056/META.yml --- old/HTTP-Tiny-0.054/META.yml 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/META.yml 2015-05-19 12:00:48.000000000 +0200 @@ -21,7 +21,7 @@ ExtUtils::MakeMaker: '6.17' perl: '5.006' dynamic_config: 0 -generated_by: 'Dist::Zilla version 5.031, CPAN::Meta::Converter version 2.143240' +generated_by: 'Dist::Zilla version 5.036, CPAN::Meta::Converter version 2.150002' license: perl meta-spec: url: http://module-build.sourceforge.net/META-spec-v1.4.html @@ -38,7 +38,7 @@ provides: HTTP::Tiny: file: lib/HTTP/Tiny.pm - version: '0.054' + version: '0.056' recommends: HTTP::CookieJar: '0.001' IO::Socket::IP: '0.25' @@ -59,7 +59,7 @@ bugtracker: https://github.com/chansen/p5-http-tiny/issues homepage: https://github.com/chansen/p5-http-tiny repository: https://github.com/chansen/p5-http-tiny.git -version: '0.054' +version: '0.056' x_authority: cpan:DAGOLDEN x_contributors: - 'Alan Gardner <gard...@pythian.com>' @@ -69,20 +69,20 @@ - 'Chris Weyl <cw...@alumni.drew.edu>' - 'Claes Jakobsson <cl...@surfar.nu>' - 'Clinton Gormley <cl...@traveljury.com>' - - 'Craig Berry <cbe...@cpan.org>' - - 'David Mitchell <da...@iabyn.com>' - 'Dean Pearce <pea...@pythian.com>' - 'Edward Zborowski <e...@rubensteintech.com>' - 'James Raspass <jrasp...@gmail.com>' + - 'Jeremy Mates <jma...@cpan.org>' - 'Jess Robinson <casta...@desert-island.me.uk>' - 'Lukas Eklund <lekl...@gmail.com>' - 'Martin J. Evans <mj...@ntlworld.com>' - 'Martin-Louis Bright <mlbri...@gmail.com>' - 'Mike Doherty <dohe...@cpan.org>' - 'Olaf Alders <o...@wundersolutions.com>' + - 'Olivier Mengué <dol...@cpan.org>' - 'Petr Písař <ppi...@redhat.com>' - - 'Serguei Trouchelle <s...@cpan.org>' - 'Sören Kornetzki <soeren.kornet...@delti.com>' - 'Syohei YOSHIDA <syo...@gmail.com>' + - 'Tatsuhiko Miyagawa <miyag...@bulknews.net>' - 'Tom Hukins <t...@eborcom.com>' - 'Tony Cook <t...@develop-help.com>' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/Makefile.PL new/HTTP-Tiny-0.056/Makefile.PL --- old/HTTP-Tiny-0.054/Makefile.PL 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/Makefile.PL 2015-05-19 12:00:48.000000000 +0200 @@ -1,5 +1,4 @@ - -# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.031. +# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.036. use strict; use warnings; @@ -7,8 +6,6 @@ use ExtUtils::MakeMaker 6.17; - - my %WriteMakefileArgs = ( "ABSTRACT" => "A small, simple, correct HTTP/1.1 client", "AUTHOR" => "Christian Hansen <chansen\@cpan.org>, David Golden <dagolden\@cpan.org>", @@ -44,7 +41,7 @@ "Test::More" => "0.96", "open" => 0 }, - "VERSION" => "0.054", + "VERSION" => "0.056", "test" => { "TESTS" => "t/*.t" } @@ -85,6 +82,3 @@ unless eval { ExtUtils::MakeMaker->VERSION(6.52) }; WriteMakefile(%WriteMakefileArgs); - - - diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/README new/HTTP-Tiny-0.056/README --- old/HTTP-Tiny-0.054/README 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/README 2015-05-19 12:00:48.000000000 +0200 @@ -2,7 +2,7 @@ HTTP::Tiny - A small, simple, correct HTTP/1.1 client VERSION - version 0.054 + version 0.056 SYNOPSIS use HTTP::Tiny; @@ -58,9 +58,9 @@ * "max_redirect" — Maximum number of redirects allowed (defaults to 5) - * "max_size" — Maximum response size (only when not using a data - callback). If defined, responses larger than this will return an - exception. + * "max_size" — Maximum response size in bytes (only when not using a + data callback). If defined, responses larger than this will return + an exception. * "http_proxy" — URL of a proxy server to use for HTTP connections (default is $ENV{http_proxy} — if set) @@ -250,14 +250,32 @@ reference, the key/value pairs in the resulting string will be sorted by key and value for consistent ordering. + can_ssl + $ok = HTTP::Tiny->can_ssl; + ($ok, $why) = HTTP::Tiny->can_ssl; + ($ok, $why) = $http->can_ssl; + + Indicates if SSL support is available. When called as a class object, it + checks for the correct version of Net::SSLeay and IO::Socket::SSL. When + called as an object methods, if "SSL_verify" is true or if + "SSL_verify_mode" is set in "SSL_options", it checks that a CA file is + available. + + In scalar context, returns a boolean indicating if SSL is available. In + list context, returns the boolean and a (possibly multi-line) string of + errors indicating why SSL isn't available. + SSL SUPPORT Direct "https" connections are supported only if IO::Socket::SSL 1.56 or greater and Net::SSLeay 1.49 or greater are installed. An exception will be thrown if new enough versions of these modules are not installed or - if the SSL encryption fails. An "https" connection may be made via an - "http" proxy that supports the CONNECT command (i.e. RFC 2817). You may - not proxy "https" via a proxy that itself requires "https" to - communicate. + if the SSL encryption fails. You can also use "HTTP::Tiny::can_ssl()" + utility function that returns boolean to see if the required modules are + installed. + + An "https" connection may be made via an "http" proxy that supports the + CONNECT command (i.e. RFC 2817). You may not proxy "https" via a proxy + that itself requires "https" to communicate. SSL provides two distinct capabilities: @@ -382,10 +400,11 @@ to ASCII. See URI::Escape, URI::_punycode and Net::IDN::Encode. * Redirection is very strict against the specification. Redirection is - only automatic for response codes 301, 302 and 307 if the request - method is 'GET' or 'HEAD'. Response code 303 is always converted - into a 'GET' redirection, as mandated by the specification. There is - no automatic support for status 305 ("Use proxy") redirections. + only automatic for response codes 301, 302, 307 and 308 if the + request method is 'GET' or 'HEAD'. Response code 303 is always + converted into a 'GET' redirection, as mandated by the + specification. There is no automatic support for status 305 ("Use + proxy") redirections. * There is no provision for delaying a request body using an "Expect" header. Unexpected "1XX" responses are silently ignored as per the @@ -454,16 +473,14 @@ * Clinton Gormley <cl...@traveljury.com> - * Craig Berry <cbe...@cpan.org> - - * David Mitchell <da...@iabyn.com> - * Dean Pearce <pea...@pythian.com> * Edward Zborowski <e...@rubensteintech.com> * James Raspass <jrasp...@gmail.com> + * Jeremy Mates <jma...@cpan.org> + * Jess Robinson <casta...@desert-island.me.uk> * Lukas Eklund <lekl...@gmail.com> @@ -476,14 +493,16 @@ * Olaf Alders <o...@wundersolutions.com> - * Petr Písař <ppi...@redhat.com> + * Olivier Mengué <dol...@cpan.org> - * Serguei Trouchelle <s...@cpan.org> + * Petr Písař <ppi...@redhat.com> * Sören Kornetzki <soeren.kornet...@delti.com> * Syohei YOSHIDA <syo...@gmail.com> + * Tatsuhiko Miyagawa <miyag...@bulknews.net> + * Tom Hukins <t...@eborcom.com> * Tony Cook <t...@develop-help.com> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/corpus/redirect-10.txt new/HTTP-Tiny-0.056/corpus/redirect-10.txt --- old/HTTP-Tiny-0.054/corpus/redirect-10.txt 1970-01-01 01:00:00.000000000 +0100 +++ new/HTTP-Tiny-0.056/corpus/redirect-10.txt 2015-05-19 12:00:48.000000000 +0200 @@ -0,0 +1,35 @@ +url + http://example.com/index.html +expected + abcdefghijklmnopqrstuvwxyz1234567890abcdef +expected_url + http://example.com/index2.html +---------- +GET /index.html HTTP/1.1 +Host: example.com +Connection: close +User-Agent: HTTP-Tiny/VERSION + +---------- +HTTP/1.1 308 Permanent Redirect +Date: Thu, 03 Feb 1994 00:00:00 GMT +Content-Type: text/html +Content-Length: 53 +Location: http://example.com/index2.html + +<a href="http://example.com/index2.html">redirect</a> + +---------- +GET /index2.html HTTP/1.1 +Host: example.com +Connection: close +User-Agent: HTTP-Tiny/VERSION + +---------- +HTTP/1.1 200 OK +Date: Thu, 03 Feb 1994 00:00:00 GMT +Content-Type: text/plain +Content-Length: 42 + +abcdefghijklmnopqrstuvwxyz1234567890abcdef + diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/cpanfile new/HTTP-Tiny-0.056/cpanfile --- old/HTTP-Tiny-0.054/cpanfile 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/cpanfile 2015-05-19 12:00:48.000000000 +0200 @@ -48,6 +48,7 @@ requires "File::Temp" => "0"; requires "IO::Handle" => "0"; requires "IPC::Open3" => "0"; + requires "Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire" => "0"; requires "Pod::Coverage::TrustPod" => "0"; requires "Test::CPAN::Meta" => "0"; requires "Test::More" => "0"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/dist.ini new/HTTP-Tiny-0.056/dist.ini --- old/HTTP-Tiny-0.054/dist.ini 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/dist.ini 2015-05-19 12:00:48.000000000 +0200 @@ -29,3 +29,7 @@ [Prereqs / Suggests] IO::Socket::SSL = 1.56 + +[Prereqs / DevelopRequires] +; Non core Perl::Critic policy used in perlcritic.rc +Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/lib/HTTP/Tiny.pm new/HTTP-Tiny-0.056/lib/HTTP/Tiny.pm --- old/HTTP-Tiny-0.054/lib/HTTP/Tiny.pm 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/lib/HTTP/Tiny.pm 2015-05-19 12:00:48.000000000 +0200 @@ -4,7 +4,7 @@ use warnings; # ABSTRACT: A small, simple, correct HTTP/1.1 client -our $VERSION = '0.054'; +our $VERSION = '0.056'; use Carp (); @@ -28,7 +28,7 @@ #pod * C<max_redirect> — #pod Maximum number of redirects allowed (defaults to 5) #pod * C<max_size> — -#pod Maximum response size (only when not using a data callback). If defined, responses larger than this will return an exception. +#pod Maximum response size in bytes (only when not using a data callback). If defined, responses larger than this will return an exception. #pod * C<http_proxy> — #pod URL of a proxy server to use for HTTP connections (default is C<$ENV{http_proxy}> — if set) #pod * C<https_proxy> — @@ -462,6 +462,55 @@ return join("&", (ref $data eq 'ARRAY') ? (@terms) : (sort @terms) ); } +#pod =method can_ssl +#pod +#pod $ok = HTTP::Tiny->can_ssl; +#pod ($ok, $why) = HTTP::Tiny->can_ssl; +#pod ($ok, $why) = $http->can_ssl; +#pod +#pod Indicates if SSL support is available. When called as a class object, it +#pod checks for the correct version of L<Net::SSLeay> and L<IO::Socket::SSL>. +#pod When called as an object methods, if C<SSL_verify> is true or if C<SSL_verify_mode> +#pod is set in C<SSL_options>, it checks that a CA file is available. +#pod +#pod In scalar context, returns a boolean indicating if SSL is available. +#pod In list context, returns the boolean and a (possibly multi-line) string of +#pod errors indicating why SSL isn't available. +#pod +#pod =cut + +sub can_ssl { + my ($self) = @_; + + my($ok, $reason) = (1, ''); + + # Need IO::Socket::SSL 1.42 for SSL_create_ctx_callback + unless (eval {require IO::Socket::SSL; IO::Socket::SSL->VERSION(1.42)}) { + $ok = 0; + $reason .= qq/IO::Socket::SSL 1.42 must be installed for https support\n/; + } + + # Need Net::SSLeay 1.49 for MODE_AUTO_RETRY + unless (eval {require Net::SSLeay; Net::SSLeay->VERSION(1.49)}) { + $ok = 0; + $reason .= qq/Net::SSLeay 1.49 must be installed for https support\n/; + } + + # If an object, check that SSL config lets us get a CA if necessary + if ( ref($self) && ( $self->{verify_SSL} || $self->{SSL_options}{SSL_verify_mode} ) ) { + my $handle = HTTP::Tiny::Handle->new( + SSL_options => $self->{SSL_options}, + verify_SSL => $self->{verify_SSL}, + ); + unless ( eval { $handle->_find_CA_file; 1 } ) { + $ok = 0; + $reason .= "$@"; + } + } + + wantarray ? ($ok, $reason) : $ok; +} + #--------------------------------------------------------------------------# # private methods #--------------------------------------------------------------------------# @@ -766,7 +815,7 @@ my ($self, $request, $response, $args) = @_; my $headers = $response->{headers}; my ($status, $method) = ($response->{status}, $request->{method}); - if (($status eq '303' or ($status =~ /^30[127]/ && $method =~ /^GET|HEAD$/)) + if (($status eq '303' or ($status =~ /^30[1278]/ && $method =~ /^GET|HEAD$/)) and $headers->{location} and ++$args->{redirects} <= $self->{max_redirect} ) { @@ -1362,12 +1411,8 @@ } sub _assert_ssl { - # Need IO::Socket::SSL 1.42 for SSL_create_ctx_callback - die(qq/IO::Socket::SSL 1.42 must be installed for https support\n/) - unless eval {require IO::Socket::SSL; IO::Socket::SSL->VERSION(1.42)}; - # Need Net::SSLeay 1.49 for MODE_AUTO_RETRY - die(qq/Net::SSLeay 1.49 must be installed for https support\n/) - unless eval {require Net::SSLeay; Net::SSLeay->VERSION(1.49)}; + my($ok, $reason) = HTTP::Tiny->can_ssl(); + die $reason unless $ok; } sub can_reuse { @@ -1389,11 +1434,15 @@ sub _find_CA_file { my $self = shift(); - return $self->{SSL_options}->{SSL_ca_file} - if $self->{SSL_options}->{SSL_ca_file} and -e $self->{SSL_options}->{SSL_ca_file}; + if ( $self->{SSL_options}->{SSL_ca_file} ) { + unless ( -r $self->{SSL_options}->{SSL_ca_file} ) { + die qq/SSL_ca_file '$self->{SSL_options}->{SSL_ca_file}' not found or not readable\n/; + } + return $self->{SSL_options}->{SSL_ca_file}; + } return Mozilla::CA::SSL_ca_file() - if eval { require Mozilla::CA }; + if eval { require Mozilla::CA; 1 }; # cert list copied from golang src/crypto/x509/root_unix.go foreach my $ca_bundle ( @@ -1463,7 +1512,7 @@ =head1 VERSION -version 0.054 +version 0.056 =head1 SYNOPSIS @@ -1532,7 +1581,7 @@ =item * -C<max_size> — Maximum response size (only when not using a data callback). If defined, responses larger than this will return an exception. +C<max_size> — Maximum response size in bytes (only when not using a data callback). If defined, responses larger than this will return an exception. =item * @@ -1738,6 +1787,21 @@ reference. If data is provided as a hash reference, the key/value pairs in the resulting string will be sorted by key and value for consistent ordering. +=head2 can_ssl + + $ok = HTTP::Tiny->can_ssl; + ($ok, $why) = HTTP::Tiny->can_ssl; + ($ok, $why) = $http->can_ssl; + +Indicates if SSL support is available. When called as a class object, it +checks for the correct version of L<Net::SSLeay> and L<IO::Socket::SSL>. +When called as an object methods, if C<SSL_verify> is true or if C<SSL_verify_mode> +is set in C<SSL_options>, it checks that a CA file is available. + +In scalar context, returns a boolean indicating if SSL is available. +In list context, returns the boolean and a (possibly multi-line) string of +errors indicating why SSL isn't available. + =for Pod::Coverage SSL_options agent cookie_jar @@ -1758,9 +1822,12 @@ Direct C<https> connections are supported only if L<IO::Socket::SSL> 1.56 or greater and L<Net::SSLeay> 1.49 or greater are installed. An exception will be thrown if new enough versions of these modules are not installed or if the SSL -encryption fails. An C<https> connection may be made via an C<http> proxy that -supports the CONNECT command (i.e. RFC 2817). You may not proxy C<https> via -a proxy that itself requires C<https> to communicate. +encryption fails. You can also use C<HTTP::Tiny::can_ssl()> utility function +that returns boolean to see if the required modules are installed. + +An C<https> connection may be made via an C<http> proxy that supports the CONNECT +command (i.e. RFC 2817). You may not proxy C<https> via a proxy that itself +requires C<https> to communicate. SSL provides two distinct capabilities: @@ -1936,10 +2003,10 @@ =item * Redirection is very strict against the specification. Redirection is only -automatic for response codes 301, 302 and 307 if the request method is 'GET' or -'HEAD'. Response code 303 is always converted into a 'GET' redirection, as -mandated by the specification. There is no automatic support for status 305 -("Use proxy") redirections. +automatic for response codes 301, 302, 307 and 308 if the request method is +'GET' or 'HEAD'. Response code 303 is always converted into a 'GET' +redirection, as mandated by the specification. There is no automatic support +for status 305 ("Use proxy") redirections. =item * @@ -2033,7 +2100,7 @@ =head1 CONTRIBUTORS -=for stopwords Alan Gardner Alessandro Ghedini Brad Gilbert Chris Nehren Weyl Claes Jakobsson Clinton Gormley Craig Berry David Mitchell Dean Pearce Edward Zborowski James Raspass Jess Robinson Lukas Eklund Martin J. Evans Martin-Louis Bright Mike Doherty Olaf Alders Petr Písař Serguei Trouchelle Sören Kornetzki Syohei YOSHIDA Tom Hukins Tony Cook +=for stopwords Alan Gardner Alessandro Ghedini Brad Gilbert Chris Nehren Weyl Claes Jakobsson Clinton Gormley Dean Pearce Edward Zborowski James Raspass Jeremy Mates Jess Robinson Lukas Eklund Martin J. Evans Martin-Louis Bright Mike Doherty Olaf Alders Olivier Mengué Petr Písař Sören Kornetzki Syohei YOSHIDA Tatsuhiko Miyagawa Tom Hukins Tony Cook =over 4 @@ -2067,14 +2134,6 @@ =item * -Craig Berry <cbe...@cpan.org> - -=item * - -David Mitchell <da...@iabyn.com> - -=item * - Dean Pearce <pea...@pythian.com> =item * @@ -2087,6 +2146,10 @@ =item * +Jeremy Mates <jma...@cpan.org> + +=item * + Jess Robinson <casta...@desert-island.me.uk> =item * @@ -2111,11 +2174,11 @@ =item * -Petr Písař <ppi...@redhat.com> +Olivier Mengué <dol...@cpan.org> =item * -Serguei Trouchelle <s...@cpan.org> +Petr Písař <ppi...@redhat.com> =item * @@ -2127,6 +2190,10 @@ =item * +Tatsuhiko Miyagawa <miyag...@bulknews.net> + +=item * + Tom Hukins <t...@eborcom.com> =item * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/t/00-report-prereqs.dd new/HTTP-Tiny-0.056/t/00-report-prereqs.dd --- old/HTTP-Tiny-0.054/t/00-report-prereqs.dd 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/t/00-report-prereqs.dd 2015-05-19 12:00:48.000000000 +0200 @@ -15,6 +15,7 @@ 'File::Temp' => '0', 'IO::Handle' => '0', 'IPC::Open3' => '0', + 'Perl::Critic::Policy::Lax::ProhibitStringyEval::ExceptForRequire' => '0', 'Pod::Coverage::TrustPod' => '0', 'Test::CPAN::Meta' => '0', 'Test::More' => '0', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/t/00-report-prereqs.t new/HTTP-Tiny-0.056/t/00-report-prereqs.t --- old/HTTP-Tiny-0.054/t/00-report-prereqs.t 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/t/00-report-prereqs.t 2015-05-19 12:00:48.000000000 +0200 @@ -3,7 +3,7 @@ use strict; use warnings; -# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.019 +# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.021 use Test::More tests => 1; @@ -150,9 +150,16 @@ my $ml = _max( map { length $_->[0] } @reports ); my $wl = _max( map { length $_->[1] } @reports ); my $hl = _max( map { length $_->[2] } @reports ); - splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; - push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; + if ($type eq 'modules') { + splice @reports, 1, 0, ["-" x $ml, "", "-" x $hl]; + push @full_reports, map { sprintf(" %*s %*s\n", -$ml, $_->[0], $hl, $_->[2]) } @reports; + } + else { + splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl]; + push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports; + } + push @full_reports, "\n"; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/t/001_api.t new/HTTP-Tiny-0.056/t/001_api.t --- old/HTTP-Tiny-0.054/t/001_api.t 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/t/001_api.t 2015-05-19 12:00:48.000000000 +0200 @@ -11,7 +11,7 @@ max_redirect max_size proxy no_proxy timeout SSL_options verify_SSL cookie_jar ); my @methods = qw( - new get head put post delete post_form request mirror www_form_urlencode + new get head put post delete post_form request mirror www_form_urlencode can_ssl ); my %api; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/t/210_live_ssl.t new/HTTP-Tiny-0.056/t/210_live_ssl.t --- old/HTTP-Tiny-0.054/t/210_live_ssl.t 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/t/210_live_ssl.t 2015-05-19 12:00:48.000000000 +0200 @@ -53,7 +53,21 @@ default_should_yield => '', } }; -plan tests => scalar keys %$data; +plan tests => 1+ scalar keys %$data; + +subtest "can_ssl" => sub { + ok( HTTP::Tiny->can_ssl, "class method" ); + ok( HTTP::Tiny->new->can_ssl, "object method, default params" ); + ok( HTTP::Tiny->new(verify_SSL => 1)->can_ssl, "object method, verify_SSL" ); + + my $ht = HTTP::Tiny->new( + verify_SSL => 1, + SSL_options => { SSL_ca_file => 'adlfadkfadlfad' }, + ); + my ($ok, $why) = $ht->can_ssl; + ok( ! $ok, "object methods, verify_SSL, bogus CA file (FAILS)" ); + like( $why, qr/not found or not readable/, "failure reason" ); +}; while (my ($url, $data) = each %$data) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/xt/author/00-compile.t new/HTTP-Tiny-0.056/xt/author/00-compile.t --- old/HTTP-Tiny-0.054/xt/author/00-compile.t 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/xt/author/00-compile.t 2015-05-19 12:00:48.000000000 +0200 @@ -2,11 +2,11 @@ use strict; use warnings; -# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.051 +# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.052 use Test::More; -plan tests => 1 + ($ENV{AUTHOR_TESTING} ? 1 : 0); +plan tests => 2; my @module_files = ( 'HTTP/Tiny.pm' @@ -49,6 +49,6 @@ is(scalar(@warnings), 0, 'no warnings found') - or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING}; + or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/xt/author/pod-spell.t new/HTTP-Tiny-0.056/xt/author/pod-spell.t --- old/HTTP-Tiny-0.054/xt/author/pod-spell.t 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/xt/author/pod-spell.t 2015-05-19 12:00:48.000000000 +0200 @@ -2,7 +2,7 @@ use warnings; use Test::More; -# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006008 +# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006009 use Test::Spelling 0.12; use Pod::Wordlist; @@ -40,11 +40,6 @@ Clinton Gormley clint -Craig -Berry -cberry -Mitchell -davem Dean Pearce pearce @@ -54,6 +49,9 @@ James Raspass jraspass +Jeremy +Mates +jmates Jess Robinson castaway @@ -71,18 +69,21 @@ Olaf Alders olaf +Olivier +Mengué +dolmen Petr Písař ppisar -Serguei -Trouchelle -stro Sören Kornetzki soeren Syohei YOSHIDA syohex +Tatsuhiko +Miyagawa +miyagawa Tom Hukins tom diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/HTTP-Tiny-0.054/xt/release/test-version.t new/HTTP-Tiny-0.056/xt/release/test-version.t --- old/HTTP-Tiny-0.054/xt/release/test-version.t 2015-01-27 13:18:29.000000000 +0100 +++ new/HTTP-Tiny-0.056/xt/release/test-version.t 2015-05-19 12:00:48.000000000 +0200 @@ -2,14 +2,15 @@ use warnings; use Test::More; -# generated by Dist::Zilla::Plugin::Test::Version 0.003001 +# generated by Dist::Zilla::Plugin::Test::Version 1.02 use Test::Version; -my @imports = ( 'version_all_ok' ); +my @imports = qw( version_all_ok ); my $params = { - is_strict => 0, - has_version => 1, + is_strict => 0, + has_version => 1, + }; push @imports, $params ++++++ cpanspec.yml ++++++ --- #description_paragraphs: 3 #no_testing: broken upstream #sources: # - source1 # - source2 #patches: # foo.patch: -p1 # bar.patch: #preamble: |- # BuildRequires: gcc-c++ #post_prep: |- # hunspell=`pkg-config --libs hunspell | sed -e 's,-l,,; s, *,,g'` # sed -i -e "s,hunspell-X,$hunspell," t/00-prereq.t Makefile.PL #post_install: |- # sed on %{name}.files #license: SUSE-NonFree #skip_noarch: 1 #custom_build: |- #./Build build flags=%{?_smp_mflags} --myflag #custom_test: |- #startserver && make test #ignore_requires: Bizarre::Module