At 30 Aug 2001 09:04:05 -0700,
Gisle Aas wrote:
> > > Agree.  If you could redo your patch relative to perl5.5.53_96 that
> > > would be great.
> > What version of Perl do you mean?  I cannot find such version at
> Did I actually write that?  Must have been very tired.
> 
> What I want is a patch against libwww-perl-5.53_96.

I see.  Here it is.  This patch passed 'make test.'

-- 
Keiichiro Nagano

--- cut --- cut --- cut --- cut --- cut --- cut --- cut --- cut ---
*** LWP/UserAgent.pm.ORIGINAL   Tue Aug 28 14:38:32 2001
--- LWP/UserAgent.pm    Fri Aug 31 23:18:25 2001
***************
*** 257,266 ****
  
  =cut
  
! sub simple_request
! {
!     my($self, $request, $arg, $size) = @_;
! 
      # some sanity checking
      if (defined $request) {
        if (ref $request) {
--- 257,265 ----
  
  =cut
  
! # private method.  check sanity of given $request
! sub _request_sanity_check {
!     my($self, $request) = @_;
      # some sanity checking
      if (defined $request) {
        if (ref $request) {
***************
*** 275,280 ****
--- 274,333 ----
      else {
          Carp::croak("No request object passed in");
      }
+ }
+ 
+ sub simple_request
+ {
+     my($self, $request, $arg, $size) = @_;
+     $self->_request_sanity_check($request);
+     my $new_request = $self->prepare_request($request);
+     return($self->send_request($new_request, $arg, $size));
+ }
+ 
+ 
+ =item $ua->prepare_request($request)
+ 
+ This method modifies given C<HTTP::Request> object for
+ C<send_request>.  Used in C<simple_request>.  This helps those who
+ want to see the whole content of the request before actual requesting.
+ 
+ =cut
+ 
+ sub prepare_request
+ {
+     my($self, $request) = @_;
+     $self->_request_sanity_check($request);
+ 
+     # Extract fields that will be used below
+     my ($agent, $from, $cookie_jar, $max_size) =
+       @{$self}{qw(agent from cookie_jar max_size)};
+ 
+     # Set User-Agent and From headers if they are defined
+     $request->init_header('User-Agent' => $agent) if $agent;
+     $request->init_header('From' => $from) if $from;
+     if (defined $max_size) {
+       my $last = $max_size - 1;
+       $last = 0 if $last < 0;  # there is no way to actually request no content
+       $request->init_header('Range' => "bytes=0-$last");
+     }
+     $cookie_jar->add_cookie_header($request) if $cookie_jar;
+ 
+     return($request);
+ }
+ 
+ 
+ =item $ua->send_request($request, $arg [, $size])
+ 
+ This method processes given <$request> with no modification (but
+ checks errors).  This helps those who wants to send his/her
+ C<HTTP::Request> object untouched.  Also frienldy for inheritance.
+ 
+ =cut
+ 
+ sub send_request
+ {
+     my($self, $request, $arg, $size) = @_;
+     $self->_request_sanity_check($request);
  
      my($method, $url) = ($request->method, $request->uri);
  
***************
*** 325,352 ****
        # else fall thru and create the protocol object normally
      }
  
- 
      unless($protocol) {
        $protocol = eval { LWP::Protocol::create($scheme, $self) };
        if ($@) {
        $@ =~ s/ at .* line \d+.*//s;  # remove file/line number
        return HTTP::Response->new(&HTTP::Status::RC_NOT_IMPLEMENTED, $@);
        }
      }
  
      # Extract fields that will be used below
!     my ($agent, $from, $timeout, $cookie_jar, $use_eval, $max_size) =
!       @{$self}{qw(agent from timeout cookie_jar use_eval max_size)};
! 
!     # Set User-Agent and From headers if they are defined
!     $request->init_header('User-Agent' => $agent) if $agent;
!     $request->init_header('From' => $from) if $from;
!     if (defined $max_size) {
!       my $last = $max_size - 1;
!       $last = 0 if $last < 0;  # there is no way to actually request no content
!       $request->init_header('Range' => "bytes=0-$last");
!     }
!     $cookie_jar->add_cookie_header($request) if $cookie_jar;
  
      my $response;
      if ($use_eval) {
--- 378,395 ----
        # else fall thru and create the protocol object normally
      }
  
      unless($protocol) {
        $protocol = eval { LWP::Protocol::create($scheme, $self) };
        if ($@) {
        $@ =~ s/ at .* line \d+.*//s;  # remove file/line number
+ 
        return HTTP::Response->new(&HTTP::Status::RC_NOT_IMPLEMENTED, $@);
        }
      }
  
      # Extract fields that will be used below
!     my ($timeout, $cookie_jar, $use_eval, $parse_head, $max_size) =
!       @{$self}{qw(timeout cookie_jar use_eval parse_head max_size)};
  
      my $response;
      if ($use_eval) {

Reply via email to