EZID

 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 distribution
 view release on metacpan -  search on metacpan

( run in 1.628 second using v1.00-cache-2.02-grep-82fe00e-cpan-f5108d614456 )