HTTP-MultiGet

 view release on metacpan or  search on metacpan

META.json  view on Meta::CPAN

            "Data::Result" : "1.0001",
            "Exporter" : "5.72",
            "HTTP::Headers" : "6.13",
            "HTTP::Request" : "6.13",
            "HTTP::Response" : "6.13",
            "IO::Scalar" : "2.111",
            "JSON" : "2.94",
            "Log::Dispatch::Handle" : "2.65",
            "Log::Log4perl" : "1.49",
            "Log::LogMethods" : "1.0001",
            "Modern::Perl" : "1.20170117",
            "Moo" : "2.003002",
            "MooX::Types::MooseLike::Base" : "0.29",
            "Ref::Util" : "0.203",
            "Scalar::Util" : "1.48",
            "Test::More" : "1.302073",
            "Time::HiRes" : "1.9741",
            "namespace::clean" : "0.27",
            "overload" : "1.28"
         }
      }

META.yml  view on Meta::CPAN

  Data::Result: '1.0001'
  Exporter: '5.72'
  HTTP::Headers: '6.13'
  HTTP::Request: '6.13'
  HTTP::Response: '6.13'
  IO::Scalar: '2.111'
  JSON: '2.94'
  Log::Dispatch::Handle: '2.65'
  Log::Log4perl: '1.49'
  Log::LogMethods: '1.0001'
  Modern::Perl: '1.20170117'
  Moo: '2.003002'
  MooX::Types::MooseLike::Base: '0.29'
  Ref::Util: '0.203'
  Scalar::Util: '1.48'
  Test::More: '1.302073'
  Time::HiRes: '1.9741'
  namespace::clean: '0.27'
  overload: '1.28'
version: '1.023'
x_serialization_backend: 'CPAN::Meta::YAML version 0.018'

Makefile.PL  view on Meta::CPAN

use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
    NAME              => 'HTTP::MultiGet',
    VERSION_FROM      => 'lib/HTTP/MultiGet.pm', # finds $VERSION
    PREREQ_PM         => {
    qw(
      Moo  2.003002
      overload 1.28
      Modern::Perl 1.20170117
      MooX::Types::MooseLike::Base 0.29
      Carp 1.42
      namespace::clean 0.27
      Data::Dumper  2.167
      Test::More    1.302073
      Data::Result  1.0
      Log::Log4perl 1.49
      Time::HiRes   1.9741
      B             1.68
      Scalar::Util  1.48

lib/AnyEvent/HTTP/MultiGet.pm  view on Meta::CPAN

package AnyEvent::HTTP::MultiGet;

use Modern::Perl;
use Moo;
use MooX::Types::MooseLike::Base qw(:all);
use Data::Dumper;
use Ref::Util qw(is_plain_arrayref);
use namespace::clean;
Log::Log4perl->wrapper_register(__PACKAGE__);

BEGIN {
  extends 'HTTP::MultiGet';
}

our $VERSION=$HTTP::MultiGet::VERSION;

=head1 NAME

AnyEvent::HTTP::MultiGet - AnyEvent->condvar Control Freindly LWP Like agent

=head1 SYNOPSIS

  use Modern::Perl;
  use AnyEvent::HTTP::MultiGet;

  my $self=AnyEvent::HTTP::MultiGet->new();
  my $count=0;
  TEST_LOOP: {
    my $req=HTTP::Request->new(GET=>'http://google.com');
    my $req_b=HTTP::Request->new(GET=>'https://127.0.0.1:5888');
    my @todo=HTTP::Request->new(GET=>'http://yahoo.com');
    push @todo,HTTP::Request->new(GET=>'http://news.com');
    push @todo,HTTP::Request->new(GET=>'https://news.com');

lib/AnyEvent/HTTP/MultiGet.pm  view on Meta::CPAN

      $cv->send if $total==$count;
    };
    $self->add_cb($req,$code);
    $self->add_cb($req_b,$code);
    $self->run_next;
    $cv->recv;
  }

Handling Multiple large http requests at once

  use Modern::Perl;
  use AnyEvent::HTTP::MultiGet;

  my $self=AnyEvent::HTTP::MultiGet->new();
  my $chunks=0;
  my $count=0;


  my $req=HTTP::Request->new(GET=>'https://google.com');
  my $req_b=HTTP::Request->new(GET=>'https://yahoo.com');
  my $req_c=HTTP::Request->new(GET=>'https://news.com');

lib/HTTP/MultiGet.pm  view on Meta::CPAN

package HTTP::MultiGet;

=head1 NAME

HTTP::MultiGet - Run many http requests at once! 

=head1 SYNOPSIS

  use Modern::Perl;
  use HTTP::MultiGet;
  use HTTP::Request;

  my $getter=new HTTP::MultiGet;

  my @requests=(map { HTTP::Request->new(GET=>"http://localhost$_") } (1 .. 1000));
  my @responses=$getter->run_requests(@requests);

  my $id=0;
  foreach my $response (@responses) {

lib/HTTP/MultiGet.pm  view on Meta::CPAN

    if($response->is_success) {
      print $response->decoded_content;
    } else {
      print $response->status_line,"\n";
    }
  }


=head2 Handling Multiple Large Downloads

  use Modern::Perl;
  use HTTP::MultiGet;
  use HTTP::Request;

  my $req=HTTP::Request->new(GET=>'http://some.realy.big/file/to/download.gz');
  my $req_b=HTTP::Request->new(GET=>'http://some.realy.big/file/to/download2.gz');

  # create a callback 
  my $code=sub {
    my ($getter,$request,$headers,$chunk)=@_;
      # 0: Current HTTP::MultiGet instance

lib/HTTP/MultiGet/Role.pm  view on Meta::CPAN

package HTTP::MultiGet::Role;

use Modern::Perl;
use Moo::Role;
use MooX::Types::MooseLike::Base qw(:all);
use AnyEvent::HTTP::MultiGet;
use AnyEvent;
use JSON qw();
use Data::Dumper;
use Carp qw(croak);
use namespace::clean;
use AnyEvent;
use Ref::Util qw(is_plain_arrayref);

lib/HTTP/MultiGet/Role.pm  view on Meta::CPAN

our $AUTOLOAD;

=head1 NAME

HTTP::MultiGet::Role - Role for building blocking/non-blocking AnyEvent friendly REST Clients

=head1 SYNOPSIS

  package My::Rest::Class;

  use Modern::Perl;
  use Moo;
  BEGIN { with 'HTTP::MultiGet::Role' }

  sub que_some_request {
    my ($self,$cb)=@_;
    my $request=HTTP::Request->new(GET=>'https://some_json_endpoint');
    return $self->queue_request($request,$cb);
  }


t/AnyEvent-HTTP-MultiGet.t  view on Meta::CPAN

use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Carp qw(confess);
use Data::Dumper;
use AnyEvent::Loop;
BEGIN { $SIG{__DIE__} = sub { confess @_ }; }
use Test::More qw(no_plan);

my $class='AnyEvent::HTTP::MultiGet';
require_ok($class);
use_ok($class);

t/HTTP-MultiGet-Role-Parse.t  view on Meta::CPAN

use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Test::More qw(no_plan);
use HTTP::Response;
use HTTP::Headers;
use HTTP::Request;
use Data::Dumper;
use AnyEvent::Loop;
use Scalar::Util qw(looks_like_number);
use AnyEvent::Strict;
use Carp qw(confess);

t/HTTP-MultiGet-Role-Parse.t  view on Meta::CPAN

  my $result=$self->test;
  ok(!$result,'Should have a false result');
  isa_ok($result,'Data::Result');
  like($result,qr/$body/,'result string test');
}

BEGIN {
  package
    test;
  
  use Modern::Perl;
  use Moo;
  BEGIN {with 'HTTP::MultiGet::Role' }

  sub que_test {
    my ($self,$cb,@args)=@_;
    $self->queue_request(HTTP::Request->new(GET=>'http://somewhere.com'),$cb);
  }
}

t/HTTP-MultiGet-Role.t  view on Meta::CPAN

use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Test::More qw(no_plan);
use HTTP::Response;
use HTTP::Headers;
use HTTP::Request;
use Data::Dumper;
use AnyEvent::Loop;
use Scalar::Util qw(looks_like_number);
use AnyEvent::Strict;
use Carp qw(confess);

t/HTTP-MultiGet-Role.t  view on Meta::CPAN

}
for my $code (199,400,401,300,500,501,595) {
    my $response=HTTP::Response->new($code,'fail',[],q{{"test": "testing"}});
    my $result=$self->parse_response(undef,$response);
    ok(!$result,'Should fail a code: '.$code);
}

BEGIN {
  package 
    SomeTestClass;
  use Modern::Perl;
  use Moo;
  use Data::Dumper;
  BEGIN {
  with 'HTTP::MultiGet::Role';
  }
  sub que_google {
    my ($self,$cb)=@_;
    my $req=new HTTP::Request(GET=>'https://google.com');
    return $self->queue_request($req,$cb);
  }

t/HTTP-MultiGet-fake_jobs.t  view on Meta::CPAN

use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Test::More qw(no_plan);
use HTTP::Response;
use HTTP::Headers;
use HTTP::Request;
use Data::Dumper;
use AnyEvent::Loop;
use Scalar::Util qw(looks_like_number);
use AnyEvent::Strict;
use Carp qw(confess);

t/HTTP-MultiGet-stream.t  view on Meta::CPAN

use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Test::More qw(no_plan);
use HTTP::Response;
use HTTP::Headers;
use HTTP::Request;
use Data::Dumper;
use AnyEvent::Loop;
use Scalar::Util qw(looks_like_number);
use Carp qw(confess);
BEGIN { $SIG{__DIE__} = sub { confess @_ }; }

t/HTTP-MultiGet.t  view on Meta::CPAN

use Modern::Perl;
use Log::LogMethods::Log4perlLogToString;
use Test::More qw(no_plan);
use HTTP::Response;
use HTTP::Headers;
use HTTP::Request;
use Data::Dumper;
use AnyEvent::Loop;
use Scalar::Util qw(looks_like_number);
use AnyEvent::Strict;
use Carp qw(confess);

t/HTTP-MultiGet.t  view on Meta::CPAN


  while(my ($id,$result)=each %{$results}) {
    ++$total;
    ok($result,'Result should be true');
    isa_ok($result,'Data::Result');
    isa_ok($result->get_data,'HTTP::Response');
  }
}
{
  package test;
  use Modern::Perl;
  use Moo;
  BEGIN { extends 'HTTP::MultiGet'; }
  sub que_function {
    my ($self,@args)=@_;
    my $code=$self->SUPER::que_function(@args);

    return sub { 
      $code->(@_);
      $self->log_always("our que count is: ".$self->que_count);
      no warnings;



( run in 0.328 second using v1.01-cache-2.11-cpan-4d50c553e7e )