summary refs log tree commit diff
path: root/lib/Net
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Net')
-rw-r--r--lib/Net/HTTP/Spore/Request.pm13
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);