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