Catmandu-Importer-Parltrack/lib/Catmandu/Importer/Parltrack.pm
package Catmandu::Importer::Parltrack;
use strict;
use warnings;
use Catmandu::Sane;
use Moo;
use Types::Standard qw( Bool );
use URI::Template;
extends 'Catmandu::Importer::getJSON';
our $AUTHORITY = 'cpan:JONASS';
our $VERSION = '0.001';
has api => (
is => 'ro',
default => sub {'http://parltrack.euwiki.org'}
);
has '+url' => (
is => 'ro',
lazy => 1,
builder => sub {
URI::Template->new( $_[0]->api . '{/topic,reference}?format=json' );
}
);
has '+from' => (
is => 'ro',
lazy => 1,
builder => \&_build_from,
);
has dossier => (
is => 'ro',
);
has meps => (
is => 'ro',
isa => Bool,
);
has mep => (
is => 'ro',
);
has committee => (
is => 'ro',
);
sub _build_from
{
my ($self) = @_;
my $vars;
if ( $self->dossier ) {
$vars = { topic => 'dossier', reference => $self->dossier };
}
elsif ( $self->meps ) {
$vars = { topic => 'meps', reference => '' };
}
elsif ( $self->mep ) {
$vars = { topic => 'mep', reference => $self->mep };
}
elsif ( $self->committee ) {
$vars = { topic => 'committee', reference => $self->committee };
}
return ( $vars ? $self->url->process($vars) : undef );
}
sub request_hook
{
my ( $self, $line ) = @_;
if ( $line =~ /^\/([a-z]+)\/(.+)$/ ) {
return { topic => $1, reference => $2 };
}
return;
}
1;
__END__
=pod
=encoding UTF-8
=head1 NAME
Catmandu::Importer::Parltrack - Import from Parltrack
=head1 VERSION
version 0.01
=head1 SYNOPSIS
catmandu convert Parltrack --dossier "2011/0167(NLE)"
catmandu convert Parltrack --mep "Rebecca HARMS"
catmandu convert Parltrack --meps 1
echo '/dossier/2011/0167(NLE)' | catmandu convert Parltrack
echo '/mep/Rebecca HARMS' | catmandu convert Parltrack
=head1 DESCRIPTION
This L<Catmandu::Importer> queries Parltrack for entities.
=head1 CONFIGURATION
This importer extends L<Catmandu::Importer::getJSON>, so it can be configured
with options C<agent>, C<timeout>, C<headers>, C<proxy>, and C<dry>. Additional
options include:
=over
=item api
Parltrack API base URL. Default is C<http://parltrack.euwiki.org>.
=item dossier
=item meps
=item committee
=back
=head1 AUTHOR
Jonas Smedegaard
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Jonas Smedegaard.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut