From 4285b5afee9e88d39f46a77b8b1ef296b2a77ace Mon Sep 17 00:00:00 2001 From: Robin Edwards Date: Tue, 9 Nov 2010 09:49:09 +0000 Subject: added expected status message --- lib/Net/Riak/Object.pm | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'lib/Net/Riak/Object.pm') diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm index 25275c5..714776c 100644 --- a/lib/Net/Riak/Object.pm +++ b/lib/Net/Riak/Object.pm @@ -143,9 +143,10 @@ sub populate { $self->data($http_response->content); if (!grep { $status == $_ } @$expected) { - croak "Expected status " + confess "Expected status " . (join(', ', @$expected)) - . ", received $status"; + . ", received: \n" + . $http_response->as_string; } if ($status == 404) { -- cgit v1.2.3 From d9a88ee0c309071cc74ca145b63ac9ccaf91d04d Mon Sep 17 00:00:00 2001 From: Robin Edwards Date: Tue, 9 Nov 2010 13:02:46 +0000 Subject: removed response string --- lib/Net/Riak/Object.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'lib/Net/Riak/Object.pm') diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm index 714776c..0d2aef7 100644 --- a/lib/Net/Riak/Object.pm +++ b/lib/Net/Riak/Object.pm @@ -145,8 +145,7 @@ sub populate { if (!grep { $status == $_ } @$expected) { confess "Expected status " . (join(', ', @$expected)) - . ", received: \n" - . $http_response->as_string; + . ", received $status" } if ($status == 404) { -- cgit v1.2.3 From ad258d98195be6ce280fd0229f19873eac518f5d Mon Sep 17 00:00:00 2001 From: franck cuny Date: Thu, 25 Nov 2010 11:25:54 +0100 Subject: fix the _build_link method (reported by gpha) --- lib/Net/Riak/Object.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'lib/Net/Riak/Object.pm') diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm index 0d2aef7..e84ad6d 100644 --- a/lib/Net/Riak/Object.pm +++ b/lib/Net/Riak/Object.pm @@ -225,8 +225,8 @@ sub _build_link { blessed $obj && $obj->isa('Net::Riak::Link') ? $obj : Net::Riak::Link->new( - bucket => $self->bucket, - key => $self->key, + bucket => $obj->bucket, + key => $obj->key, tag => $tag || $self->bucket->name, ); } -- cgit v1.2.3 From c48cbdea86f8bd2afe218584c02e527a201c29f7 Mon Sep 17 00:00:00 2001 From: Simon Wistow Date: Fri, 28 Jan 2011 11:13:18 -0800 Subject: Allow POSTing of objects to get an autogenerated key --- lib/Net/Riak/Object.pm | 25 ++++++++++++++++++------- 1 file changed, 18 insertions(+), 7 deletions(-) (limited to 'lib/Net/Riak/Object.pm') diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm index e84ad6d..5efe5f9 100644 --- a/lib/Net/Riak/Object.pm +++ b/lib/Net/Riak/Object.pm @@ -12,7 +12,7 @@ with 'Net::Riak::Role::Replica' => {keys => [qw/r w dw/]}; with 'Net::Riak::Role::Base' => {classes => [{name => 'bucket', required => 1}, {name => 'client', required => 1}]}; -has key => (is => 'rw', isa => 'Str', required => 1); +has key => (is => 'rw', isa => 'Str', required => 0); has status => (is => 'rw', isa => 'Int'); has exists => (is => 'rw', isa => 'Bool', default => 0,); has data => (is => 'rw', isa => 'Any', clearer => '_clear_data'); @@ -59,10 +59,14 @@ sub store { $dw ||= $self->dw; my $params = {returnbody => 'true', w => $w, dw => $dw}; + my $path = [$self->client->prefix, $self->bucket->name]; + my $method = 'POST'; + if (defined $self->key) { + push @$path, $self->key; + $method = 'PUT'; + } - my $request = - $self->client->new_request('PUT', - [$self->client->prefix, $self->bucket->name, $self->key], $params); + my $request = $self->client->new_request($method, $path, $params); $request->header('X-Riak-ClientID' => $self->client->client_id); $request->header('Content-Type' => $self->content_type); @@ -83,7 +87,7 @@ sub store { } my $response = $self->client->send_request($request); - $self->populate($response, [200, 204, 300]); + $self->populate($response, [200, 201, 204, 300]); $self; } @@ -164,8 +168,15 @@ sub populate { shift @siblings; $self->siblings(\@siblings); } - - if ($status == 200) { + + if ($status == 201) { + my $location = $http_response->header('location'); + my ($key) = ($location =~ m!/([^/]+)$!); + $self->key($key); + } + + + if ($status == 200 || $status == 201) { $self->content_type($http_response->content_type) if $http_response->content_type; $self->data(JSON::decode_json($self->data)) -- cgit v1.2.3