diff options
author | franck cuny <franck@lumberjaph.net> | 2011-05-05 17:37:07 +0200 |
---|---|---|
committer | franck cuny <franck@lumberjaph.net> | 2011-05-05 17:37:07 +0200 |
commit | 80d23b8d1cb806f090d85fc8d31aa1c128fc457f (patch) | |
tree | 9c3251f36f93b730ec29bc668fea3ae60b7447af /lib | |
download | net-http-spore-middleware-opencalais-master.tar.gz |
create middleware for opencalais master
Diffstat (limited to '')
-rw-r--r-- | lib/Net/HTTP/Spore/Middleware/OpenCalais.pm | 37 |
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; |