NAME
$class - A client for the ORCID $name API
CREATING A NEW INSTANCE
The new
method returns a new $name API client.
Arguments to new:
client_id
Your ORCID client id (required).
client_secret
Your ORCID client secret (required).
sandbox
The client will talk to the ORCID sandbox API if set to 1
.
transport
Specify the HTTP client to use. Possible values are LWP or HTTP::Tiny. Default is LWP.
METHODS
client_id
Returns the ORCID client id used by the client.
client_secret
Returns the ORCID client secret used by the client.
sandbox
Returns 1
if the client is using the sandbox API, 0
otherwise.
transport
Returns what HTTP transport the client is using.
api_url
Returns the base API url used by the client.
oauth_url
Returns the base OAuth url used by the client.
access_token
Request a new access token.
my \$token = \$client->access_token(
grant_type => 'client_credentials',
scope => '/read-public',
);
authorize_url
Helper that returns an authorization url for 3-legged OAuth requests.
# in your web application
redirect(\$client->authorize_url(
show_login => 'true',
scope => '/person/update',
response_type => 'code',
redirect_uri => 'http://your.callback/url',
));
See the /authorize
and /authorized
routes in the included playground application for an example.
record_url
Helper that returns an orcid record url.
\$client->record_url('0000-0003-4791-9455')
# returns
# http://orcid.org/0000-0003-4791-9455
# or
# http://sandbox.orcid.org/0000-0003-4791-9455
read_public_token
Return an access token with scope /read-public
. EOF
$pod .= <<EOF if $class->can('read_limited_token');
read_limited_token
Return an access token with scope /read-limited
. EOF
$pod .= <<EOF if $class->can('client');
client
Get details about the current client. EOF
$pod .= <<EOF if $class->can('search');
search
my \$hits = \$client->search(q => "johnson");
EOF
my $token_arg = 'token => $token'; my $orcid_arg = ', orcid => $orcid'; my $pc_arg = ", put_code => '123'"; my $pc_bulk_arg = ", put_code => ['123', '456']";
for my $op (sort keys %$ops) { my $spec = $ops->{$op}; my $sym = $op; $sym =~ s|[-/]|_|g;
my $base_args = $token_arg;
$base_args .= $orcid_arg if $spec->{orcid};
if ($spec->{get} || $spec->{get_pc} || $spec->{get_pc_bulk}) {
$pod .= "=head2 C<${sym}>\n\n";
if ($spec->{get} && ($spec->{get_pc} || $spec->{get_pc_bulk})) {
$pod .= " my \$recs = \$client->${sym}($base_args);\n";
}
elsif ($spec->{get}) {
$pod .= " my \$rec = \$client->${sym}($base_args);\n";
}
if ($spec->{get_pc}) {
$pod .= " my \$rec = \$client->${sym}($base_args$pc_arg);\n";
}
if ($spec->{get_pc_bulk}) {
$pod .= " my \$recs = \$client->${sym}($base_args$pc_bulk_arg);\n";
}
$pod .= "\nEquivalent to:\n\n \$client->get('${op}', \%opts)\n\n";
}
if ($spec->{add}) {
$pod .= "=head2 C<add_${sym}>\n\n";
$pod .= " \$client->add_${sym}(\$data, $base_args);\n";
$pod .= "\nEquivalent to:\n\n \$client->add('${op}', \$data, \%opts)\n\n";
}
if ($spec->{update}) {
$pod .= "=head2 C<update_${sym}>\n\n";
$pod .= " \$client->update_${sym}(\$data, $base_args$pc_arg);\n";
$pod .= "\nEquivalent to:\n\n \$client->update('${op}', \$data, \%opts)\n\n";
}
if ($spec->{delete}) {
$pod .= "=head2 C<delete_${sym}>\n\n";
$pod .= " my \$ok = \$client->delete_${sym}($base_args$pc_arg);\n";
$pod .= "\nEquivalent to:\n\n \$client->delete('${op}', \%opts)\n\n";
}
}
$pod .= <<EOF; =head2 last_error
Returns the last error returned by the ORCID API, if any.
log
Returns the Log::Any logger.