summary refs log tree commit diff
path: root/lib/AnyEvent/Riak.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AnyEvent/Riak.pm')
-rw-r--r--lib/AnyEvent/Riak.pm27
1 files changed, 26 insertions, 1 deletions
diff --git a/lib/AnyEvent/Riak.pm b/lib/AnyEvent/Riak.pm
index 9292d4b..0f9d66e 100644
--- a/lib/AnyEvent/Riak.pm
+++ b/lib/AnyEvent/Riak.pm
@@ -53,7 +53,7 @@ sub fetch {
     my ( $self, $bucket, $key, $r ) = @_;
     $r = $self->{r} || 2 if !$r;
     return $self->_request( 'GET',
-        $self->_build_uri( [ $bucket, $key ], { r =>  $r} ), '200' );
+        $self->_build_uri( [ $bucket, $key ], { r => $r } ), '200' );
 }
 
 sub store {
@@ -88,6 +88,25 @@ sub delete {
         $self->_build_uri( [ $bucket, $key ], { dw => $rw } ), 204 );
 }
 
+sub walk {
+    my ( $self, $bucket, $key, $spec ) = @_;
+    my $path = $self->_build_uri( [ $bucket, $key ] );
+    $path .= $self->_build_spec($spec);
+    return $self->_request( 'GET', $path, 200 );
+}
+
+sub _build_spec {
+    my ( $self, $spec ) = @_;
+    my $acc = '/';
+    foreach my $item (@$spec) {
+        $acc
+            .= ( $item->{bucket} || '_' ) . ','
+            . ( $item->{tag} || '_' ) . ','
+            . ( $item->{acc} || '_' ) . '/';
+    }
+    return $acc;
+}
+
 sub _build_uri {
     my ( $self, $path, $query ) = @_;
     my $uri = URI->new( $self->{host} );
@@ -155,6 +174,12 @@ AnyEvent::Riak - Non-blocking Riak client
 
 AnyEvent::Riak is a non-blocking riak client using anyevent.
 
+=head2 METHODS
+
+=over 4
+
+=back
+
 =head1 AUTHOR
 
 franck cuny E<lt>franck@lumberjaph.netE<gt>