released 0.6
[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
aac7ca02 9=head1 NAME
10
38ad3df8 11HTTP::Body::UrlEncoded - HTTP Body UrlEncoded Parser
aac7ca02 12
13=head1 SYNOPSIS
14
15 use HTTP::Body::UrlEncoded;
16
17=head1 DESCRIPTION
18
19HTTP Body UrlEncoded Parser.
20
21=head1 METHODS
22
23=over 4
24
25=item spin
26
27=cut
28
58050177 29sub spin {
30 my $self = shift;
aac7ca02 31
7e2df1d9 32 return unless $self->length == $self->content_length;
33
34 for my $pair ( split( /[&;]/, $self->{buffer} ) ) {
aac7ca02 35
7e2df1d9 36 my ( $name, $value ) = split( /=/, $pair );
aac7ca02 37
7e2df1d9 38 next unless defined $name;
39 next unless defined $value;
aac7ca02 40
7e2df1d9 41 $name =~ tr/+/ /;
f4600b8f 42 $name =~ s/$DECODE/chr(hex($1))/eg;
7e2df1d9 43 $value =~ tr/+/ /;
aac7ca02 44 $value =~ s/$DECODE/chr(hex($1))/eg;
45
7e2df1d9 46 $self->param( $name, $value );
47 }
aac7ca02 48
49 $self->{buffer} = '';
f4600b8f 50 $self->{state} = 'done';
58050177 51}
52
aac7ca02 53=back
54
55=head1 AUTHOR
56
57Christian Hansen, C<ch@ngmedia.com>
58
59=head1 LICENSE
60
61This library is free software . You can redistribute it and/or modify
62it under the same terms as perl itself.
63
64=cut
65
32b29b79 661;