diff options
Diffstat (limited to '')
-rw-r--r-- | lib/Net/HTTP/Spore/Request.pm | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/lib/Net/HTTP/Spore/Request.pm b/lib/Net/HTTP/Spore/Request.pm index 8604f35..8a42e16 100644 --- a/lib/Net/HTTP/Spore/Request.pm +++ b/lib/Net/HTTP/Spore/Request.pm @@ -226,7 +226,7 @@ sub uri { my $path = URI::Escape::uri_escape($path_info || '', $path_escape_class); - if (defined $query_string) { + if (defined $query_string && length($query_string) > 0) { $path .= '?' . $query_string; } @@ -284,7 +284,7 @@ sub finalize { my $v = $params->[++$i]; my $modified = 0; - if ($path_info =~ s/\:$k/$v/) { + if ($path_info && $path_info =~ s/\:$k/$v/) { $modified++; } @@ -305,10 +305,17 @@ sub finalize { } if ($modified == 0) { - push @$query, $k.'='.$v; + if (defined $v) { + push @$query, $k.'='.$v; + }else{ + push @$query, $k; + } } } + # clean remaining :name in url + $path_info =~ s/:\w+//g if $path_info; + my $query_string; if (scalar @$query) { $query_string = join('&', @$query); |