From fadaa377900cb47ccf3f78dd31e1989af0837863 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Mon, 19 Feb 2018 19:49:38 -0700 Subject: [PATCH 1/2] no need to escape/encode uri's --- lib/Paws/Net/RestXmlCaller.pm | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/Paws/Net/RestXmlCaller.pm b/lib/Paws/Net/RestXmlCaller.pm index 5396531898..642bd9d969 100755 --- a/lib/Paws/Net/RestXmlCaller.pm +++ b/lib/Paws/Net/RestXmlCaller.pm @@ -69,11 +69,9 @@ package Paws::Net::RestXmlCaller; { if ($attribute->does('Paws::API::Attribute::Trait::ParamInURI')) { my $att_name = $attribute->name; + $vars->{ $attribute->uri_name } = $call->$att_name; if ($uri_attrib_is_greedy{$att_name}) { - $vars->{ $attribute->uri_name } = uri_escape_utf8($call->$att_name, q[^A-Za-z0-9\-\._~/]); $uri_template =~ s{$att_name\+}{\+$att_name}g; - } else { - $vars->{ $attribute->uri_name } = $call->$att_name; } } } From 5925b0e5ac0c7acb1233bc0de4480b4c968f9680 Mon Sep 17 00:00:00 2001 From: Chris Duncan Date: Thu, 22 Feb 2018 00:08:08 -0700 Subject: [PATCH 2/2] decode double encoding of % by URI::Template --- lib/Paws/Net/RestXmlCaller.pm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/Paws/Net/RestXmlCaller.pm b/lib/Paws/Net/RestXmlCaller.pm index 642bd9d969..8c105c39dd 100755 --- a/lib/Paws/Net/RestXmlCaller.pm +++ b/lib/Paws/Net/RestXmlCaller.pm @@ -69,15 +69,21 @@ package Paws::Net::RestXmlCaller; { if ($attribute->does('Paws::API::Attribute::Trait::ParamInURI')) { my $att_name = $attribute->name; - $vars->{ $attribute->uri_name } = $call->$att_name; if ($uri_attrib_is_greedy{$att_name}) { - $uri_template =~ s{$att_name\+}{\+$att_name}g; + $vars->{ $attribute->uri_name } = uri_escape_utf8($call->$att_name, q[^A-Za-z0-9\-\._~/]); + $uri_template =~ s{$att_name\+}{\+$att_name}g; + } else { + $vars->{ $attribute->uri_name } = uri_escape_utf8($call->$att_name, q[^A-Za-z0-9\-\._~]); } } } my $t = URI::Template->new( $uri_template ); my $uri = $t->process($vars); + # URI::Template will double encode %, so undo it + my $uri_str = $uri->as_string; + $uri_str =~ s/\%25/\%/g; + $uri = URI->new( $uri_str ); return $uri; }