Your message dated Thu, 22 Aug 2019 03:21:48 +0530
with message-id <[email protected]>
and subject line Re: libnet-amazon-s3-perl: HTTPRequest.pm incomplete S3 
protocol support
has caused the Debian Bug report #692181,
regarding libnet-amazon-s3-perl: HTTPRequest.pm incomplete S3 protocol support
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
692181: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=692181
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: libnet-amazon-s3-perl
Version: 0.53-1
Severity: minor
Tags: patch

As seems to often be the case, attempts to use a library beyond its stated 
capabilities results in discoveries of incomplete coding.

I do recognize there is a newer version of this library, however looking over 
it appears to indicate similar business rules in this area.

Proposed feature changes to HTTPRequest.pm:

Methods
Old rule: permits DELETE, GET, HEAD, PUT
New rule: permits DELETE, GET, HEAD, PUT, POST

Sub-resources
Old rule: permits one of acl, torrent, location
New rule: permits one each of acl, lifecycle, location, logging, notification, 
partNumber, policy, requestPayment, torrent, uploadId, uploads, versionId, 
versioning, versions, website

Sample code:

sub initiateMultipartUpload
{
  my $path = shift;
  my $newUpload = Net::Amazon::S3::HTTPRequest->new({
    s3 => $s3,
    method => 'POST',
    # $s3->_urlescape escapes dots and slashes, uri_escape_utf8 escapes 
slashes.  Why?
    path => $config->path . uri_escape_utf8($path, '^A-Za-z0-9\-\._~\x2f') . 
'?uploads'
  });

  my $newUploadReq = $newUpload->http_request;
  #die $newUploadReq->as_string;
  my $xpc = $s3->_send_request($newUploadReq);
  # Amazon isn't returning a Content-Type for this request, so it likely won't 
be parsed for us
  $xpc = $s3->_xpc_of_content($xpc) if ( $xpc && !ref($xpc) );
  return undef unless $xpc && !$s3->_remember_errors($xpc);

  my $bucket = $xpc->findvalue("//s3:Bucket");
  my $key = $xpc->findvalue("//s3:Key");
  my $uploadID = $xpc->findvalue("//s3:UploadId");

  return {
    bucket => $bucket,
    key => $key,
    upload_id => $uploadID
  };
}

Please note that perl is not my first language, I would be very suprised if 
there were not issues with style or not doing things "the perl way"

-- System Information:
Debian Release: 6.0.6
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: i386 (i686)

Kernel: Linux 2.6.21.7-2.fc8xen (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libnet-amazon-s3-perl depends on:
ii  libclass-accessor-perl 0.34-1            Perl module that automatically gen
ii  libdata-stream-bulk-pe 0.07-1            N at a time iteration API
ii  libdatetime-format-htt 0.39-1            Perl module for date conversion wi
ii  libdatetime-format-iso 0.06-2            Perl module to parse ISO8601 date 
ii  libdigest-hmac-perl    1.02+dfsg-1       module for creating standard messa
ii  libdigest-md5-file-per 0.07-1            Perl extension for getting MD5 sum
ii  liblwp-useragent-deter 1.04-1            LWP useragent that retries errors
ii  libmoose-perl          1.09-2            modern Perl object system framewor
ii  libmoosex-strictconstr 0.10-1            Make your object constructors blow
ii  libmoosex-types-dateti 0.03-1            Perl DateTime related constraints 
ii  libregexp-common-perl  2010010201-1      module with common regular express
ii  liburi-perl            1.54-2            module to manipulate and access UR
ii  libwww-perl            5.836-1           Perl HTTP/WWW client/server librar
ii  libxml-libxml-perl     1.70.ds-1         Perl interface to the libxml2 libr
ii  perl                   5.10.1-17squeeze3 Larry Wall's Practical Extraction 

libnet-amazon-s3-perl recommends no packages.

libnet-amazon-s3-perl suggests no packages.

-- no debconf information
*** /usr/share/perl5/Net/Amazon/S3/HTTPRequest-old.pm	2012-11-02 01:04:25.000000000 -0700
--- /usr/share/perl5/Net/Amazon/S3/HTTPRequest.pm	2012-11-02 18:17:15.000000000 -0700
***************
*** 10,16 ****
  my $METADATA_PREFIX      = 'x-amz-meta-';
  my $AMAZON_HEADER_PREFIX = 'x-amz-';
  
! enum 'HTTPMethod' => qw(DELETE GET HEAD PUT);
  
  has 's3'     => ( is => 'ro', isa => 'Net::Amazon::S3', required => 1 );
  has 'method' => ( is => 'ro', isa => 'HTTPMethod',      required => 1 );
--- 10,16 ----
  my $METADATA_PREFIX      = 'x-amz-meta-';
  my $AMAZON_HEADER_PREFIX = 'x-amz-';
  
! enum 'HTTPMethod' => qw(DELETE GET HEAD PUT POST);
  
  has 's3'     => ( is => 'ro', isa => 'Net::Amazon::S3', required => 1 );
  has 'method' => ( is => 'ro', isa => 'HTTPMethod',      required => 1 );
***************
*** 24,29 ****
--- 24,48 ----
  
  __PACKAGE__->meta->make_immutable;
  
+ # list of sub-resources that must be included (if they are specified) in any cannonical string
+ %__PACKAGE__::sub_resources = (
+   'acl' => 1,
+   'lifecycle' => 1,
+   'location' => 1,
+   'logging' => 1,
+   'notification' => 1,
+   'partNumber' => 1,
+   'policy' => 1,
+   'requestPayment' => 1,
+   'torrent' => 1,
+   'uploadId' => 1,
+   'uploads' => 1,
+   'versionId' => 1,
+   'versioning' => 1,
+   'versions' => 1,
+   'website' => 1
+ );
+ 
  # make the HTTP::Request object
  sub http_request {
      my $self     = shift;
***************
*** 134,150 ****
          }
      }
  
!     # don't include anything after the first ? in the resource...
!     $path =~ /^([^?]*)/;
      $buf .= "/$1";
  
!     # ...unless there is an acl or torrent parameter
!     if ( $path =~ /[&?]acl($|=|&)/ ) {
!         $buf .= '?acl';
!     } elsif ( $path =~ /[&?]torrent($|=|&)/ ) {
!         $buf .= '?torrent';
!     } elsif ( $path =~ /[&?]location($|=|&)/ ) {
!         $buf .= '?location';
      }
  
      return $buf;
--- 153,176 ----
          }
      }
  
!     # include anything before the first ? in the resource by default
!     $path =~ /^([^?]*)(\?(.*))?$/;
      $buf .= "/$1";
  
!     # any keys after the first ? must be checked in the "list of valid subresources",
!     # then sorted before being added on to the location
!     if ( $3 )
!     {
!       my %interesting_subresources = ();
!       foreach my $subResr ( split(/&/, $3) ) {
!         $subResr =~ /^([^=]+)(=|$)/;
!         $interesting_subresources{$1} = $subResr if ( $__PACKAGE__::sub_resources{$1} );
!       }
!       my @subresource = ();
!       foreach my $key ( sort keys %interesting_subresources ) {
!         push(@subresource, $interesting_subresources{$key});
!       }
!       $buf .= '?' . join('&',@subresource) unless !@subresource;
      }
  
      return $buf;

--- End Message ---
--- Begin Message ---
Hey,

Since there's no response to the last mail, I'm closing this for now.
Please feel free to re-open whenever :D


Best,
Utkarsh


Attachment: signature.asc
Description: OpenPGP digital signature


--- End Message ---

Reply via email to