NAME
WebService::Kramerius::API4 - Class to Kramerius v4+ API.
SYNOPSIS
use WebService::Kramerius::API4;
my $obj = WebService::Kramerius::API4->new(%params);
my $item_json = get_item($item_id)
my $item_children_json = get_item_children($item_id);
my $item_siblings_json = get_item_siblings($item_id);
my $item_streams_json = get_item_streams($item_id);
my $item_stream = get_item_streams_one($item_id, $stream_id);
my $item_image = get_item_image($item_id);
my $item_preview_image = get_item_preview($item_id);
my $thumb_image = get_item_thumb($item_id);
my $foxml_xml = get_item_foxml($item_id);
METHODS
new(%params)
-
Constructor.
library_url
Library URL. This parameter is required. Default value is undef.
output_dispatch
Output dispatch hash structure. Key is content-type and value is subroutine, which converts content to what do you want. Default value is blank hash array.
get_item($item_id)
-
Get item JSON structure. Returns JSON string when JSON output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_children($item_id)
-
Get item children JSON structure. Returns JSON string when JSON output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_siblings($item_id)
-
Get item siblings JSON structure. Returns JSON string when JSON output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_streams($item_id)
-
Get item streams JSON structure. Returns JSON string when JSON output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_streams_one($item_id, $stream_id)
-
Get item stream. Returns stream value when particular output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_image($item_id)
-
Get item image. Returns image when particular output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_preview($item_id)
-
Get item preview image. Returns image when particular output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_thumb($item_id)
-
Get item thumbnail image. Returns image when particular output dispatch doesn't set. Otherwise returns value from output dispatch.
get_item_foxml($item_id)
-
Get item foxml XML structure. Returns XML string when XML output dispatch doesn't set. Otherwise returns value from output dispatch.
ERRORS
new():
Parameter 'library_url' is required.
From Class::Utils::set_params():
Unknown parameter '%s'.
get_item():
Cannot get '%s' URL.
get_item_children():
Cannot get '%s' URL.
get_item_siblings():
Cannot get '%s' URL.
get_item_streams():
Cannot get '%s' URL.
get_item_streams_one():
Cannot get '%s' URL.
get_item_image():
Cannot get '%s' URL.
get_item_preview():
Cannot get '%s' URL.
get_item_thumb():
Cannot get '%s' URL.
get_item_foxml()
Cannot get '%s' URL.
EXAMPLE1
use strict;
use warnings;
use WebService::Kramerius::API4;
if (@ARGV < 2) {
print STDERR "Usage: $0 library_url work_id\n";
exit 1;
}
my $library_url = $ARGV[0];
my $work_id = $ARGV[1];
my $obj = WebService::Kramerius::API4->new(
'library_url' => $library_url,
);
# Get item JSON structure.
my $item_json = $obj->get_item($work_id);
print $item_json."\n";
# Output for 'http://kramerius.mzk.cz/' and '314994e0-490a-11de-ad37-000d606f5dc6'
# {"datanode":true,"context":[[{"pid":"uuid:5a2dd690-54b9-11de-8bcd-000d606f5dc6","model":"periodical"},{"pid":"uuid:303c91b0-490a-11de-921d-000d606f5dc6","model":"periodicalvolume"},{"pid":"uuid:bf1d5df0-49d8-11de-8cb4-000d606f5dc6","model":"periodicalitem"},{"pid":"uuid:314994e0-490a-11de-ad37-000d606f5dc6","model":"page"}]],"pid":"uuid:314994e0-490a-11de-ad37-000d606f5dc6","model":"page","handle":{"href":"http://kramerius.mzk.cz/search/handle/uuid:314994e0-490a-11de-ad37-000d606f5dc6"},"zoom":{"type":"zoomify","url":"http://kramerius.mzk.cz/search/zoomify/uuid:314994e0-490a-11de-ad37-000d606f5dc6"},"details":{"type":"TitlePage","pagenumber":"[1] \n "},"title":"[1]","iiif":"http://kramerius.mzk.cz/search/iiif/uuid:314994e0-490a-11de-ad37-000d606f5dc6","root_title":"Davidova houpačka","root_pid":"uuid:5a2dd690-54b9-11de-8bcd-000d606f5dc6","policy":"public"}
EXAMPLE2
use strict;
use warnings;
use Data::Printer;
use JSON;
use WebService::Kramerius::API4;
if (@ARGV < 2) {
print STDERR "Usage: $0 library_url work_id\n";
exit 1;
}
my $library_url = $ARGV[0];
my $work_id = $ARGV[1];
my $obj = WebService::Kramerius::API4->new(
'library_url' => $library_url,
'output_dispatch' => {
'application/json' => sub {
my $json = shift;
return JSON->new->decode($json);
},
},
);
# Get item JSON structure as Perl hash.
my $item_json = $obj->get_item($work_id);
p $item_json;
# Output for 'http://kramerius.mzk.cz/' and '314994e0-490a-11de-ad37-000d606f5dc6'
# \ {
# context [
# [0] [
# [0] {
# model "periodical",
# pid "uuid:5a2dd690-54b9-11de-8bcd-000d606f5dc6"
# },
# [1] {
# model "periodicalvolume",
# pid "uuid:303c91b0-490a-11de-921d-000d606f5dc6"
# },
# [2] {
# model "periodicalitem",
# pid "uuid:bf1d5df0-49d8-11de-8cb4-000d606f5dc6"
# },
# [3] {
# model "page",
# pid "uuid:314994e0-490a-11de-ad37-000d606f5dc6"
# }
# ]
# ],
# datanode JSON::PP::Boolean {
# Parents Types::Serialiser::BooleanBase
# public methods (0)
# private methods (0)
# internals: 1
# },
# details {
# pagenumber "[1]
# ",
# type "TitlePage"
# },
# handle {
# href "http://kramerius.mzk.cz/search/handle/uuid:314994e0-490a-11de-ad37-000d606f5dc6"
# },
# iiif "http://kramerius.mzk.cz/search/iiif/uuid:314994e0-490a-11de-ad37-000d606f5dc6",
# model "page",
# pid "uuid:314994e0-490a-11de-ad37-000d606f5dc6",
# policy "public",
# root_pid "uuid:5a2dd690-54b9-11de-8bcd-000d606f5dc6",
# root_title "Davidova houpačka",
# title "[1]",
# zoom {
# type "zoomify",
# url "http://kramerius.mzk.cz/search/zoomify/uuid:314994e0-490a-11de-ad37-000d606f5dc6"
# }
# }
EXAMPLE3
use strict;
use warnings;
use Data::Printer;
use JSON;
use WebService::Kramerius::API4;
if (@ARGV < 2) {
print STDERR "Usage: $0 library_url work_id\n";
exit 1;
}
my $library_url = $ARGV[0];
my $work_id = $ARGV[1];
my $obj = WebService::Kramerius::API4->new(
'library_url' => $library_url,
'output_dispatch' => {
'application/json' => sub {
my $json = shift;
return JSON->new->decode($json);
},
},
);
# Get item streams JSON structure as Perl hash.
my $item_streams_json = $obj->get_item_streams($work_id);
p $item_streams_json;
# Output for 'http://kramerius.mzk.cz/' and '314994e0-490a-11de-ad37-000d606f5dc6'
# \ {
# BIBLIO_MODS {
# label "BIBLIO_MODS description of current object",
# mimeType "text/xml"
# },
# DC {
# label "Dublin Core Record for this object",
# mimeType "text/xml"
# },
# IMG_FULL {
# label "",
# mimeType "image/jpeg"
# },
# IMG_FULL_ADM {
# label "Image administrative metadata",
# mimeType "text/xml"
# },
# IMG_PREVIEW {
# label "",
# mimeType "image/jpeg"
# },
# IMG_THUMB {
# label "",
# mimeType "image/jpeg"
# },
# TEXT_OCR {
# label "",
# mimeType "text/plain"
# },
# TEXT_OCR_ADM {
# label "Image administrative metadata",
# mimeType "text/xml"
# }
# }
DEPENDENCIES
Class::Utils, Error::Pure, LWP::UserAgent.
SEE ALSO
- WebService::Kramerius::API4::Struct
-
Class to Kramerius v4+ API, which returns Perl structures instead raw data.
REPOSITORY
https://github.com/tupinek/WebService-Kramerius-API4
AUTHOR
Michal Josef Špaček mailto:skim@cpan.org
LICENSE AND COPYRIGHT
© Michal Josef Špaček 2015-2017
BSD 2-Clause License
VERSION
0.01