summary refs log tree commit diff
path: root/lib/Net/Riak/Role/REST
diff options
context:
space:
mode:
authorMainframe2008 <thg.bot@gmail.com>2013-02-01 12:46:04 +0100
committerMainframe2008 <thg.bot@gmail.com>2013-02-01 12:46:04 +0100
commit2fd683a151a9a4bdaf64d44468fbde4fa5226602 (patch)
tree30828b26fec5018a0185b08cd44660a8a2dfbc2f /lib/Net/Riak/Role/REST
parentAdded comments for searching using secondary indexes (diff)
downloadnet-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.pm20
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;