[libhttp-entity-parser-perl] 01/05: tune a bit

gregor herrmann gregoa at debian.org
Sun Oct 23 00:23:35 UTC 2016


This is an automated email from the git hooks/post-receive script.

gregoa pushed a commit to tag 0.03
in repository libhttp-entity-parser-perl.

commit d93e5cb67964926aef34a4cb3b034235a9bbe9c0
Author: Masahiro Nagano <kazeburo at gmail.com>
Date:   Fri Feb 7 13:41:53 2014 +0900

    tune a bit
---
 eg/bench.pl                          |  2 +-
 lib/HTTP/Entity/Parser.pm            |  3 ++-
 lib/HTTP/Entity/Parser/UrlEncoded.pm | 37 ++++++------------------------------
 3 files changed, 9 insertions(+), 33 deletions(-)

diff --git a/eg/bench.pl b/eg/bench.pl
index e2edbde..7222ab1 100644
--- a/eg/bench.pl
+++ b/eg/bench.pl
@@ -6,7 +6,7 @@ use HTTP::Entity::Parser;
 use HTTP::Body;
 use Benchmark qw/:all/;
 
-my $content = 'xxx=hogehoge&yyy=aaaaaaaaaaaaaaaaaaaaa';
+my $content = 'xxx=hogehoge&yyy=aaaaaaaaaaaaaaaaaaaaa&%E6%97%A5%E6%9C%AC%E8%AA%9E=%E3%81%AB%E3%81%BB%E3%82%93%E3%81%94&%E3%81%BB%E3%81%92%E3%81%BB%E3%81%92=%E3%81%B5%E3%81%8C%E3%81%B5%E3%81%8C';
 
 my $parser = HTTP::Entity::Parser->new;
 $parser->register('application/x-www-form-urlencoded','HTTP::Entity::Parser::UrlEncoded');
diff --git a/lib/HTTP/Entity/Parser.pm b/lib/HTTP/Entity/Parser.pm
index 34b5ce0..b4573e7 100644
--- a/lib/HTTP/Entity/Parser.pm
+++ b/lib/HTTP/Entity/Parser.pm
@@ -25,7 +25,8 @@ sub get_parser {
 
     if (defined $env->{CONTENT_TYPE}) {
         for my $handler (@{$self->{handlers}}) {
-            if (index($env->{CONTENT_TYPE}, $handler->[0]) == 0) {
+            if ( $env->{CONTENT_TYPE} eq $handler->[0] 
+              || index($env->{CONTENT_TYPE}, $handler->[0]) == 0) {
                 return $handler->[1]->new($env, $handler->[2]);
             }
         }
diff --git a/lib/HTTP/Entity/Parser/UrlEncoded.pm b/lib/HTTP/Entity/Parser/UrlEncoded.pm
index c601c4d..938ca60 100644
--- a/lib/HTTP/Entity/Parser/UrlEncoded.pm
+++ b/lib/HTTP/Entity/Parser/UrlEncoded.pm
@@ -2,49 +2,24 @@ package HTTP::Entity::Parser::UrlEncoded;
 
 use strict;
 use warnings;
-
-our $DECODE = qr/%([0-9a-fA-F]{2})/;
-our %DecodeMap;
-for my $num ( 0 .. 255 ) {
-    my $h = sprintf "%02X", $num;
-    my $chr = chr $num;
-    $DecodeMap{ lc $h } = $chr; #%aa
-    $DecodeMap{ uc $h } = $chr; #%AA
-    $DecodeMap{ ucfirst lc $h } = $chr; #%Aa
-    $DecodeMap{ lcfirst uc $h } = $chr; #%aA
-}
+use WWW::Form::UrlEncoded qw/parse_urlencoded/;
 
 sub new {
-    my $class = shift;
-    bless { buffer => '' }, $class;
+    bless [''], shift;
 }
 
 sub add {
     my $self = shift;
     if (defined $_[0]) {
-        $self->{buffer} .= $_[0];
+        $self->[0] .= $_[0];
     }
 }
 
 sub finalize {
-    my $self = shift;
-    my @params;
-    for my $pair ( split( /[&;] ?/, $self->{buffer}, -1 ) ) {
-        $pair =~ y/\+/\x20/;
-        my ($key, $val) = split /=/, $pair, 2;
-        for ($key, $val) {
-            if ( ! defined $_ ) { 
-                push @params, '';
-                next;
-            }
-            s/$DECODE/$DecodeMap{$1}/gs;
-            push @params, $_;
-        }
-    }
-
-    return (\@params, []);
+    return ([parse_urlencoded($_[0]->[0])], []);
 }
 
+
 1;
 __END__
 
@@ -52,7 +27,7 @@ __END__
 
 =head1 NAME
 
-HTTP::Entity::Parser::MultiPart - parser for application/x-www-form-urlencoded
+HTTP::Entity::Parser::UrlEncoded - parser for application/x-www-form-urlencoded
 
 =head1 SYNOPSIS
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libhttp-entity-parser-perl.git



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