[Catalyst-commits] r7449 - in trunk/HTTP-Body: . lib/HTTP lib/HTTP/Body t t/data/multipart t/data/octetstream t/data/urlencoded

andyg at dev.catalyst.perl.org andyg at dev.catalyst.perl.org
Sat Feb 23 14:53:14 GMT 2008


Author: andyg
Date: 2008-02-23 14:53:13 +0000 (Sat, 23 Feb 2008)
New Revision: 7449

Added:
   trunk/HTTP-Body/t/data/multipart/012-content.dat
   trunk/HTTP-Body/t/data/multipart/012-headers.yml
   trunk/HTTP-Body/t/data/multipart/012-results.yml
   trunk/HTTP-Body/t/data/octetstream/003-content.dat
   trunk/HTTP-Body/t/data/octetstream/003-headers.yml
   trunk/HTTP-Body/t/data/octetstream/003-results.dat
   trunk/HTTP-Body/t/data/urlencoded/003-content.dat
   trunk/HTTP-Body/t/data/urlencoded/003-headers.yml
   trunk/HTTP-Body/t/data/urlencoded/003-results.yml
Modified:
   trunk/HTTP-Body/Changes
   trunk/HTTP-Body/Makefile.PL
   trunk/HTTP-Body/lib/HTTP/Body.pm
   trunk/HTTP-Body/lib/HTTP/Body/MultiPart.pm
   trunk/HTTP-Body/t/04multipart.t
   trunk/HTTP-Body/t/05urlencoded.t
   trunk/HTTP-Body/t/06octetstream.t
Log:
HTTP::Body, added support for chunked requests

Modified: trunk/HTTP-Body/Changes
===================================================================
--- trunk/HTTP-Body/Changes	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/Changes	2008-02-23 14:53:13 UTC (rev 7449)
@@ -1,5 +1,8 @@
 This file documents the revision history for Perl extension HTTP::Body.
 
+1.00
+        - Added support for chunked requests if no $length value is passed to new().
+
 0.9   2007-03-27 14:00:00
         - Fixed bug where empty fields in multipart/form-data were ignored.
           (Ton Voon)

Modified: trunk/HTTP-Body/Makefile.PL
===================================================================
--- trunk/HTTP-Body/Makefile.PL	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/Makefile.PL	2008-02-23 14:53:13 UTC (rev 7449)
@@ -6,9 +6,10 @@
     NAME         => 'HTTP::Body',
     VERSION_FROM => 'lib/HTTP/Body.pm',
     PREREQ_PM    => {
-        Carp         => 0,
-        File::Temp   => '0.14',
-        IO::File     => 0,
-        YAML         => '0.39'
+        Carp          => 0,
+        File::Temp    => '0.14',
+        HTTP::Headers => 0, 
+        IO::File      => 0,
+        YAML          => '0.39'
     }
 );

Modified: trunk/HTTP-Body/lib/HTTP/Body/MultiPart.pm
===================================================================
--- trunk/HTTP-Body/lib/HTTP/Body/MultiPart.pm	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/lib/HTTP/Body/MultiPart.pm	2008-02-23 14:53:13 UTC (rev 7449)
@@ -274,7 +274,7 @@
 
                 $part->{fh}       = $fh;
                 $part->{tempname} = $fh->filename;
-	        }
+            }
         }
     }
 
@@ -285,7 +285,7 @@
     if ( $part->{done} ) {
 
         if ( exists $part->{filename} ) {
-	        if ( $part->{filename} ne "" ) {
+            if ( $part->{filename} ne "" ) {
                 $part->{fh}->close;
 
                 delete @{$part}{qw[ data done fh ]};

Modified: trunk/HTTP-Body/lib/HTTP/Body.pm
===================================================================
--- trunk/HTTP-Body/lib/HTTP/Body.pm	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/lib/HTTP/Body.pm	2008-02-23 14:53:13 UTC (rev 7449)
@@ -4,7 +4,7 @@
 
 use Carp       qw[ ];
 
-our $VERSION = 0.91;
+our $VERSION = 1.00;
 
 our $TYPES = {
     'application/octet-stream'          => 'HTTP::Body::OctetStream',
@@ -16,6 +16,9 @@
 require HTTP::Body::UrlEncoded;
 require HTTP::Body::MultiPart;
 
+use HTTP::Headers;
+use HTTP::Message;
+
 =head1 NAME
 
 HTTP::Body - HTTP Body Parser
@@ -53,6 +56,8 @@
 application/octet-stream, application/x-www-form-urlencoded, and
 multipart/form-data.
 
+Chunked bodies are supported by not passing a length value to new().
+
 It is currently used by L<Catalyst> to parse POST bodies.
 
 =head1 METHODS
@@ -69,8 +74,8 @@
 sub new {
     my ( $class, $content_type, $content_length ) = @_;
 
-    unless ( @_ == 3 ) {
-        Carp::croak( $class, '->new( $content_type, $content_length )' );
+    unless ( @_ >= 2 ) {
+        Carp::croak( $class, '->new( $content_type, [ $content_length ] )' );
     }
 
     my $type;
@@ -90,8 +95,10 @@
 
     my $self = {
         buffer         => '',
+        chunk_buffer   => '',
         body           => undef,
-        content_length => $content_length,
+        chunked        => !defined $content_length,
+        content_length => defined $content_length ? $content_length : -1,
         content_type   => $content_type,
         length         => 0,
         param          => {},
@@ -114,6 +121,57 @@
 sub add {
     my $self = shift;
     
+    if ( $self->{chunked} ) {
+        $self->{chunk_buffer} .= $_[0];
+        
+        while ( $self->{chunk_buffer} =~ m/^([\da-fA-F]+).*\x0D\x0A/ ) {
+            my $chunk_len = hex($1);
+            
+            if ( $chunk_len == 0 ) {
+                # Strip chunk len
+                $self->{chunk_buffer} =~ s/^([\da-fA-F]+).*\x0D\x0A//;
+                
+                # End of data, there may be trailing headers
+                if (  my ($headers) = $self->{chunk_buffer} =~ m/(.*)\x0D\x0A/s ) {
+                    if ( my $message = HTTP::Message->parse( $headers ) ) {
+                        $self->{trailing_headers} = $message->headers;
+                    }
+                }
+                
+                $self->{chunk_buffer} = '';
+                
+                # Set content_length equal to the amount of data we read,
+                # so the spin methods can finish up.
+                $self->{content_length} = $self->{length};
+            }
+            else {
+                # Make sure we have the whole chunk in the buffer (+CRLF)
+                if ( length( $self->{chunk_buffer} ) >= $chunk_len ) {
+                    # Strip chunk len
+                    $self->{chunk_buffer} =~ s/^([\da-fA-F]+).*\x0D\x0A//;
+                    
+                    # Pull chunk data out of chunk buffer into real buffer
+                    $self->{buffer} .= substr $self->{chunk_buffer}, 0, $chunk_len, '';
+                
+                    # Strip remaining CRLF
+                    $self->{chunk_buffer} =~ s/^\x0D\x0A//;
+                
+                    $self->{length} += $chunk_len;
+                }
+                else {
+                    # Not enough data for this chunk, wait for more calls to add()
+                    return;
+                }
+            }
+            
+            unless ( $self->{state} eq 'done' ) {
+                $self->spin;
+            }
+        }
+        
+        return;
+    }
+    
     my $cl = $self->content_length;
 
     if ( defined $_[0] ) {
@@ -147,19 +205,20 @@
     return $self->{body};
 }
 
-=item buffer
+=item chunked
 
-read only accessor for the buffer.
+Returns 1 if the request is chunked.
 
 =cut
 
-sub buffer {
-    return shift->{buffer};
+sub chunked {
+    return shift->{chunked};
 }
 
 =item content_length
 
-read only accessor for content length
+Returns the content-length for the body data if known.
+Returns -1 if the request is chunked.
 
 =cut
 
@@ -169,7 +228,7 @@
 
 =item content_type
 
-read only accessor for the content type
+Returns the content-type of the body data.
 
 =cut
 
@@ -189,7 +248,9 @@
 
 =item length
 
-read only accessor for body length.
+Returns the total length of data we expect to read if known.
+In the case of a chunked request, returns the amount of data
+read so far.
 
 =cut
 
@@ -197,6 +258,17 @@
     return shift->{length};
 }
 
+=item trailing_headers
+
+If a chunked request body had trailing headers, trailing_headers will
+return an HTTP::Headers object populated with those headers.
+
+=cut
+
+sub trailing_headers {
+    return shift->{trailing_headers};
+}
+
 =item spin
 
 Abstract method to spin the io handle.
@@ -209,7 +281,7 @@
 
 =item state
 
-accessor for body state.
+Returns the current state of the parser.
 
 =cut
 
@@ -221,7 +293,7 @@
 
 =item param
 
-accesor for http parameters.
+Get/set body parameters.
 
 =cut
 
@@ -248,6 +320,8 @@
 
 =item upload
 
+Get/set file uploads.
+
 =cut
 
 sub upload {
@@ -273,16 +347,14 @@
 
 =back
 
-=head1 BUGS
-
-Chunked requests are currently not supported.
-
 =head1 AUTHOR
 
 Christian Hansen, C<ch at ngmedia.com>
 
 Sebastian Riedel, C<sri at cpan.org>
 
+Andy Grundman, C<andy at hybridized.org>
+
 =head1 LICENSE
 
 This library is free software. You can redistribute it and/or modify 

Modified: trunk/HTTP-Body/t/04multipart.t
===================================================================
--- trunk/HTTP-Body/t/04multipart.t	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/t/04multipart.t	2008-02-23 14:53:13 UTC (rev 7449)
@@ -3,7 +3,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 55;
+use Test::More tests => 60;
 
 use Cwd;
 use HTTP::Body;
@@ -13,7 +13,7 @@
 
 my $path = catdir( getcwd(), 't', 'data', 'multipart' );
 
-for ( my $i = 1; $i <= 11; $i++ ) {
+for ( my $i = 1; $i <= 12; $i++ ) {
 
     my $test    = sprintf( "%.3d", $i );
     my $headers = YAML::LoadFile( catfile( $path, "$test-headers.yml" ) );
@@ -40,5 +40,5 @@
     is_deeply( $body->param, $results->{param}, "$test MultiPart param" );
     is_deeply( $body->upload, $results->{upload}, "$test MultiPart upload" );
     cmp_ok( $body->state, 'eq', 'done', "$test MultiPart state" );
-    cmp_ok( $body->length, '==', $headers->{'Content-Length'}, "$test MultiPart length" );
+    cmp_ok( $body->length, '==', $body->content_length, "$test MultiPart length" );
 }

Modified: trunk/HTTP-Body/t/05urlencoded.t
===================================================================
--- trunk/HTTP-Body/t/05urlencoded.t	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/t/05urlencoded.t	2008-02-23 14:53:13 UTC (rev 7449)
@@ -3,9 +3,10 @@
 use strict;
 use warnings;
 
-use Test::More tests => 10;
+use Test::More tests => 16;
 
 use Cwd;
+use Digest::MD5 qw(md5_hex);
 use HTTP::Body;
 use File::Spec::Functions;
 use IO::File;
@@ -13,7 +14,7 @@
 
 my $path = catdir( getcwd(), 't', 'data', 'urlencoded' );
 
-for ( my $i = 1; $i <= 2; $i++ ) {
+for ( my $i = 1; $i <= 3; $i++ ) {
 
     my $test    = sprintf( "%.3d", $i );
     my $headers = YAML::LoadFile( catfile( $path, "$test-headers.yml" ) );
@@ -31,5 +32,12 @@
     is_deeply( $body->param, $results->{param}, "$test UrlEncoded param" );
     is_deeply( $body->upload, $results->{upload}, "$test UrlEncoded upload" );
     cmp_ok( $body->state, 'eq', 'done', "$test UrlEncoded state" );
-    cmp_ok( $body->length, '==', $headers->{'Content-Length'}, "$test UrlEncoded length" );
+    cmp_ok( $body->length, '==', $body->content_length, "$test UrlEncoded length" );
+    
+    # Check trailing header on the chunked request
+    if ( $i == 3 ) {
+        my $content = IO::File->new( catfile( $path, "002-content.dat" ) );
+        $content->read( my $buf, 4096 );
+        is( $body->trailing_headers->header('Content-MD5'), md5_hex($buf), "$test trailing header ok" );
+    }
 }

Modified: trunk/HTTP-Body/t/06octetstream.t
===================================================================
--- trunk/HTTP-Body/t/06octetstream.t	2008-02-21 20:58:48 UTC (rev 7448)
+++ trunk/HTTP-Body/t/06octetstream.t	2008-02-23 14:53:13 UTC (rev 7449)
@@ -1,7 +1,7 @@
 use strict;
 use warnings;
 
-use Test::More tests => 8;
+use Test::More tests => 12;
 
 use Cwd;
 use HTTP::Body;
@@ -11,7 +11,7 @@
 
 my $path = catdir( getcwd(), 't', 'data', 'octetstream' );
 
-for ( my $i = 1 ; $i <= 2 ; $i++ ) {
+for ( my $i = 1 ; $i <= 3 ; $i++ ) {
 
     my $test = sprintf( "%.3d", $i );
     my $headers = YAML::LoadFile( catfile( $path, "$test-headers.yml" ) );
@@ -33,7 +33,7 @@
     cmp_ok( $body->state, 'eq', 'done', "$test UrlEncoded state" );
     cmp_ok(
         $body->length, '==',
-        $headers->{'Content-Length'},
+        $body->content_length,
         "$test UrlEncoded length"
     );
 }

Added: trunk/HTTP-Body/t/data/multipart/012-content.dat
===================================================================
--- trunk/HTTP-Body/t/data/multipart/012-content.dat	                        (rev 0)
+++ trunk/HTTP-Body/t/data/multipart/012-content.dat	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,75 @@
+1ce
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="text1"
+
+Ratione accusamus aspernatur aliquam
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="text2"
+
+
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="select"
+
+A
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="select"
+
+B
+-----------------------------7d534d1d60150
+Co
+1ce
+ntent-Disposition: form-data; name="textarea"
+
+Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.
+
+Molestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa.
+-----------------------------7d534d1d60150
+Content-
+1ce
+Disposition: form-data; name="upload"; filename="C:\Documents and Settings\Administrator\Desktop\hello.pl"
+Content-Type: text/plain
+
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print "Hello World :)\n";
+
+
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="upload"; filename=""
+Content-Type: application/octet-stream
+
+
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="upload1"; filename="C:\
+1ce
+Documents and Settings\Administrator\Desktop\hello.pl"
+Content-Type: text/plain
+
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print "Hello World :)\n";
+
+
+-----------------------------7d534d1d60150
+Content-Disposition: form-data; name="upload2"; filename="C:\Documents and Settings\Administrator\Desktop\hello.pl"
+Content-Type: text/plain
+
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+print "Hello World :)\n";
+
+
+-----------------------------7d534d1d60150-
+3
+-
+
+0


Property changes on: trunk/HTTP-Body/t/data/multipart/012-content.dat
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/multipart/012-headers.yml
===================================================================
--- trunk/HTTP-Body/t/data/multipart/012-headers.yml	                        (rev 0)
+++ trunk/HTTP-Body/t/data/multipart/012-headers.yml	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,4 @@
+---
+Transfer-Encoding: chunked
+Content-Type: multipart/form-data; boundary=---------------------------7d534d1d60150
+User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)


Property changes on: trunk/HTTP-Body/t/data/multipart/012-headers.yml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/multipart/012-results.yml
===================================================================
--- trunk/HTTP-Body/t/data/multipart/012-results.yml	                        (rev 0)
+++ trunk/HTTP-Body/t/data/multipart/012-results.yml	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,31 @@
+---
+body: ~
+param:
+  select:
+    - A
+    - B
+  text1: Ratione accusamus aspernatur aliquam
+  text2: ""
+  textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa."
+upload:
+  upload:
+    filename: C:\Documents and Settings\Administrator\Desktop\hello.pl
+    headers:
+      Content-Disposition: form-data; name="upload"; filename="C:\Documents and Settings\Administrator\Desktop\hello.pl"
+      Content-Type: text/plain
+    name: upload
+    size: 71
+  upload1:
+    filename: C:\Documents and Settings\Administrator\Desktop\hello.pl
+    headers:
+      Content-Disposition: form-data; name="upload1"; filename="C:\Documents and Settings\Administrator\Desktop\hello.pl"
+      Content-Type: text/plain
+    name: upload1
+    size: 71
+  upload2:
+    filename: C:\Documents and Settings\Administrator\Desktop\hello.pl
+    headers:
+      Content-Disposition: form-data; name="upload2"; filename="C:\Documents and Settings\Administrator\Desktop\hello.pl"
+      Content-Type: text/plain
+    name: upload2
+    size: 71


Property changes on: trunk/HTTP-Body/t/data/multipart/012-results.yml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/octetstream/003-content.dat
===================================================================
--- trunk/HTTP-Body/t/data/octetstream/003-content.dat	                        (rev 0)
+++ trunk/HTTP-Body/t/data/octetstream/003-content.dat	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,10 @@
+143
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+146
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+d1
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+a7
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+
+0


Property changes on: trunk/HTTP-Body/t/data/octetstream/003-content.dat
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/octetstream/003-headers.yml
===================================================================
--- trunk/HTTP-Body/t/data/octetstream/003-headers.yml	                        (rev 0)
+++ trunk/HTTP-Body/t/data/octetstream/003-headers.yml	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,4 @@
+---
+Transfer-Encoding: chunked
+Content-Type: application/x.atom+xml
+User-Agent: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312'


Property changes on: trunk/HTTP-Body/t/data/octetstream/003-headers.yml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/octetstream/003-results.dat
===================================================================
--- trunk/HTTP-Body/t/data/octetstream/003-results.dat	                        (rev 0)
+++ trunk/HTTP-Body/t/data/octetstream/003-results.dat	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa


Property changes on: trunk/HTTP-Body/t/data/octetstream/003-results.dat
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/urlencoded/003-content.dat
===================================================================
--- trunk/HTTP-Body/t/data/urlencoded/003-content.dat	                        (rev 0)
+++ trunk/HTTP-Body/t/data/urlencoded/003-content.dat	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,20 @@
+f9
+text1=Ratione+accusamus+aspernatur+aliquam&text2=%C3%A5%C3%A4%C3%B6%C3%A5%C3%A4%C3%B6&select=A&select=B&textarea=Voluptatem+cumque+voluptate+sit+recusandae+at.+Et+quas+facere+rerum+unde+esse.+Sit+est+et+voluptatem.+Vel+temporibus+velit+neque+odio+no
+7d
+n.%0D%0A%0D%0AMolestias+rerum+ut+sapiente+facere+repellendus+illo.+Eum+nulla+quis+aut.+Quidem+voluptas+vitae+ipsam+officia+vo
+3e
+luptatibus+eveniet.+Aspernatur+cupiditate+ratione+aliquam+quid
+1f
+em+corrupti.+Eos+sunt+rerum+non
+10
++optio+culpa.&en
+8
+coding=f
+4
+oo%3
+2
+Db
+2
+ar
+0
+Content-MD5: 7fd07d9cb09bfd205f057440be771540


Property changes on: trunk/HTTP-Body/t/data/urlencoded/003-content.dat
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/urlencoded/003-headers.yml
===================================================================
--- trunk/HTTP-Body/t/data/urlencoded/003-headers.yml	                        (rev 0)
+++ trunk/HTTP-Body/t/data/urlencoded/003-headers.yml	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,4 @@
+---
+Transfer-Encoding: chunked
+Content-Type: application/x-www-form-urlencoded
+User-Agent: 'Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/312.1 (KHTML, like Gecko) Safari/312'


Property changes on: trunk/HTTP-Body/t/data/urlencoded/003-headers.yml
___________________________________________________________________
Name: svn:keywords
   + Id

Added: trunk/HTTP-Body/t/data/urlencoded/003-results.yml
===================================================================
--- trunk/HTTP-Body/t/data/urlencoded/003-results.yml	                        (rev 0)
+++ trunk/HTTP-Body/t/data/urlencoded/003-results.yml	2008-02-23 14:53:13 UTC (rev 7449)
@@ -0,0 +1,11 @@
+---
+body: ~
+param:
+  select:
+    - A
+    - B
+  text1: Ratione accusamus aspernatur aliquam
+  text2: åäöåäö
+  textarea: "Voluptatem cumque voluptate sit recusandae at. Et quas facere rerum unde esse. Sit est et voluptatem. Vel temporibus velit neque odio non.\r\n\r\nMolestias rerum ut sapiente facere repellendus illo. Eum nulla quis aut. Quidem voluptas vitae ipsam officia voluptatibus eveniet. Aspernatur cupiditate ratione aliquam quidem corrupti. Eos sunt rerum non optio culpa."
+  encoding: foo=bar
+upload: {}


Property changes on: trunk/HTTP-Body/t/data/urlencoded/003-results.yml
___________________________________________________________________
Name: svn:keywords
   + Id




More information about the Catalyst-commits mailing list