Google-API-Client
view release on metacpan or search on metacpan
Revision history for Perl extension Google::API::Client
0.15 2021-11-08T15:32:53Z
0.15 2021-11-08T15:25:27Z
- Fix Discovery URL template (Thanks, 7mho7 and robhammond)
0.14 2014-10-18 03:08:30 PDT
- allow no redirect_uri to support cross-client exchange request #14 (Thanks, razsh)
- Add SignedJWT support and Reseller API sample to Perl Client Library. #15 (Thanks, richieforeman)
- calendar event deletion #16 (Thanks, ljanvier)
0.13 2013-11-27 00:59:57 JST
- Add approve prompt and offline #12 (Thanks, chylli and finn)
0.12 2013-11-12 22:48:25 JST
- Add .travis.yml
0.11 2013-11-12 01:57:03 JST
- Update dependencies #11
- Important changes: Rename OAuth2::Client to Google::API::OAuth2::Client #9
0.09 Fri Feb 8 22:13:43 JST 2013
- Fixed an issue #4
0.08 Thu Sep 27 14:40:05 JST 2012
- Fixed an issue #7
0.07 Fri Aug 3 23:25:39 JST 2012
- Fixed an issue #6
- Added calendar events samples
0.06 Wed Aug 1 01:24:21 JST 2012
- Fixed an issue #5 (Thanks, uehatsu)
0.05 Tue Feb 14 01:01:42 JST 2012
- Fixed issues of URL delimiter at OAuth2::Client #1 #3 (uechoco, gnustavo)
- Performance improvement for method lookup #2 (gnustavo)
0.04 Fri Oct 28 01:50:23 JST 2011
- Fixed a bug that G::A::Client didn't have methods if Resource Document has both nested resources and methods like blogger v2.
0.03 Tue Sep 27 12:43:25 JST 2011
cpanfile.snapshot
dist.ini
eg/adsense/adclients_list.pl
eg/adsense/adunits_list.pl
eg/adsense/customchannels_list.pl
eg/adsense/reports_generate.pl
eg/adsense/urlchannels_list.pl
eg/analytics/cli_private_access.pl
eg/analytics/management_v3_reference.pl
eg/blogger/cli_public_access.pl
eg/calendar/calendarlist.pl
eg/calendar/calendars.pl
eg/calendar/events.pl
eg/client_secrets.json
eg/lib/Sample/Utils.pm
eg/plus/client_secrets.json
eg/plus/plus.pl
eg/plus/plus_with_clientsecrets.pl
eg/plus/sample.psgi
eg/plus/search.pl
eg/plus/search_simple.pl
eg/searchconsole/webmasters_sites_list.pl
eg/service_accounts/reseller.pl
eg/calendar/calendarlist.pl view on Meta::CPAN
use Google::API::Client;
use Google::API::OAuth2::Client;
use lib 'eg/lib';
use Sample::Utils qw/get_or_restore_token store_token/;
use constant MAX_PAGE_SIZE => 3;
my $client = Google::API::Client->new;
my $service = $client->build('calendar', 'v3');
my $file = "$FindBin::Bin/../client_secrets.json";
my $auth_driver = Google::API::OAuth2::Client->new_from_client_secrets($file, $service->{auth_doc});
my $dat_file = "$FindBin::Bin/token.dat";
my $access_token = get_or_restore_token($dat_file, $auth_driver);
my $page_token;
my $count = 1;
do {
say "=== page $count ===";
my %body = (
maxResults => MAX_PAGE_SIZE,
);
if ($page_token) {
$body{pageToken} = $page_token;
}
# Call calendarlist.list
my $list = $service->calendarList->list(
body => \%body,
)->execute({ auth_driver => $auth_driver });
$page_token = $list->{nextPageToken};
for my $entry (@{$list->{items}}) {
say '* ' . encode_utf8($entry->{summary});
# Call calendarlist.get
my $calendar = $service->calendarList->get(
body => {
calendarId => $entry->{id},
}
)->execute({ auth_driver => $auth_driver });
if (my $description = $calendar->{description}) {
say ' ' . encode_utf8($description);
}
}
$count++;
} until (!$page_token);
store_token($dat_file, $auth_driver);
__END__
eg/calendar/calendars.pl view on Meta::CPAN
use Encode qw/encode_utf8/;
use FindBin;
use Google::API::Client;
use Google::API::OAuth2::Client;
use lib 'eg/lib';
use Sample::Utils qw/get_or_restore_token store_token/;
my $client = Google::API::Client->new;
my $service = $client->build('calendar', 'v3');
my $file = "$FindBin::Bin/../client_secrets.json";
my $auth_driver = Google::API::OAuth2::Client->new_from_client_secrets($file, $service->{auth_doc});
my $dat_file = "$FindBin::Bin/token.dat";
my $access_token = get_or_restore_token($dat_file, $auth_driver);
# Call calendarlist.list
my $res = $service->calendarList->list->execute({ auth_driver => $auth_driver });
my $calendar_id = $res->{items}->[0]->{id};
# Call calendars.get
$res = $service->calendars->get(
body => {
calendarId => $calendar_id,
}
)->execute({ auth_driver => $auth_driver });
say encode_utf8($res->{summary});
store_token($dat_file, $auth_driver);
__END__
eg/calendar/events.pl view on Meta::CPAN
use Google::API::Client;
use Google::API::OAuth2::Client;
use lib 'eg/lib';
use Sample::Utils qw/get_or_restore_token store_token/;
use constant MAX_PAGE_SIZE => 50;
my $client = Google::API::Client->new;
my $service = $client->build('calendar', 'v3');
my $file = "$FindBin::Bin/../client_secrets.json";
my $auth_driver = Google::API::OAuth2::Client->new_from_client_secrets($file, $service->{auth_doc});
my $dat_file = "$FindBin::Bin/token.dat";
my $access_token = get_or_restore_token($dat_file, $auth_driver);
# Call calendarlist.list
my $res = $service->calendarList->list(
body => {
maxResults => MAX_PAGE_SIZE,
minAccessRole => 'owner',
}
)->execute({ auth_driver => $auth_driver });
my $calendar_id = $res->{items}->[0]->{id};
my $dest_calendar_id = $res->{items}->[1]->{id};
# Call events.list
my $page_token;
my $count = 1;
do {
say "=== page $count ===";
my %body = (
calendarId => $calendar_id,
);
if ($page_token) {
$body{pageToken} = $page_token;
}
$res = $service->events->list(
body => \%body,
)->execute({ auth_driver => $auth_driver });
$page_token = $res->{nextPageToken};
for my $event (@{$res->{items}}) {
say encode_utf8($event->{summary});
eg/calendar/events.pl view on Meta::CPAN
'summary' => 'Appointment',
'location' => 'Somewhere',
'start' => {
'dateTime' => '2012-08-03T10:00:00+09:00',
},
'end' => {
'dateTime' => '2012-08-03T10:25:00+09:00',
},
};
my $added_event = $service->events->insert(
calendarId => $calendar_id,
body => $new_event,
)->execute({ auth_driver => $auth_driver });
say $added_event->{id};
# Get an event
say '=== Get a event ===';
my $got_event = $service->events->get(
body => {
calendarId => $calendar_id,
eventId => $added_event->{id},
}
)->execute({ auth_driver => $auth_driver });
say $got_event->{id};
# Update an event
say '=== Update an event ===';
$got_event->{summary} = 'Appointment at Somewhere';
my $updated_event = $service->events->update(
calendarId => $calendar_id,
eventId => $got_event->{id},
body => $got_event,
)->execute({ auth_driver => $auth_driver });
say $updated_event->{updated};
# Update an event (patch)
say '=== Update an event (patch) ===';
my $patched_event = $service->events->patch(
calendarId => $calendar_id,
eventId => $got_event->{id},
body => {
description => 'We will have a lunch',
}
)->execute({ auth_driver => $auth_driver });
say $patched_event->{updated};
# Delete an event
say '=== Delete an event ===';
$service->events->delete(
calendarId => $calendar_id,
eventId => $got_event->{id},
)->execute({ auth_driver => $auth_driver });
# QuickAdd
say '=== QuickAdd ===';
my $quickadded_event = $service->events->quickAdd(
calendarId => $calendar_id,
text => 'Appointment at Somewhere on June 3rd 10am-10:25am',
)->execute({ auth_driver => $auth_driver });
say $quickadded_event->{id};
# Move an event
say '=== Move an event ===';
$service->events->move(
calendarId => $calendar_id,
eventId => $quickadded_event->{id},
destination => $dest_calendar_id,
)->execute({ auth_driver => $auth_driver });
# Recurring events
say '=== Make recurring events via patch ===';
$service->events->patch(
calendarId => $dest_calendar_id,
eventId => $quickadded_event->{id},
body => {
start => {
timeZone => 'Asia/Tokyo',
},
end => {
timeZone => 'Asia/Tokyo',
},
recurrence => [
'RRULE:FREQ=WEEKLY;UNTIL=20120831T100000Z',
],
}
)->execute({ auth_driver => $auth_driver });
say $quickadded_event->{updated};
# instances
say '=== Get instances ===';
my $instances = $service->events->instances(
calendarId => $dest_calendar_id,
eventId => $quickadded_event->{id},
)->execute({ auth_driver => $auth_driver });
for my $instance (@{$instances->{items}}) {
say $instance->{id};
}
store_token($dat_file, $auth_driver);
__END__
lib/Google/API/Client.pm view on Meta::CPAN
return $parser;
}
sub _replace_to_subdomain {
my ($self, $service) = @_;
# Following services are different from subdomains.
# It needs to be converted.
my %replacement = (
'adexchangebuyer2' => 'adexchangebuyer',
'calendar' => 'calendar-json',
'content' => 'shoppingcontent',
'prod_tt_sasportal' => 'prod-tt-sasportal',
'translate' => 'translation',
);
if (grep { $service eq $_ } keys %replacement) {
$service = $replacement{$service};
}
return $service;
}
use strict;
use Test::More;
use Google::API::Client;
my $service = Google::API::Client->new->build('calendar', 'v3');
ok($service);
is(ref(Google::API::Client->_new_ua), 'LWP::UserAgent');
is(ref(Google::API::Client->_new_json_parser), 'JSON');
done_testing();
t/discovery_url.t view on Meta::CPAN
is($client->{ua}{response}->request->uri, 'https://gmail.googleapis.com/$discovery/rest?version=v1');
$service = $client->build('analyticsreporting', 'v4');
is($client->{ua}{response}->request->uri, 'https://analyticsreporting.googleapis.com/$discovery/rest?version=v4');
$service = $client->build('searchconsole', 'v1');
is($client->{ua}{response}->request->uri, 'https://searchconsole.googleapis.com/$discovery/rest?version=v1');
};
subtest 'without version' => sub {
my $service = $client->build('calendar');
is($client->{ua}{response}->request->uri, 'https://calendar-json.googleapis.com/$discovery/rest');
};
subtest 'backward compatibility' => sub {
my $service = $client->build('compute', 'alpha');
is($client->{ua}{response}->request->uri, 'https://www.googleapis.com/discovery/v1/apis/compute/alpha/rest');
$service = $client->build('compute', 'beta');
is($client->{ua}{response}->request->uri, 'https://www.googleapis.com/discovery/v1/apis/compute/beta/rest');
$service = $client->build('compute', 'v1');
t/discovery_url.t view on Meta::CPAN
$service = $client->build('oauth2', 'v2');
is($client->{ua}{response}->request->uri, 'https://www.googleapis.com/discovery/v1/apis/oauth2/v2/rest');
};
subtest 'convert name to sub domain' => sub {
my $service = $client->build('adexchangebuyer2', 'v2beta1');
is($client->{ua}{response}->request->uri, 'https://adexchangebuyer.googleapis.com/$discovery/rest?version=v2beta1');
$service = $client->build('calendar', 'v3');
is($client->{ua}{response}->request->uri, 'https://calendar-json.googleapis.com/$discovery/rest?version=v3');
$service = $client->build('content', 'v2.1');
is($client->{ua}{response}->request->uri, 'https://shoppingcontent.googleapis.com/$discovery/rest?version=v2.1');
$service = $client->build('prod_tt_sasportal', 'v1alpha1');
is($client->{ua}{response}->request->uri, 'https://prod-tt-sasportal.googleapis.com/$discovery/rest?version=v1alpha1');
$service = $client->build('translate', 'v3');
is($client->{ua}{response}->request->uri, 'https://translation.googleapis.com/$discovery/rest?version=v3');
};
( run in 0.463 second using v1.01-cache-2.11-cpan-5dc5da66d9d )