r9136 - in /branches/upstream/libhttp-request-params-perl: ./ current/ current/lib/ current/lib/HTTP/ current/lib/HTTP/Request/ current/t/

emhn-guest at users.alioth.debian.org emhn-guest at users.alioth.debian.org
Fri Nov 9 22:56:42 UTC 2007


Author: emhn-guest
Date: Fri Nov  9 22:56:42 2007
New Revision: 9136

URL: http://svn.debian.org/wsvn/?sc=1&rev=9136
Log:
[svn-inject] Installing original source of libhttp-request-params-perl

Added:
    branches/upstream/libhttp-request-params-perl/
    branches/upstream/libhttp-request-params-perl/current/
    branches/upstream/libhttp-request-params-perl/current/Changes
    branches/upstream/libhttp-request-params-perl/current/MANIFEST
    branches/upstream/libhttp-request-params-perl/current/META.yml
    branches/upstream/libhttp-request-params-perl/current/Makefile.PL
    branches/upstream/libhttp-request-params-perl/current/README
    branches/upstream/libhttp-request-params-perl/current/lib/
    branches/upstream/libhttp-request-params-perl/current/lib/HTTP/
    branches/upstream/libhttp-request-params-perl/current/lib/HTTP/Request/
    branches/upstream/libhttp-request-params-perl/current/lib/HTTP/Request/Params.pm
    branches/upstream/libhttp-request-params-perl/current/t/
    branches/upstream/libhttp-request-params-perl/current/t/test.t

Added: branches/upstream/libhttp-request-params-perl/current/Changes
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/Changes?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/Changes (added)
+++ branches/upstream/libhttp-request-params-perl/current/Changes Fri Nov  9 22:56:42 2007
@@ -1,0 +1,3 @@
+2004-05-11    1.01
+
+  - Initial revision.

Added: branches/upstream/libhttp-request-params-perl/current/MANIFEST
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/MANIFEST?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/MANIFEST (added)
+++ branches/upstream/libhttp-request-params-perl/current/MANIFEST Fri Nov  9 22:56:42 2007
@@ -1,0 +1,7 @@
+Changes
+lib/HTTP/Request/Params.pm
+Makefile.PL
+MANIFEST			This list of files
+META.yml
+README
+t/test.t

Added: branches/upstream/libhttp-request-params-perl/current/META.yml
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/META.yml?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/META.yml (added)
+++ branches/upstream/libhttp-request-params-perl/current/META.yml Fri Nov  9 22:56:42 2007
@@ -1,0 +1,16 @@
+# http://module-build.sourceforge.net/META-spec.html
+#XXXXXXX This is a prototype!!!  It will change in the future!!! XXXXX#
+name:         HTTP-Request-Params
+version:      1.01
+version_from: lib/HTTP/Request/Params.pm
+installdirs:  site
+requires:
+    CGI:                           3.00
+    Class::Accessor::Fast:         0.19
+    Email::MIME::ContentType:      1.0
+    Email::MIME::Modifier:         1.42
+    HTTP::Request:                 1.40
+    HTTP::Request::Common:         1.26
+
+distribution_type: module
+generated_by: ExtUtils::MakeMaker version 6.24

Added: branches/upstream/libhttp-request-params-perl/current/Makefile.PL
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/Makefile.PL?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/Makefile.PL (added)
+++ branches/upstream/libhttp-request-params-perl/current/Makefile.PL Fri Nov  9 22:56:42 2007
@@ -1,0 +1,16 @@
+use ExtUtils::MakeMaker;
+
+WriteMakefile (
+               AUTHOR        => 'Casey West <casey at geeknest.com>',
+               ABSTRACT      => "Retrieve GET/POST Parameters from HTTP Requests",
+               NAME          => 'HTTP::Request::Params',
+               PREREQ_PM     => {
+                                 'CGI' => '3.00',
+                                 'Class::Accessor::Fast' => '0.19',
+                                 'Email::MIME::ContentType' => '1.0',
+                                 'Email::MIME::Modifier' => '1.42',
+                                 'HTTP::Request' => '1.40',
+                                 'HTTP::Request::Common' => '1.26',
+                                },
+               VERSION_FROM  => 'lib/HTTP/Request/Params.pm',
+              );

Added: branches/upstream/libhttp-request-params-perl/current/README
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/README?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/README (added)
+++ branches/upstream/libhttp-request-params-perl/current/README Fri Nov  9 22:56:42 2007
@@ -1,0 +1,64 @@
+NAME
+    HTTP::Request::Params - Retrieve GET/POST Parameters from HTTP Requests
+
+SYNOPSIS
+      use HTTP::Request::Params;
+  
+      my $http_request = read_request();
+      my $parse_params = HTTP::Request::Params->new({
+                           req => $http_request,
+                         });
+      my $params       = $parse_params->params;
+
+DESCRIPTION
+    This software does all the dirty work of parsing HTTP Requests to find
+    incoming query parameters.
+
+  new
+      my $parser = HTTP::Request::Params->new({
+                      req => $http_request,
+                   });
+
+    "req" - This required argument is either an "HTTP::Request" object or a
+    string containing an entier HTTP Request.
+
+    Incoming query parameters come from two places. The first place is the
+    "query" portion of the URL. Second is the content portion of an HTTP
+    request as is the case when parsing a POST request, for example.
+
+  params
+      my $params = $parser->params;
+
+    Returns a hash reference containing all the parameters. The keys in this
+    hash are the names of the parameters. Values are the values associated
+    with those parameters in the incoming query. For parameters with
+    multiple values, the value in this hash will be a list reference. This
+    is the same behaviour as the "CGI" module's "Vars()" function.
+
+  req
+      my $req_object = $parser->req;
+
+    Returns the "HTTP::Request" object.
+
+  mime
+      my $mime_object = $parser->mime;
+
+    Returns the "Email::MIME" object.
+
+    Now, you may be wondering why we're dealing with an "Email::MIME"
+    object. The answer is simple. It's an amazing parser for MIME compliant
+    messages, and RFC 822 compliant messages. When parsing incoming POST
+    data, especially file uploads, "Email::MIME" is the perfect fit. It's
+    fast and light.
+
+SEE ALSO
+    "HTTP::Daemon", HTTP::Request, Email::MIME, CGI, perl.
+
+AUTHOR
+    Casey West, <casey at geeknest.com>.
+
+COPYRIGHT
+      Copyright (c) 2005 Casey West.  All rights reserved.
+      This module is free software; you can redistribute it and/or modify it
+      under the same terms as Perl itself.
+

Added: branches/upstream/libhttp-request-params-perl/current/lib/HTTP/Request/Params.pm
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/lib/HTTP/Request/Params.pm?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/lib/HTTP/Request/Params.pm (added)
+++ branches/upstream/libhttp-request-params-perl/current/lib/HTTP/Request/Params.pm Fri Nov  9 22:56:42 2007
@@ -1,0 +1,169 @@
+package HTTP::Request::Params;
+# $Id: Params.pm,v 1.1 2005/01/12 16:42:32 cwest Exp $
+use strict;
+
+=head1 NAME
+
+HTTP::Request::Params - Retrieve GET/POST Parameters from HTTP Requests
+
+=head1 SYNOPSIS
+
+  use HTTP::Request::Params;
+  
+  my $http_request = read_request();
+  my $parse_params = HTTP::Request::Params->new({
+                       req => $http_request,
+                     });
+  my $params       = $parse_params->params;
+
+=cut
+
+use vars qw[$VERSION];
+$VERSION = sprintf "%d.%02d", split m/\./, (qw$Revision: 1.1 $)[1];
+
+use CGI;
+use Email::MIME::Modifier;
+use Email::MIME::ContentType qw[parse_content_type];
+use HTTP::Request;
+use HTTP::Message;
+use base qw[Class::Accessor::Fast];
+
+=head1 DESCRIPTION
+
+This software does all the dirty work of parsing HTTP Requests to find
+incoming query parameters.
+
+=head2 new
+
+  my $parser = HTTP::Request::Params->new({
+                  req => $http_request,
+               });
+
+C<req> - This required argument is either an C<HTTP::Request> object or a
+string containing an entier HTTP Request.
+
+Incoming query parameters come from two places. The first place is the
+C<query> portion of the URL. Second is the content portion of an HTTP
+request as is the case when parsing a POST request, for example.
+
+=head2 params
+
+  my $params = $parser->params;
+
+Returns a hash reference containing all the parameters. The keys in this hash
+are the names of the parameters. Values are the values associated with those
+parameters in the incoming query. For parameters with multiple values, the value
+in this hash will be a list reference. This is the same behaviour as the C<CGI>
+module's C<Vars()> function.
+
+=head2 req
+
+  my $req_object = $parser->req;
+
+Returns the C<HTTP::Request> object.
+
+=head2 mime
+
+  my $mime_object = $parser->mime;
+
+Returns the C<Email::MIME> object.
+
+Now, you may be wondering why we're dealing with an C<Email::MIME> object.
+The answer is simple. It's an amazing parser for MIME compliant messages,
+and RFC 822 compliant messages. When parsing incoming POST data, especially
+file uploads, C<Email::MIME> is the perfect fit. It's fast and light.
+
+=cut
+
+sub new {
+    my ($class) = shift;
+    my $self = $class->SUPER::new(@_);
+
+    $self->req(HTTP::Request->parse($self->req))
+      unless ref($self->req);
+
+    my $message = (split /\n/, $self->req->as_string, 2)[1];
+    $self->mime(Email::MIME->new($self->req->as_string));
+
+    $self->_find_params;
+
+    return $self;
+}
+__PACKAGE__->mk_accessors(qw[req mime params]);
+
+sub _find_params {
+    my $self = shift;
+    my $query_params = CGI->new($self->req->url->query)->Vars;
+    my $post_params  = {};
+
+    if ( $self->mime->parts > 1 ) {
+        foreach my $part ( $self->mime->parts ) {
+            next if $part == $self->mime;
+            $part->disposition_set('text/plain'); # for easy parsing
+
+            my $disp    = $part->header('Content-Disposition');
+            my $ct      = parse_content_type($disp);
+            my $name    = $ct->{attributes}->{name};
+            my $content = $part->body;
+
+			$content =~ s/\r\n$//;
+            $self->_add_to_field($post_params, $name, $content);
+        }
+    } else {
+    	chomp( my $body = $self->mime->body );
+        $post_params = CGI->new($body)->Vars;
+    }
+
+    my $params = {};
+    $self->_add_to_field($params, $_, $post_params->{$_})
+      for keys %{$post_params};
+    $self->_add_to_field($params, $_, $query_params->{$_})
+      for keys %{$query_params};
+    $self->params($params);
+}
+
+sub _add_to_field {
+    my ($self, $hash, $name, @content) = @_;
+    my $field = $hash->{$name};
+    @content = @{$content[0]} if @content && ref($content[0]);
+	@content = map split(/\0/), @content;
+
+    if ( defined $field ) {
+        if ( ref($field) ) {
+            push @{$field}, @content;
+        } else {
+            $field = [ $field, @content ];
+        }
+    } else {
+        if ( @content > 1 ) {
+            $field = \@content;
+        } else {
+            $field = $content[0];
+        }
+    }
+    $hash->{$name} = $field;
+}
+
+1;
+
+__END__
+
+=head1 SEE ALSO
+
+C<HTTP::Daemon>,
+L<HTTP::Request>,
+L<Email::MIME>,
+L<CGI>,
+L<perl>.
+
+=head1 AUTHOR
+
+Casey West, <F<casey at geeknest.com>>.
+
+=head1 COPYRIGHT
+
+  Copyright (c) 2005 Casey West.  All rights reserved.
+  This module is free software; you can redistribute it and/or modify it
+  under the same terms as Perl itself.
+
+=cut

Added: branches/upstream/libhttp-request-params-perl/current/t/test.t
URL: http://svn.debian.org/wsvn/branches/upstream/libhttp-request-params-perl/current/t/test.t?rev=9136&op=file
==============================================================================
--- branches/upstream/libhttp-request-params-perl/current/t/test.t (added)
+++ branches/upstream/libhttp-request-params-perl/current/t/test.t Fri Nov  9 22:56:42 2007
@@ -1,0 +1,57 @@
+#!/usr/local/bin/perl
+use Test::More qw[no_plan];
+use strict;
+$^W = 1;
+
+BEGIN {
+    use_ok 'HTTP::Request::Params';
+    use_ok 'HTTP::Request::Common';
+    use_ok 'HTTP::Request';
+}
+
+my $get_request = HTTP::Request::Params->new({
+                    req => get_request(),
+                  });
+test_request($get_request);
+
+my $post_request = HTTP::Request::Params->new({req => post_request()});
+test_request($post_request);
+
+my $post_upload_request = HTTP::Request::Params->new({req => post_upload_request()});
+test_request($post_upload_request);
+
+like $post_upload_request->params->{myself}, qr/sub post_upload_request/, 'found myself';
+is scalar($post_upload_request->mime->parts), 3;
+
+sub test_request {
+    isa_ok $get_request, 'HTTP::Request::Params';
+    isa_ok $get_request->req, 'HTTP::Request';
+    isa_ok $get_request->mime, 'Email::MIME';
+    is ref($get_request->params), 'HASH', 'params is HASH';
+    is ref($get_request->params->{multi}), 'ARRAY', 'params->{multi} is ARRAY';
+    ok !ref($get_request->params->{single}), 'params->{single} is singular';
+    is $get_request->params->{single}, 'one', 'single is one';
+}
+
+sub get_request {
+    HTTP::Request->new(GET => q[http://example.com/?multi=1;multi=2;single=one]);
+}
+
+sub post_request {
+<<__REQ__;
+POST http://example.com?multi=1
+
+multi=2;single=one
+__REQ__
+}
+
+sub post_upload_request {
+my $req = POST q[http://exmaple.com/?multi=2],
+               Content_Type => 'form-data',
+               Content => [
+                   multi => 1,
+                   single => 'one',
+                   myself => [ $0 ],
+               ];
+return $req;
+}




More information about the Pkg-perl-cvs-commits mailing list