Within the Catmandu framework different kinds of importers have been implemented
-
those for different Sources like arXiv, Pubmed, PloS or in general those with an OAI-Interface
Since Catmandu is designed for in a way, that can be extended… So in this little Tutorial we are going to create our own importer module Catmandu::Importer::EuroPMC.
Starting with a module
First of all, let us remember that
1. importers have to be within the namespace *Catmandu::Importer::*
2. Catmandu uses *Module::Build* as building tool
$ cpanm Module::Build Module::Starter
$ module-starter --builder="Module::Build" --module=Catmandu::Importer::EuroPMC --author="Vitali" /
-- email="vitali@example.com"
Now, change directory to Catmandu-Importer-EuroPMC and open the file lib/Catmandu/Importer/EuroPMC.pm.
Structure of an importer module
package Catmandu::Importer::EuroPMC;
use Catmandu::Sane;
use Moo;
with 'Catmandu::Importer';
use constant BASE_URL => 'http://www.ebi.ac.uk/europepmc/webservices/rest';
has base => (is => 'ro', default => sub { return BASE_URL; });
has source => (is => 'ro', default => sub { return "MED"; });
has query => (is => 'ro', required => 1);
# public method
sub generator {
my ($self) = @_;
my $request = $self->base . "/" . $self->source . "/" . $self->query;
# perform get request ....
return $hashref;
}
1;
More insights in Catmandu will be dicussed in later posts.