summary refs log tree commit diff
path: root/lib/AnyEvent/Riak/Role
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/AnyEvent/Riak/Role/CVCB.pm24
-rw-r--r--lib/AnyEvent/Riak/Role/Client.pm12
-rw-r--r--lib/AnyEvent/Riak/Role/HTTPUtils.pm16
3 files changed, 20 insertions, 32 deletions
diff --git a/lib/AnyEvent/Riak/Role/CVCB.pm b/lib/AnyEvent/Riak/Role/CVCB.pm
index 74684c2..73812c2 100644
--- a/lib/AnyEvent/Riak/Role/CVCB.pm
+++ b/lib/AnyEvent/Riak/Role/CVCB.pm
@@ -1,27 +1,19 @@
 package AnyEvent::Riak::Role::CVCB;
 
-use Moose::Role;
+# ABSTRACT: return a default condvar and callback if none defined
 
-sub default_cb {
-    my ($self, $options) = @_;
-    return sub {
-        my $res = shift;
-        return $res;
-    };
-}
+use Moose::Role;
 
-sub cvcb {
+sub _cvcb {
     my ($self, $options) = @_;
 
-    my ($cv, $cb);
-    $cv = AE::cv;
-    if ($options->{callback}) {
-        $cb = delete $options->{callback};
-    }
-    else {
-        $cb = $self->default_cb();
+    my ($cv, $cb) = (AnyEvent->condvar, sub { return @_ });
+    if ($options && @$options) {
+        $cv = pop @$options if UNIVERSAL::isa($options->[-1], 'AnyEvent::CondVar');
+        $cb = pop @$options if ref $options->[-1] eq 'CODE';
     }
     ($cv, $cb);
 }
 
 1;
+
diff --git a/lib/AnyEvent/Riak/Role/Client.pm b/lib/AnyEvent/Riak/Role/Client.pm
deleted file mode 100644
index 0623e71..0000000
--- a/lib/AnyEvent/Riak/Role/Client.pm
+++ /dev/null
@@ -1,12 +0,0 @@
-package AnyEvent::Riak::Role::Client;
-
-use Moose::Role;
-
-has _client => (
-    is       => 'rw',
-    isa      => 'AnyEvent::Riak',
-    required => 1,
-    handles  => {host => 'host', client_id => 'client_id'}
-);
-
-1;
diff --git a/lib/AnyEvent/Riak/Role/HTTPUtils.pm b/lib/AnyEvent/Riak/Role/HTTPUtils.pm
index 399f369..701af5d 100644
--- a/lib/AnyEvent/Riak/Role/HTTPUtils.pm
+++ b/lib/AnyEvent/Riak/Role/HTTPUtils.pm
@@ -1,15 +1,23 @@
 package AnyEvent::Riak::Role::HTTPUtils;
 
+# ABSTRACT: HTTP methods
+
 use Moose::Role;
 
 use AnyEvent;
 use AnyEvent::HTTP;
 use URI;
-
 use MIME::Base64;
 
+has client_id => (is => 'rw', isa => 'Str', lazy_build => 1,);
+
+sub _build_client_id {
+    "perl_anyevent_riak" . encode_base64(int(rand(10737411824)), '');
+}
+
 sub _build_uri {
     my ($self, $path, $options) = @_;
+
     my $uri = URI->new($self->host);
     $uri->path(join("/", @$path));
     $uri->query_form($self->_build_query($options));
@@ -17,8 +25,8 @@ sub _build_uri {
 }
 
 sub _build_headers {
-    my ($self, $options) = @_;
-    my $headers = delete $options->{headers} || {};
+    my $self = shift;
+    my $headers = shift || {};
 
     $headers->{'X-Riak-ClientId'} = $self->client_id;
     $headers->{'Content-Type'}    = 'application/json'
@@ -28,7 +36,7 @@ sub _build_headers {
 
 sub _build_query {
     my ($self, $options) = @_;
-    my $valid_options = [qw/props keys returnbody/];
+    my $valid_options = [qw/props keys returnbody w r dw/];
     my $query;
     foreach (@$valid_options) {
         $query->{$_} = $options->{$_} if exists $options->{$_};