summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorGavin Carr <gavin@openfusion.com.au>2010-09-07 20:56:47 +0100
committerGavin Carr <gavin@openfusion.com.au>2010-09-07 20:56:47 +0100
commitf977241edf43e900d8776c16f80cbaf4858f2b91 (patch)
treebba6b2d42bd2d0f06b9b0945c476072e007e3be1 /lib
parentincrease LWP MaxLineLength to allow long riak Link http headers (diff)
downloadnet-riak-f977241edf43e900d8776c16f80cbaf4858f2b91.tar.gz
add keys => 'stream' support to get_properties
Diffstat (limited to 'lib')
-rw-r--r--lib/Net/Riak/Bucket.pm13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/Net/Riak/Bucket.pm b/lib/Net/Riak/Bucket.pm
index cd42316..9c246d5 100644
--- a/lib/Net/Riak/Bucket.pm
+++ b/lib/Net/Riak/Bucket.pm
@@ -89,7 +89,18 @@ sub get_properties {
         die "Error getting bucket properties: " . $response->status_line . "\n";
     }
 
-    return JSON::decode_json($response->content);
+    if ($params->{keys} ne 'stream') {
+        return JSON::decode_json($response->content);
+    }
+
+    # In streaming mode, aggregate keys from the multiple returned chunk objects
+    else {
+        my $json = JSON->new;
+        my $props = $json->incr_parse($response->content);
+        my @keys = map { $_->{keys} && ref $_->{keys} eq 'ARRAY' ? @{$_->{keys}} : () }
+            $json->incr_parse;
+        return { props => $props, keys => \@keys };
+    }
 }
 
 sub set_properties {