Skip to content

Commit

Permalink
w r and dw can be set
Browse files Browse the repository at this point in the history
  • Loading branch information
fcuny committed Dec 13, 2009
1 parent 68a610f commit 44c205e
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 22 deletions.
40 changes: 22 additions & 18 deletions lib/AnyEvent/Riak.pm
Expand Up @@ -38,50 +38,54 @@ sub set_bucket {
$schema->{write_mask} = $schema->{read_mask}; $schema->{write_mask} = $schema->{read_mask};
} }


$self->_request('PUT', $self->_build_uri([$bucket]), '204', $self->_request(
encode_json{schema => $schema}); 'PUT', $self->_build_uri( [$bucket] ),
'204', encode_json { schema => $schema }
);
} }


sub list_bucket { sub list_bucket {
my ( $self, $bucket ) = @_; my ( $self, $bucket ) = @_;
return $self->_request('GET', $self->_build_uri([$bucket]), '200'); return $self->_request( 'GET', $self->_build_uri( [$bucket] ), '200' );
} }


sub fetch { sub fetch {
my ($self, $bucket, $key) = @_; my ( $self, $bucket, $key, $r ) = @_;
return $self->_request('GET', $self->_build_uri([$bucket, $key]), '200'); $r = $self->{r} || 2 if !$r;
return $self->_request( 'GET',
$self->_build_uri( [ $bucket, $key ], { r => $r} ), '200' );
} }


sub store { sub store {
my ( $self, $object ) = @_; my ( $self, $object, $w, $dw, ) = @_;

$w = $self->{w} || 2 if !$w;
$dw = $self->{dw} || 2 if !$dw;


my $bucket = $object->{bucket}; my $bucket = $object->{bucket};
my $key = $object->{key}; my $key = $object->{key};
$object->{links} = [] if !exists $object->{links};

return $self->_request( return $self->_request(
'PUT', 'PUT',
$self->_build_uri( $self->_build_uri(
[ $bucket, $key ], [ $bucket, $key ],
{ {
dw => 2, w => $w,
dw => $dw,
returnbody => 'true' returnbody => 'true'
} }
), ),
'200', '200',
encode_json $object); encode_json $object);
} }


sub fetch {
my ( $self, $bucket, $key, ) = @_;

return $self->_request( 'GET',
$self->_build_uri( [ $bucket, $key ], { r => 2 } ), '200' );
}

sub delete { sub delete {
my ( $self, $bucket, $key ) = @_; my ( $self, $bucket, $key, $rw ) = @_;


$rw = $self->{rw} || 2 if !$rw;
return $self->_request( 'DELETE', return $self->_request( 'DELETE',
$self->_build_uri( [ $bucket, $key ], { dw => 2 } ), 204 ); $self->_build_uri( [ $bucket, $key ], { dw => $rw } ), 204 );
} }


sub _build_uri { sub _build_uri {
Expand All @@ -103,8 +107,8 @@ sub _request {
: return $cv->send(1); : return $cv->send(1);
} }
else { else {
return $cv->send( return $cv->croak(
$headers->{Status} . ' : ' . $headers->{Reason} ); encode_json( [ $headers->{Status}, $headers->{Reason} ] ) );
} }
}; };
if ($body) { if ($body) {
Expand Down
12 changes: 8 additions & 4 deletions t/basic.t
@@ -1,6 +1,7 @@
use strict; use strict;
use warnings; use warnings;
use Test::More; use Test::More;
use JSON::XS;
use Test::Exception; use Test::Exception;
use AnyEvent::Riak; use AnyEvent::Riak;


Expand All @@ -18,14 +19,17 @@ ok my $new_bucket


my $value = { my $value = {
bucket => 'foo', bucket => 'foo',
key => 'baz', key => 'bar',
object => { foo => "bar" }, object => { foo => "bar", baz => 1 },
links => [] links => []
}; };


ok my $res = $jiak->store($value)->recv, '... set a new key'; ok my $res = $jiak->store($value)->recv, '... set a new key';


ok $res = $jiak->fetch( 'foo', 'baz' )->recv, '... fetch our new key'; ok $res = $jiak->fetch( 'foo', 'bar' )->recv, '... fetch our new key';
ok $res = $jiak->delete( 'foo', 'baz' )->recv, '... delete our key'; ok $res = $jiak->delete( 'foo', 'bar' )->recv, '... delete our key';

dies_ok { $jiak->fetch( 'foo', 'foo' )->recv } '... dies when error';
like $@, qr/404/, '... 404 response';


done_testing(); done_testing();

0 comments on commit 44c205e

Please sign in to comment.