File Coverage

blib/lib/Catmandu/Fix/xID.pm
Criterion Covered Total %
statement 25 25 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod 0 1 0.0
total 32 33 96.9


line stmt bran cond sub pod time code
1             package Catmandu::Fix::xID;
2              
3 4     4   731990 use Catmandu::Sane;
  4         103098  
  4         35  
4 4     4   1734 use Catmandu::Util qw(:is);
  4         61413  
  4         1726  
5 4     4   1889 use Catmandu::OCLC::xID;
  4         20  
  4         151  
6 4     4   26 use Moo;
  4         9  
  4         40  
7 4     4   3951 use Catmandu::Fix::Has;
  4         5276  
  4         27  
8              
9             with 'Catmandu::Fix::Base';
10              
11             has path => (fix_arg => 1);
12             has type => (fix_arg => 1);
13             has method => (fix_arg => 1);
14              
15             sub emit {
16 13     13 0 111442 my ($self, $fixer) = @_;
17 13         100 my $path = $fixer->split_path($self->path);
18 13         147 my $key = pop @$path;
19 13         49 my $type = $self->type;
20 13         44 my $method = $self->method;
21              
22             $fixer->emit_walk_path($fixer->var, $path, sub {
23 13     13   1500 my $var = shift;
24             $fixer->emit_get_key($var, $key, sub {
25 13         293 my $var = shift;
26 13         138 "if (is_value(${var})) {"
27             ."use Catmandu::OCLC::xID;"
28             ."${var} = Catmandu::OCLC::xID::query(${var},'$type','$method');"
29             ."}";
30 13         150 });
31 13         309 });
32             }
33              
34             =head1 NAME
35              
36             Catmandu::Fix::xID - query the OCLC xID service
37              
38             =head1 SYNOPSIS
39              
40             marc_map('020a','my.isbn')
41             marc_map('022a','my.issn')
42             marc_map('001_','my.oclc')
43              
44             # Query an ISBN number for metadata
45             xID('my.isbn','xisbn','getMetadata')
46              
47             # Query an ISBN number for editions
48             xID('my.isbn','xisbn','getEditions')
49              
50             # Transform an ISBN to 13 digits
51             xID('my.isbn','xisbn','to13')
52              
53             # Transform an ISBN to 10 digits
54             xID('my.isbn','xisbn','to10')
55              
56             # Re-calculates the checksum digit of the request ISBN number
57             xID('my.isbn','xisbn','fixCheckSum')
58              
59             # Add '-' (hyphen) character to an ISBN number.
60             xID('my.isbn','xisbn','hyphen')
61              
62             # Retrieve metadata about an ISSN
63             xID('my.issn','xissn','getMetadata')
64              
65             # Retrieve a list of ISSNs in same group as the requested ISSN.
66             xID('my.issn','xissn','getEditions')
67              
68             # Retrieve a list of ISSNs in same group as the requested ISSN,
69             # as well as preceding/succeeding groups
70             xID('my.issn','xissn','getHistory')
71              
72             # Retrieve a list of ISSNs and its production form information
73             # in same group as the requested ISSN.
74             xID('my.issn','xissn','getForms')
75              
76             # Get metadata about a Standard Number
77             xID('my.oclc','xstandardNumber','getMetadata')
78              
79             # Retrieve all edition information
80             xID('my.oclc','xstandardNumber','getEditions')
81              
82             # Retrieve different variant OCLC numbers
83             xID('my.oclc','xstandardNumber','getVariants')
84              
85             =head1 DESCRIPTION
86              
87             Submit an identifer such as an ISBN, ISSN, or OCLC Number to the OCLC xID service, and
88             it returns a list of related identifiers and selected metadata.
89              
90             Access of 1000 queries/day is available to anyone.
91              
92             =head1 SEE ALSO
93              
94             L, L
95              
96             =cut
97              
98             1;