Google-API-Client
view release on metacpan or search on metacpan
lib/Google/API/Client.pm view on Meta::CPAN
my $base_url = URI->new($base);
my $resource = $self->_create_resource($document, $base_url, $args);
return $resource;
}
sub _create_resource {
my $self = shift;
my ($document, $base_url, $args) = @_;
my $root_resource_obj = Google::API::Resource->new;
for my $resource (keys %{$document->{resources}}) {
my $resource_obj;
if ($document->{resources}{$resource}{resources}) {
$resource_obj = $self->_create_resource($document->{resources}{$resource}, $base_url, $args);
}
if ($document->{resources}{$resource}{methods}) {
unless ($resource_obj) {
$resource_obj = Google::API::Resource->new;
}
for my $method (keys %{$document->{resources}{$resource}{methods}}) {
$resource_obj->set_attr($method, sub {
my (%param) = @_;
return Google::API::Method->new(
ua => $self->{ua},
json_parser => $self->{json_parser},
base_url => $base_url,
doc => $document->{resources}{$resource}{methods}{$method},
opt => \%param,
);
});
}
}
$root_resource_obj->set_attr($resource, sub { $resource_obj } );
}
if ($document->{auth}) {
$root_resource_obj->{auth_doc} = $document->{auth};
}
return $root_resource_obj;
}
sub _new_ua {
my $class = shift;
require LWP::UserAgent;
my $ua = LWP::UserAgent->new;
return $ua;
}
sub _new_json_parser {
my $class = shift;
require JSON;
my $parser = JSON->new;
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;
}
sub _is_v1_discovery_url {
my ($self, $service, $version) = @_;
# Following services are still using V1 type URL
if (($service eq 'compute' && $version eq 'alpha') ||
($service eq 'compute' && $version eq 'beta') ||
($service eq 'compute' && $version eq 'v1') ||
($service eq 'drive' && $version eq 'v2') ||
($service eq 'drive' && $version eq 'v3') ||
($service eq 'oauth2' && $version eq 'v2')) {
return 1;
}
return;
}
1;
__END__
=encoding utf-8
=for stopwords
=head1 NAME
Google::API::Client - A client for Google APIs Discovery Service
=head1 SYNOPSIS
use Google::API::Client;
my $client = Google::API::Client->new;
my $service = $client->build('urlshortener', 'v1');
# Get shortened URL
my $body = {
'longUrl' => 'http://code.google.com/apis/urlshortener/',
};
my $result = $url->insert(body => $body)->execute;
$result->{id}; # shortened URL
=head1 DESCRIPTION
Google::API::Client is a client for Google APIs Discovery Service. You make using Google APIs easy.
=head1 METHODS
=over 4
=item new
=item build
( run in 1.254 second using v1.01-cache-2.11-cpan-13bb782fe5a )