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 | |
download | net-http-spore-middleware-opencalais-80d23b8d1cb806f090d85fc8d31aa1c128fc457f.tar.gz |
create middleware for opencalais master
-rw-r--r-- | dist.ini | 55 | ||||
-rw-r--r-- | lib/Net/HTTP/Spore/Middleware/OpenCalais.pm | 37 |
2 files changed, 92 insertions, 0 deletions
diff --git a/dist.ini b/dist.ini new file mode 100644 index 0000000..71f406a --- /dev/null +++ b/dist.ini @@ -0,0 +1,55 @@ +name = Net-HTTP-Spore-Middleware-OpenCalais +author = franck cuny <franck@lumberjaph.net> +license = Perl_5 +copyright_holder = franck cuny +copyright_year = 2011 + +; -- static meta-information +[AutoMetaResources] +bugtracker.github = user:franckcuny +repository.github = user:franckcuny +homepage = http://search.cpan.org/dist/%{dist} + +; -- fetch & generate files +[GatherDir] + +; -- tests +[NoTabsTests] +[EOLTests] +[CompileTests] +[CriticTests] +[MetaTests] +[PodCoverageTests] +[ExtraTests] + +; -- remove files +[PruneCruft] +[ManifestSkip] + +; -- get prereqs +[AutoPrereqs] + +; -- munge files +[NextRelease] +[PkgVersion] +[PodWeaver] +[Prepender] +copyright = 1 + +; -- dynamic meta information +; [InstallDirs] +[MetaProvides::Package] + +; -- generate meta files +[License] +[MakeMaker] +[MetaYAML] +[Readme] +[Manifest] + +; -- release +[ReadmeFromPod] +[CheckChangeLog] +first_version = 0.01 +[UploadToCPAN] +[Twitter] 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; |