diff options
author | Mainframe2008 <thg.bot@gmail.com> | 2013-02-01 12:46:04 +0100 |
---|---|---|
committer | Mainframe2008 <thg.bot@gmail.com> | 2013-02-01 12:46:04 +0100 |
commit | 2fd683a151a9a4bdaf64d44468fbde4fa5226602 (patch) | |
tree | 30828b26fec5018a0185b08cd44660a8a2dfbc2f /lib/Net/Riak/Role/REST | |
parent | Added comments for searching using secondary indexes (diff) | |
download | net-riak-2fd683a151a9a4bdaf64d44468fbde4fa5226602.tar.gz |
Added support for searching with secondary indexes
Diffstat (limited to 'lib/Net/Riak/Role/REST')
-rw-r--r-- | lib/Net/Riak/Role/REST/Object.pm | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/lib/Net/Riak/Role/REST/Object.pm b/lib/Net/Riak/Role/REST/Object.pm index fc45f3c..859e06b 100644 --- a/lib/Net/Riak/Role/REST/Object.pm +++ b/lib/Net/Riak/Role/REST/Object.pm @@ -1,6 +1,7 @@ package Net::Riak::Role::REST::Object; use Moose::Role; +use Data::Dumper; use JSON; sub store_object { @@ -32,13 +33,20 @@ sub store_object { $request->header('link' => $self->_links_to_header($object)); } + if ( $object->i2indexes) { + + foreach (keys %{$object->i2indexes}) { + $request->header(':x-riak-index-' . lc($_) => $object->i2indexes->{$_}); + } + } + if (ref $object->data && $object->content_type eq 'application/json') { $request->content(JSON::encode_json($object->data)); } else { $request->content($object->data); } - + my $response = $self->send_request($request); $self->populate_object($object, $response, [200, 201, 204, 300]); return $object; @@ -75,7 +83,8 @@ sub populate_object { $obj->exists(0); return if (!$http_response); - + + my $status = $http_response->code; $obj->data($http_response->content) @@ -91,6 +100,13 @@ sub populate_object { . (join(', ', @$expected)) . ", received: ".$http_response->status_line } + + $HTTP::Headers::TRANSLATE_UNDERSCORE = 0; + foreach ( $http_response->header_field_names ) { + next unless /^X-Riak-Index-(.+_bin)/; + $obj->i2index({ lc($1) => $http_response->header($_) }) + } + $HTTP::Headers::TRANSLATE_UNDERSCORE = 1; if ($status == 404) { $obj->clear; |