blob: d106254f64484e381bd961828f2347232aa9f7f5 (
plain) (
tree)
|
|
package AnyEvent::Riak::Object;
use Moose;
use AnyEvent::HTTP;
with qw/
AnyEvent::Riak::Role::Client
AnyEvent::Riak::Role::HTTPUtils
AnyEvent::Riak::Role::CVCB
/;
has key => (is => 'rw', isa => 'Str');
has _content => (is => 'rw', isa => 'HashRef', predicate => '_has_content');
has content_type => (is => 'rw', isa => 'Str', default => 'application/json');
has bucket => (is => 'rw', isa => 'AnyEvent::Riak::Bucket', required => 1);
has status => (is => 'rw', isa => 'Int');
has r => (is => 'rw', isa => 'Int');
sub get {
my ($self, %options) = @_;
my ($cv, $cb) = $self->cvcb(\%options);
if ($self->_has_content) {
$cv->send($self->_content);
}
else {
http_request(
GET => $self->_build_uri(
[$self->_client->path, $self->bucket->name, $self->key],
$options{params}
),
headers => $self->_build_headers($options{params}),
sub {
my ($body, $headers) = @_;
if ($body && $headers->{Status} == 200) {
my $content = JSON::decode_json($body);
$self->_content($content);
$cv->send($cb->($self->_content));
}
else {
$cv->send(undef);
}
}
);
}
return $cv;
}
no Moose;
1;
|