package WebService::ILS::JSON;
use Modern::Perl;
=encoding utf-8
=head1 NAME
WebService::ILS::JSON - WebService::ILS module for services with JSON API
=head1 DESCRIPTION
To be subclassed
See L<
WebService::ILS>
=cut
use Carp;
use HTTP::Request::Common;
use JSON qw(encode_json);
use URI;
use parent qw(WebService::ILS);
sub with_get_request {
my $self = shift;
my $callback = shift
n::GET( $uri );
my $response = $self->_request_with_auth($request);
return $self->process_json_response($response, $callback);
}
sub with_delete_request {
my $self = shift;
my $callba
=> "true"};
}
my $url = $self->circulation_action_url("/holds");
return $self->with_json_request(
\&_basic_callback,
sub {
my ($data) = @_;
if ($d
}
}
my $url = $self->circulation_action_url("/checkouts");
return $self->with_json_request(
\&_basic_callback,
undef,
$url,
{fields => _build_checko
my $url = $self->circulation_action_url("/checkouts/$item_id/formats");
return $self->with_json_request(
\&_basic_callback,
sub {
my ($data) = @_;
die "$
package WebService::ILS::XML;
use Modern::Perl;
=encoding utf-8
=head1 NAME
WebService::ILS::JSON - WebService::ILS module for services with XML API
=head1 DESCRIPTION
To be subclassed
See L<We
e::ILS>
=cut
use Carp;
use HTTP::Request::Common;
use URI::Escape;
use JSON qw(to_json);
use parent qw(WebService::ILS::JSON);
use constant API_VERSION => "v1";
use constant BASE_DOMAIN => "rbdigi
user_agent->request( $request );
$self->check_response($response);
return $self->process_json_response($response, sub {
my ($data) = @_;
die "No data\n" unless $data;
$self->_request_with_auth($request);
unless ($response->is_success) {
$self->process_json_error_response($response, sub {
my ($data) = @_;
if (my $message = $data-
ILS>
=cut
use Carp;
use HTTP::Request::Common;
use URI::Escape;
use parent qw(WebService::ILS::JSON);
use constant API_VERSION => "v1";
use constant DISCOVERY_API_URL => "http://api.overdrive.com
_request(\&_basic_callback, $url, $get_params);
}
sub _error_from_json {
my $self = shift;
my $data = shift or croak "No json data";
my $error = join " ", grep defined($_), $data->{errorC
> $self->library_id,
);
my $req = HTTP::Request::Common::POST( $url );
return $self->_json_request_content($req, \%params);
}
sub title_url {
my $self = shift;
my $isbn = shift or
ams::Check;
use LWP::UserAgent;
use HTTP::Status qw(:constants);
use MIME::Base64 qw();
use JSON qw(from_json);
our $DEBUG;
my %CONSTRUCTOR_PARAMS_SPEC;
sub _set_param_spec {
my $class = shift;
= $self->user_agent->request( $request );
# XXX check content type
return $self->process_json_response(
$response,
sub {
my ($data) = @_;
my ($token,
{
my ($data) = @_;
die join "\n", ERROR_ACCESS_TOKEN, $self->_error_from_json($data) || $response->decoded_content;
}
);
}
sub _access_auth_string {
my $self