Skip to content

Commit

Permalink
mention that encoding/decoding can be disabled
Browse files Browse the repository at this point in the history
  • Loading branch information
kraih committed Nov 25, 2012
1 parent a42ea5e commit 02d13be
Show file tree
Hide file tree
Showing 8 changed files with 249 additions and 238 deletions.
24 changes: 12 additions & 12 deletions lib/Mojo/JSON/Pointer.pm
Expand Up @@ -42,9 +42,9 @@ Mojo::JSON::Pointer - JSON Pointers
use Mojo::JSON::Pointer;
my $p = Mojo::JSON::Pointer->new;
say $p->get({foo => [23, 'bar']}, '/foo/1');
say 'Contains "/foo".' if $p->contains({foo => [23, 'bar']}, '/foo');
my $pointer = Mojo::JSON::Pointer->new;
say $pointer->get({foo => [23, 'bar']}, '/foo/1');
say 'Contains "/foo".' if $pointer->contains({foo => [23, 'bar']}, '/foo');
=head1 DESCRIPTION
Expand All @@ -54,33 +54,33 @@ L<Mojo::JSON::Pointer> implements JSON Pointers.
=head2 C<contains>
my $success = $p->contains($data, '/foo/1');
my $success = $pointer->contains($data, '/foo/1');
Check if data structure contains a value that can be identified with the given
JSON Pointer.
# True
$p->contains({foo => 'bar', baz => [4, 5, 6]}, '/foo');
$p->contains({foo => 'bar', baz => [4, 5, 6]}, '/baz/2');
$pointer->contains({foo => 'bar', baz => [4, 5, 6]}, '/foo');
$pointer->contains({foo => 'bar', baz => [4, 5, 6]}, '/baz/2');
# False
$p->contains({foo => 'bar', baz => [4, 5, 6]}, '/bar');
$p->contains({foo => 'bar', baz => [4, 5, 6]}, '/baz/9');
$pointer->contains({foo => 'bar', baz => [4, 5, 6]}, '/bar');
$pointer->contains({foo => 'bar', baz => [4, 5, 6]}, '/baz/9');
=head2 C<get>
my $value = $p->get($data, '/foo/bar');
my $value = $pointer->get($data, '/foo/bar');
Extract value identified by the given JSON Pointer.
# "bar"
$p->get({foo => 'bar', baz => [4, 5, 6]}, '/foo');
$pointer->get({foo => 'bar', baz => [4, 5, 6]}, '/foo');
# "4"
$p->get({foo => 'bar', baz => [4, 5, 6]}, '/baz/0');
$pointer->get({foo => 'bar', baz => [4, 5, 6]}, '/baz/0');
# "6"
$p->get({foo => 'bar', baz => [4, 5, 6]}, '/baz/2');
$pointer->get({foo => 'bar', baz => [4, 5, 6]}, '/baz/2');
=head1 SEE ALSO
Expand Down
12 changes: 6 additions & 6 deletions lib/Mojo/Message.pm
Expand Up @@ -47,13 +47,13 @@ sub body_params {
return $self->{body_params} if $self->{body_params};

# Charset
my $p = $self->{body_params} = Mojo::Parameters->new;
$p->charset($self->content->charset || $self->default_charset);
my $params = $self->{body_params} = Mojo::Parameters->new;
$params->charset($self->content->charset || $self->default_charset);

# "x-application-urlencoded" and "application/x-www-form-urlencoded"
my $type = $self->headers->content_type || '';
if ($type =~ m!(?:x-application|application/x-www-form)-urlencoded!i) {
$p->parse($self->content->asset->slurp);
$params->parse($self->content->asset->slurp);
}

# "multipart/formdata"
Expand All @@ -68,11 +68,11 @@ sub body_params {
next if defined $filename;

# Form value
$p->append($name, $value);
$params->append($name, $value);
}
}

return $p;
return $params;
}

sub body_size { shift->content->body_size }
Expand Down Expand Up @@ -498,7 +498,7 @@ Access C<content> data or replace all subscribers of the C<read> event.
=head2 C<body_params>
my $p = $msg->body_params;
my $params = $msg->body_params;
C<POST> parameters extracted from C<x-application-urlencoded>,
C<application/x-www-form-urlencoded> or C<multipart/form-data> message body,
Expand Down
4 changes: 2 additions & 2 deletions lib/Mojo/Message/Request.pm
Expand Up @@ -396,7 +396,7 @@ so it should not be called before the entire request body has been received.
=head2 C<params>
my $p = $req->params;
my $params = $req->params;
All C<GET> and C<POST> parameters, usually a L<Mojo::Parameters> object. Note
that this method caches all data, so it should not be called before the entire
Expand Down Expand Up @@ -426,7 +426,7 @@ Proxy URL for request.
=head2 C<query_params>
my $p = $req->query_params;
my $params = $req->query_params;
All C<GET> parameters, usually a L<Mojo::Parameters> object.
Expand Down
63 changes: 33 additions & 30 deletions lib/Mojo/Parameters.pm
Expand Up @@ -202,12 +202,12 @@ Mojo::Parameters - Parameters
use Mojo::Parameters;
# Parse
my $p = Mojo::Parameters->new('foo=bar&baz=23');
say $p->param('baz');
my $params = Mojo::Parameters->new('foo=bar&baz=23');
say $params->param('baz');
# Build
my $p = Mojo::Parameters->new(foo => 'bar', baz => 23);
say "$p";
my $params = Mojo::Parameters->new(foo => 'bar', baz => 23);
say "$params";
=head1 DESCRIPTION
Expand All @@ -219,15 +219,18 @@ L<Mojo::Parameters> implements the following attributes.
=head2 C<charset>
my $charset = $p->charset;
$p = $p->charset('UTF-8');
my $charset = $params->charset;
$params = $params->charset('UTF-8');
Charset used for encoding and decoding parameters, defaults to C<UTF-8>.
# Disable encoding and decoding
$params->charset(undef);
=head2 C<pair_separator>
my $separator = $p->pair_separator;
$p = $p->pair_separator(';');
my $separator = $params->pair_separator;
$params = $params->pair_separator(';');
Separator for parameter pairs, defaults to C<&>.
Expand All @@ -238,19 +241,19 @@ following new ones.
=head2 C<new>
my $p = Mojo::Parameters->new;
my $p = Mojo::Parameters->new('foo=b%3Bar&baz=23');
my $p = Mojo::Parameters->new(foo => 'b;ar');
my $p = Mojo::Parameters->new(foo => ['ba;r', 'b;az']);
my $p = Mojo::Parameters->new(foo => ['ba;r', 'b;az'], bar => 23);
my $params = Mojo::Parameters->new;
my $params = Mojo::Parameters->new('foo=b%3Bar&baz=23');
my $params = Mojo::Parameters->new(foo => 'b;ar');
my $params = Mojo::Parameters->new(foo => ['ba;r', 'b;az']);
my $params = Mojo::Parameters->new(foo => ['ba;r', 'b;az'], bar => 23);
Construct a new L<Mojo::Parameters> object.
=head2 C<append>
$p = $p->append(foo => 'ba;r');
$p = $p->append(foo => ['ba;r', 'b;az']);
$p = $p->append(foo => ['ba;r', 'b;az'], bar => 23);
$params = $params->append(foo => 'ba;r');
$params = $params->append(foo => ['ba;r', 'b;az']);
$params = $params->append(foo => ['ba;r', 'b;az'], bar => 23);
Append parameters.
Expand All @@ -265,42 +268,42 @@ Append parameters.
=head2 C<clone>
my $p2 = $p->clone;
my $params2 = $params->clone;
Clone parameters.
=head2 C<merge>
$p = $p->merge(Mojo::Parameters->new(foo => 'b;ar', baz => 23));
$params = $params->merge(Mojo::Parameters->new(foo => 'b;ar', baz => 23));
Merge L<Mojo::Parameters> objects.
=head2 C<param>
my @names = $p->param;
my $foo = $p->param('foo');
my @foo = $p->param('foo');
my $foo = $p->param(foo => 'ba;r');
my @foo = $p->param(foo => qw(ba;r ba;z));
my @names = $params->param;
my $foo = $params->param('foo');
my @foo = $params->param('foo');
my $foo = $params->param(foo => 'ba;r');
my @foo = $params->param(foo => qw(ba;r ba;z));
Check and replace parameter values.
=head2 C<params>
my $params = $p->params;
$p = $p->params([foo => 'b;ar', baz => 23]);
my $array = $params->params;
$params = $params->params([foo => 'b;ar', baz => 23]);
Parsed parameters.
=head2 C<parse>
$p = $p->parse('foo=b%3Bar&baz=23');
$params = $params->parse('foo=b%3Bar&baz=23');
Parse parameters.
=head2 C<remove>
$p = $p->remove('foo');
$params = $params->remove('foo');
Remove parameters.
Expand All @@ -309,7 +312,7 @@ Remove parameters.
=head2 C<to_hash>
my $hash = $p->to_hash;
my $hash = $params->to_hash;
Turn parameters into a hash reference.
Expand All @@ -318,8 +321,8 @@ Turn parameters into a hash reference.
=head2 C<to_string>
my $string = $p->to_string;
my $string = "$p";
my $string = $params->to_string;
my $string = "$params";
Turn parameters into a string.
Expand Down
3 changes: 3 additions & 0 deletions lib/Mojo/Path.pm
Expand Up @@ -131,6 +131,9 @@ L<Mojo::Path> implements the following attributes.
Charset used for encoding and decoding, defaults to C<UTF-8>.
# Disable encoding and decoding
$path->charset(undef);
=head2 C<leading_slash>
my $leading_slash = $path->leading_slash;
Expand Down
17 changes: 8 additions & 9 deletions lib/Mojo/UserAgent/Transactor.pm
Expand Up @@ -39,14 +39,14 @@ sub form {
$encoding = undef if ref $encoding;

# Parameters
my $p = Mojo::Parameters->new;
$p->charset($encoding) if defined $encoding;
my $params = Mojo::Parameters->new;
$params->charset($encoding) if defined $encoding;
my $multipart;
for my $name (sort keys %$form) {
my $value = $form->{$name};

# Array
if (ref $value eq 'ARRAY') { $p->append($name, $_) for @$value }
if (ref $value eq 'ARRAY') { $params->append($name, $_) for @$value }

# Hash
elsif (ref $value eq 'HASH') {
Expand All @@ -66,11 +66,11 @@ sub form {
$value->{file} = Mojo::Asset::Memory->new->add_chunk($content);
}

push @{$p->params}, $name, $value;
push @{$params->params}, $name, $value;
}

# Single value
else { $p->append($name, $value) }
else { $params->append($name, $value) }
}

# New transaction
Expand All @@ -81,15 +81,15 @@ sub form {
my $headers = $req->headers;
$headers->content_type('multipart/form-data') if $multipart;
if (($headers->content_type // '') eq 'multipart/form-data') {
my $parts = $self->_multipart($encoding, $p->to_hash);
my $parts = $self->_multipart($encoding, $params->to_hash);
$req->content(
Mojo::Content::MultiPart->new(headers => $headers, parts => $parts));
}

# Urlencoded
else {
$headers->content_type('application/x-www-form-urlencoded');
$req->body($p->to_string);
$req->body($params->to_string);
}

return $tx;
Expand Down Expand Up @@ -184,8 +184,7 @@ sub websocket {
$req->url($abs->scheme($proto eq 'wss' ? 'https' : 'http')) if $proto;

# Handshake
Mojo::Transaction::WebSocket->new(handshake => $tx, masked => 1)
->client_handshake;
Mojo::Transaction::WebSocket->new(handshake => $tx)->client_handshake;

return $tx;
}
Expand Down

0 comments on commit 02d13be

Please sign in to comment.