App-Chart

 view release on metacpan or  search on metacpan

misc/t-http.pl  view on Meta::CPAN

#!/usr/bin/perl -w

# Copyright 2008, 2016, 2024 Kevin Ryde

# This file is part of Chart.
#
# Chart is free software; you can redistribute it and/or modify it under the
# terms of the GNU General Public License as published by the Free Software
# Foundation; either version 3, or (at your option) any later version.
#
# Chart is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with Chart.  If not, see <http://www.gnu.org/licenses/>.

use strict;
use warnings;
use File::Slurp;
use HTTP::Message;

# uncomment this to run the ### lines
use Smart::Comments;

{
  require LWP::Protocol::http;
  my $socket_class = LWP::Protocol::http->socket_class;
  ### $socket_class
  # LWP::Protocol::http::Socket
  # subclass of Net::HTTP

  # Net::HTTP::Methods
  # $max_line_length = 32*1024 unless defined $max_line_length;
  # now 8*1024

  # cf  https://github.com/Qarj/WebImblaze/raw/master/wi.pl
  # push @LWP::Protocol::http::EXTRA_SOCK_OPTS, MaxLineLength => 0; # to prevent: Header line too long (limit is 8192)

  exit 0;
}

my $file = File::Slurp::slurp ('foo.gz');
print length($file),"\n";
my $chunk = substr ($file, 0, length($file)/2);

my $resp = HTTP::Message->new;
$resp->add_content($chunk);
$resp->push_header('Content-Encoding' => 'gzip');
print $resp->headers->as_string;

my $image = $resp->decoded_content(charset=>'none');
print length ($image);



( run in 0.614 second using v1.01-cache-2.11-cpan-39bf76dae61 )