summaryrefslogtreecommitdiff
path: root/lib/Net/Riak/Role/PBC
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/Net/Riak/Role/PBC.pm1
-rw-r--r--lib/Net/Riak/Role/PBC/Meta.pm24
-rw-r--r--lib/Net/Riak/Role/PBC/Object.pm9
3 files changed, 33 insertions, 1 deletions
diff --git a/lib/Net/Riak/Role/PBC.pm b/lib/Net/Riak/Role/PBC.pm
index bc32e3b..775976e 100644
--- a/lib/Net/Riak/Role/PBC.pm
+++ b/lib/Net/Riak/Role/PBC.pm
@@ -8,6 +8,7 @@ with qw(
Net::Riak::Role::PBC::Bucket
Net::Riak::Role::PBC::MapReduce
Net::Riak::Role::PBC::Link
+ Net::Riak::Role::PBC::Meta
Net::Riak::Role::PBC::Object);
use Net::Riak::Types 'Socket';
diff --git a/lib/Net/Riak/Role/PBC/Meta.pm b/lib/Net/Riak/Role/PBC/Meta.pm
new file mode 100644
index 0000000..b04ec81
--- /dev/null
+++ b/lib/Net/Riak/Role/PBC/Meta.pm
@@ -0,0 +1,24 @@
+package Net::Riak::Role::PBC::Meta;
+
+use Moose::Role;
+
+sub _populate_metas {
+ my ($self, $object, $metas) = @_;
+
+ for my $meta (@$metas) {
+ $object->set_meta( $meta->key, $meta->value );
+ }
+}
+
+sub _metas_for_message {
+ my ($self, $object) = @_;
+
+ my @out;
+ while ( my ( $k, $v ) = each %{ $object->metadata } ) {
+ push @out, { key => $k, value => $v };
+ }
+ return \@out;
+
+}
+
+1;
diff --git a/lib/Net/Riak/Role/PBC/Object.pm b/lib/Net/Riak/Role/PBC/Object.pm
index f1a82a5..280956c 100644
--- a/lib/Net/Riak/Role/PBC/Object.pm
+++ b/lib/Net/Riak/Role/PBC/Object.pm
@@ -16,13 +16,16 @@ sub store_object {
my $content = {
content_type => $object->content_type,
value => $value,
- usermeta => undef
};
if ($object->has_links) {
$content->{links} = $self->_links_for_message($object);
}
+ if ($object->has_meta) {
+ $content->{usermeta} = $self->_metas_for_message($object);
+ }
+
$self->send_message(
PutReq => {
bucket => $object->bucket->name,
@@ -87,6 +90,10 @@ sub populate_object {
$self->_populate_links($object, $content->links);
}
+ if($content->usermeta) {
+ $self->_populate_metas($object, $content->usermeta);
+ }
+
my $data = ($object->content_type eq 'application/json')
? JSON::decode_json($content->value) : $content->value;