The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/env perl
##no critic
#ABSTRACT: Patrons Account Information API command line client 
#PODNAME: paia
our $VERSION = '0.25'; #VERSION
use App::PAIA;
App::PAIA->run;

__END__

=pod

=encoding UTF-8

=head1 NAME

paia - Patrons Account Information API command line client 

=head1 VERSION

version 0.25

=head1 SYNOPSIS

    paia login --base http://example.org/paia/ -u alice -p 12345
    paia patron
    paia items
    paia renew http://uri.example.org/item/123
    ...
    paia session --verbose
    paia logout

Run C<paia help> or C<perldoc paia> for more commands and options.

=head1 DESCRIPTION

The B<paia> command line client can be used to access library patron account
information, such as loans, reservations, and fees via the Patrons Account
Information API (PAIA). 

PAIA defines three commands for authentification (PAIA auth) and six commands
to access a patron account (PAIA core). For instance

    paia items [options]

calls the "items" command of PAIA core. Access to PAIA core commands is granted
by access tokens that can be required by the "login" command. By default the
client automatically calls "login" if needed.  Access token, patron identifier
and PAIA server URLs are stored in a session file (C<paia-session.json> by
default) that can be checked with command "session".

Basic options, such as base/core/auth URLs, username, and password can be stored
in a config file (C<paia.json> by default), such as following:

    {
      "base": "http://example.org/paia/",
      "username": "alice",
      "password": "12345"
    }

=head1 COMMANDS

Call C<< paia help <command> >> for help on a specific PAIA command. Note that
PAIA servers do not need to support all PAIA commands.

=head2 PAIA auth

=over

=item B<login> (<http://gbv.github.io/paia/paia.html#login>)

Get a access token and patron identifier from credentials (username and
password). On success access token, patron identifier and base URL are stored
to a session file.

=item B<logout> (<http://gbv.github.io/paia/paia.html#logout>)

Invalidate an access token. An existing session file is deleted.

=item B<change> (<http://gbv.github.io/paia/paia.html#change>)

Change login password.

=back

=head2 PAIA core

=over

=item B<patron> (<http://gbv.github.io/paia/paia.html#patron>)

Get general patron information.

=item B<items> (<http://gbv.github.io/paia/paia.html#items>)

List loans, reservations and other items related to a patron.

=item B<request> (<http://gbv.github.io/paia/paia.html#request>)

Request one or more items for reservation or delivery.

=item B<renew> (<http://gbv.github.io/paia/paia.html#renew>)

Renew one or more documents held by a patron.

=item B<cancel> (<http://gbv.github.io/paia/paia.html#cancel>)

Cancel requests.

=item B<fees> (<http://gbv.github.io/paia/paia.html#fees>)

List fees.

=back

=head2 Client commands

=over

=item B<session>

Shows the current PAIA auth session status from session file.

=item B<help>

Show help.

=back

=head1 SEE ALSO

=over

=item L<http://gbv.github.io/paia/>

PAIA specification

=item L<App::PAIA>

Perl module used to implement this client

=back

=head1 AUTHOR

Jakob Voß

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Jakob Voß.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

=cut