App-Kramerius-V4
view release on metacpan or search on metacpan
package App::Kramerius::V4;
use strict;
use warnings;
use Class::Utils qw(set_params);
use Data::Kramerius;
use Error::Pure qw(err);
use Getopt::Std;
use IO::Barf qw(barf);
use JSON::XS;
use LWP::UserAgent;
our $VERSION = 0.02;
# Constructor.
sub new {
my ($class, @params) = @_;
# Create object.
my $self = bless {}, $class;
# LWP::UserAgent object.
$self->{'lwp_user_agent'} = undef;
# Process parameters.
set_params($self, @params);
$self->{'_kramerius'} = Data::Kramerius->new;
if (defined $self->{'lwp_user_agent'}) {
if (! $self->{'lwp_user_agent'}->isa('LWP::UserAgent')) {
err "Parameter 'lwp_user_agent' must be a LWP::UserAgent object.";
}
} else {
$self->{'lwp_user_agent'} = LWP::UserAgent->new;
$self->{'lwp_user_agent'}->agent(__PACKAGE__.'/'.$VERSION);
}
# Object.
return $self;
}
# Run.
sub run {
my $self = shift;
# Process arguments.
$self->{'_opts'} = {
'h' => 0,
'o' => undef,
'q' => 0,
};
if (! getopts('ho:q', $self->{'_opts'}) || @ARGV < 2
|| $self->{'_opts'}->{'h'}) {
print STDERR "Usage: $0 [-h] [-o out_file] [-q] [--version] kramerius_id document_uuid\n";
print STDERR "\t-h\t\tHelp.\n";
print STDERR "\t-o out_file\tOutput file.\n";
print STDERR "\t-q\t\tQuiet mode.\n";
print STDERR "\t--version\tPrint version.\n";
print STDERR "\tkramerius_id\tKramerius system id. e.g. ".
"mzk\n";
print STDERR "\tdocument_uuid\tDocument UUID in Kramerius system\n";
return 1;
}
$self->{'_kramerius_id'} = shift @ARGV;
$self->{'_doc_uuid'} = shift @ARGV;
$self->{'_kramerius_obj'} = $self->{'_kramerius'}->get($self->{'_kramerius_id'});
if ($self->{'_kramerius_obj'}->version != 4) {
=head1 METHODS
=head2 C<new>
my $app = App::Kramerius::V4->new;
Constructor.
Returns instance of object.
=head2 C<run>
my $exit_code = $app->run;
Run.
Returns 1 for error, 0 for success.
=head1 ERRORS
new():
Parameter 'lwp_user_agent' must be a LWP::UserAgent object.
run():
Cannot download '%s'.
Cannot decode content of '%s' as JSON.
Kramerius system for '%s' isn't version 4 of API.
Object with '%s' isn't document.
Unsupported image format '%s'.
Unsupported image format. Unknown issue.
=head1 EXAMPLE
use strict;
use warnings;
use App::Kramerius::V4;
# Arguments.
@ARGV = (
'mzk',
'224d66f8-f48e-4a92-b41e-87c88a076dc0',
);
# Run.
exit App::Kramerius::V4->new->run;
# Output like:
# Download http://kramerius.mzk.cz/search/api/v5.0/item/uuid:224d66f8-f48e-4a92-b41e-87c88a076dc0/streams
# Download http://kramerius.mzk.cz/search/api/v5.0/item/uuid:224d66f8-f48e-4a92-b41e-87c88a076dc0/full
# Save 224d66f8-f48e-4a92-b41e-87c88a076dc0.jpg
=head1 DEPENDENCIES
L<Class::Utils>,
L<Data::Kramerius>,
L<Error::Pure>,
L<Getopt::Std>,
L<IO::Barf>,
L<JSON::XS>,
L<LWP::UserAgent>.
=head1 SEE ALSO
=over
=item L<App::Kramerius::URI>
Base class for kramerius-uri script.
=item L<Data::Kramerius>
Information about all Kramerius systems.
=back
=head1 REPOSITORY
L<https://github.com/michal-josef-spacek/App-Kramerius-V4>
=head1 AUTHOR
Michal Josef Å paÄek L<mailto:skim@cpan.org>
L<http://skim.cz>
=head1 LICENSE AND COPYRIGHT
© 2021 Michal Josef Å paÄek
BSD 2-Clause License
=head1 VERSION
0.02
=cut
( run in 0.525 second using v1.01-cache-2.11-cpan-39bf76dae61 )