EZID
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/EZID.pm view on Meta::CPAN
package EZID;
use Modern::Perl;
use Encode;
use HTTP::Request::Common;
use LWP::UserAgent;
use URI::Escape;
our $VERSION = '0.02';
sub new {
my ($class, $args) = @_;
$args //= {};
return unless (ref $args eq 'HASH');
my $self = {
_username => $args->{username},
_password => $args->{password},
};
return bless $self, $class;
}
sub _parse {
my ($data) = @_;
return map {
map {
my $a = $_;
$a =~ s/%([0-9A-F]{2})/pack("C", hex($1))/egi;
$a
} split(/: /, $_, 2)
} split(/\n/, $data)
}
sub get {
my ($self, $identifier) = @_;
return unless $identifier;
my $response;
my %metadata;
my $ua = LWP::UserAgent->new;
my $r = $ua->get("http://ezid.cdlib.org/id/$identifier");
if ($r->is_success) {
$response = { _parse($r->decoded_content) };
} else {
$self->{_error_msg} = $r->decoded_content;
}
return $response;
}
sub _escape {
(my $s = $_[0]) =~ s/([%:\r\n])/uri_escape($1)/eg;
return $s;
}
sub create {
my ($self, $identifier, $metadata) = @_;
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.628 second using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )