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

Reply via email to