NAME
Net::PMP::Client - Perl client for the Public Media Platform
SYNOPSIS
use Net::PMP::Client;
my $host = 'https://api-sandbox.pmp.io';
my $client_id = 'i-am-a-client';
my $client_secret = 'i-am-a-secret';
# instantiate a client
my $client = Net::PMP::Client->new(
host => $host,
id => $client_id,
secret => $client_secret,
);
# authenticate
my $token = $client->get_token();
if ($token->expires_in() < 10) {
die "Access token expires too soon. Not enough time to make a request. Mayday, mayday!";
}
printf("PMP token is: %s\n, $token->as_string());
# search
my $search_results = $client->search({ tag => 'samplecontent', profile => 'story' });
my $results = $search_results->get_items();
printf( "total: %s\n", $results->total );
while ( my $r = $results->next ) {
printf( '%s: %s [%s]', $results->count, $r->get_uri, $r->get_title, ) );
}
DESCRIPTION
Net::PMP::Client is a Perl client for the Public Media Platform API (http://docs.pmp.io/).
METHODS
new( args )
Instantiate a Client object. args may consist of:
- host
-
Default is
https://api-sandbox.pmp.io
. - id (required)
-
The client id. See https://github.com/publicmediaplatform/pmpdocs/wiki/Authenticating-with-the-API#generating-credentials.
- secret (required)
-
The client secret. See https://github.com/publicmediaplatform/pmpdocs/wiki/Authenticating-with-the-API#generating-credentials.
- debug
-
Boolean. Default is off.
- ua
-
A LWP::UserAgent object.
- pmp_content_type
-
Defaults to
application/vnd.collection.doc+json
. Change at your peril.
BUILD
Internal method for object construction.
last_response
Returns the most recent HTTP::Response object. Useful for debugging client behaviour.
get_home_doc
Returns the CollectionDoc for the API root. This object is cached for performance reasons.
get_token([refresh],[warning_ttl])
Returns a Net::PMP::AuthToken object. The optional refresh boolean indicates that the Client should ignore any cached token and fetch a fresh one.
If get_home_doc() is undefined (i.e., no initial access has been attempted), then this method will return undef.
If the token will expire in less than warning_ttl seconds, the client will sleep() that long and then refresh itself. The default is 10 seconds.
revoke_token
Expires the currently active AuthToken.
get_credentials_uri
Returns the URI for the Credentials API.
create_credentials( params )
Instantiates credentials at server. params should be a hash of key/value pairs.
- username (required)
- password (required)
- scope (default: read)
- expires (default: 86400)
- label (default: null)
Returns a Net::PMP::Credentials object.
delete_credentials( params )
Deletes credentials at the server.
params should consist of:
- username
- password
- client_id
uri_for_doc(guid)
Returns full URI for guid.
uri_for_profile(profile)
Returns full URI for profile.
uri_for_schema(schema)
Returns full URI for schema.
get(uri)
Issues a GET request on uri and decodes the JSON response into a Perl scalar.
If the GET request returns a 404 (Not Found) will return 0 (zero).
If the GET request returns anything other than 200, will croak.
If the GET request returns 200, will return the JSON response, decoded.
get_doc_edit_link
Retrieves the base doc edit link object for the API.
put(doc_object)
Write doc_object to the server. doc_object should be an instance of Net::PMP::CollectionDoc.
Returns the JSON response from the server on success, croaks on failure.
Normally you should use save() instead of put() directly, since save() optionally validates the doc_object before calling put() and makes sure there is a guid and href defined.
delete(doc_object)
Remove doc_object from the server. Returns true on success, croaks on failure.
get_doc( [uri] [,tries] )
Returns a Net::PMP::CollectionDoc representing uri. Defaults to the API base endpoint if uri is omitted or false.
If uri is not found, returns 0 (zero) just like get().
The second, optional parameter tries indicates how many re-tries should be attempted when the response is a 404. This feature helps compenstate for occasional latency on the server between an initial save and subsequent read, since PUT and DELETE requests always return a 202 (accepted but not necessarily acted upon). The default is 1 try.
get_doc_by_guid(guid)
Like get_doc() but takes a guid as argument.
search( opts [,tries] )
Search in the 'urn:collectiondoc:query:docs' namespace.
Returns a Net::PMP::CollectionDoc object for opts. opts are passed directly to the query link URI template. See https://github.com/publicmediaplatform/pmpdocs/wiki/Query-Link-Relation.
The second, optional parameter tries is passed internally to get_doc(). See the description of get_doc().
save(doc_object)
Write doc_object to the server. doc_object may be a Net::PMP::Profile object, in which case the as_doc() method is called on it, or it may be a Net::PMP::CollectionDoc object.
Returns a Net::PMP::CollectionDoc object with its URI updated to reflect the server response.
AUTHOR
Peter Karman, <karman at cpan.org>
BUGS
Please report any bugs or feature requests to bug-net-pmp at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-PMP. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Net::PMP::Client
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
American Public Media and the Public Media Platform sponsored the development of this module.
LICENSE AND COPYRIGHT
Copyright 2013 American Public Media Group
See the LICENSE file that accompanies this module.