in reply to Re: url issues using HTTP::Tiny
in thread url issues using HTTP::Tiny

Thanks this is the info that I was after. I am however a bit confused since I thought that HTTP::Tiny is part of the core perl distribution. I'm using 5.14.2 . So it ships without all the dependant modules ?

Replies are listed 'Best First'.
Re^3: url issues using HTTP::Tiny
by Corion (Patriarch) on Sep 18, 2019 at 14:59 UTC

    https support is not in the Perl core.

Re^3: url issues using HTTP::Tiny
by Anonymous Monk on Sep 18, 2019 at 19:15 UTC
    Don't worry! HTTP::Tiny will rot bits as webmasters implement HTTPS Everywhere! except for the backlash of hip retro unencrypted sites! Then one day HTTP::Tiny, after years of recommendations followed by years of disillusionment [YOU ARE HERE] followed by years of disparagement, will be unceremoniously deprecated and REMOVED FROM THE PERL CORE!

    If it could happen to CGI, it will probably happen to HTTP::Tiny 🔋🗑

    UNLESS someone rescues HTTP::Tiny to evolve some sort of fallback functionality along the lines of HTTP::Any like this silly core one-liner, when fed an https url on an https-less perl, will fail and fallback on a random selection of wget or curl (or, like, all known https clients on every operating system?):

    perl -MIPC::Cmd=can_run,run -MHTTP::Tiny -le'@c=({wget=>"wget -O-"},{c +url=>"curl"});$u=shift;$r=HTTP::Tiny->new->get($u);if($r->{status}==5 +99){($a,$b)=%{$c[rand@c]};if(my $cmd=can_run($a)){if(scalar run(comma +nd=>"$b $u",buffer=>\my $data)){print"$data\n$cmd"}}}else{print"$r->{ +content}\ntiny"}' "https://www.perlmonks.org"
    perl -MIPC::Cmd=can_run,run -MHTTP::Tiny -le' @c=({wget=>"wget -O-"},{curl=>"curl"}); $u=shift; $r=HTTP::Tiny->new->get($u); if($r->{status}==599){ ($a,$b)=%{$c[rand@c]}; if(my $cmd=can_run($a)){ if(scalar run(command=>"$b $u",buffer=>\my $data){ print"$data\n$cmd" } } } else{print"$r->{content}\ntiny"}' "https://www.perlmonks.org"
    Let's fix it!

      The reason that HTTP::Tiny is in core is as a fallback for CPAN to use when wget or curl don't work. So there is no need to "fix" this.

        Caveat: so long as CPAN never needs to access an https URL.

        The core module File::Fetch solves the problem by trying LWP, HTTP::Tiny, wget, curl, lftp, fetch, HTTP::Lite, lynx & iosock:
        perl -MHTTP::Tiny -le'print HTTP::Tiny->new->get("https://perlmonks.or +g/")->{content}'
        IO::Socket::SSL 1.42 must be installed for https support
        Net::SSLeay 1.49 must be installed for https support
        
        perl -MFile::Fetch -le'$f=File::Fetch->new(uri=>"https://perlmonks.org +/")->fetch(to=>\my$data)or die$f->error;print$data'
        Success!