minor fixes
[catagits/HTTP-Body.git] / lib / HTTP / Body / UrlEncoded.pm
CommitLineData
4f5db602 1package HTTP::Body::UrlEncoded;
32b29b79 2
3use strict;
4use base 'HTTP::Body';
5use bytes;
6
f4600b8f 7our $DECODE = qr/%([0-9a-fA-F]{2})/;
7e2df1d9 8
58050177 9sub spin {
10 my $self = shift;
11
7e2df1d9 12 return unless $self->length == $self->content_length;
13
14 for my $pair ( split( /[&;]/, $self->{buffer} ) ) {
15
16 my ( $name, $value ) = split( /=/, $pair );
17
18 next unless defined $name;
19 next unless defined $value;
20
7e2df1d9 21 $name =~ tr/+/ /;
f4600b8f 22 $name =~ s/$DECODE/chr(hex($1))/eg;
7e2df1d9 23 $value =~ tr/+/ /;
f4600b8f 24 $value =~ s/$DECODE/chr(hex($1))/eg;
7e2df1d9 25
26 $self->param( $name, $value );
27 }
58050177 28
7e2df1d9 29 $self->{buffer} = ''
f4600b8f 30 $self->{state} = 'done';
58050177 31}
32
32b29b79 331;