summary refs log tree commit diff
path: root/lib
diff options
context:
space:
mode:
authorfranck cuny <franck@lumberjaph.net>2011-05-05 17:37:07 +0200
committerfranck cuny <franck@lumberjaph.net>2011-05-05 17:37:07 +0200
commit80d23b8d1cb806f090d85fc8d31aa1c128fc457f (patch)
tree9c3251f36f93b730ec29bc668fea3ae60b7447af /lib
downloadnet-http-spore-middleware-opencalais-80d23b8d1cb806f090d85fc8d31aa1c128fc457f.tar.gz
create middleware for opencalais master
Diffstat (limited to 'lib')
-rw-r--r--lib/Net/HTTP/Spore/Middleware/OpenCalais.pm37
1 files changed, 37 insertions, 0 deletions
diff --git a/lib/Net/HTTP/Spore/Middleware/OpenCalais.pm b/lib/Net/HTTP/Spore/Middleware/OpenCalais.pm
new file mode 100644
index 0000000..fab78c7
--- /dev/null
+++ b/lib/Net/HTTP/Spore/Middleware/OpenCalais.pm
@@ -0,0 +1,37 @@
+package Net::HTTP::Spore::Middleware::OpenCalais;
+
+use Moose;
+use JSON;
+
+extends 'Net::HTTP::Spore::Middleware';
+
+has api_key => ( isa => 'Str', is => 'rw', predicate => 'has_api_key' );
+has content_type =>
+  ( isa => 'Str', is => 'rw', lazy => 1, default => 'text/raw' );
+
+has _json_parser => (
+    is      => 'rw',
+    isa     => 'JSON',
+    lazy    => 1,
+    default => sub { JSON->new->utf8(1)->allow_nonref },
+);
+
+sub call {
+    my ($self, $req) = @_;
+
+    $req->header('x-calais-licenseID' => $self->api_key);
+    $req->header('content-type' => $self->content_type);
+    $req->header('outputformat' => 'application/json');
+
+    return $self->response_cb(
+        sub{
+            my $res = shift;
+            if ($res->body){
+                my $content = $self->_json_parser->decode($res->body);
+                $res->body($content);
+            }
+        }
+    );
+}
+
+1;