Viewing File: /usr/local/cpanel/3rdparty/perl/536/cpanel-lib/REST/Google.pm
#
# $Id: Google.pm 9 2008-04-29 21:17:12Z esobchenko $
package REST::Google;
use strict;
use warnings;
use version; our $VERSION = qv('1.0.8');
use Carp qw/carp croak/;
use JSON::Any;
use HTTP::Request;
use LWP::UserAgent;
use URI;
require Class::Data::Inheritable;
require Class::Accessor;
use base qw/Class::Data::Inheritable Class::Accessor/;
__PACKAGE__->mk_classdata("http_referer");
__PACKAGE__->mk_classdata("service");
__PACKAGE__->mk_accessors(qw/responseDetails responseStatus/);
use constant DEFAULT_ARGS => (
'v' => '1.0',
);
use constant DEFAULT_REFERER => 'http://example.com';
# private method: used in constructor to get it's arguments
sub _get_args {
my $proto = shift;
my %args;
if ( scalar(@_) > 1 ) {
if ( @_ % 2 ) {
croak "odd number of parameters";
}
%args = @_;
} elsif ( ref $_[0] ) {
unless ( eval { local $SIG{'__DIE__'}; %{ $_[0] } || 1 } ) {
croak "not a hashref in args";
}
%args = %{ $_[0] };
} else {
%args = ( 'q' => shift );
}
return { $proto->DEFAULT_ARGS, %args };
}
sub new {
my $class = shift;
my $args = $class->_get_args(@_);
croak "attempting to perform request without setting a service URL"
unless ( defined $class->service );
my $uri = URI->new( $class->service );
$uri->query_form( $args );
unless ( defined $class->http_referer ) {
carp "attempting to search without setting a valid http referer header";
$class->http_referer( DEFAULT_REFERER );
}
my $request = HTTP::Request->new( GET => $uri, [ 'Referer', $class->http_referer ] );
my $ua = LWP::UserAgent->new();
$ua->env_proxy;
my $response = $ua->request( $request );
croak sprintf qq/HTTP request failed: %s/, $response->status_line
unless $response->is_success;
my $content = $response->content;
my $json = JSON::Any->new();
my $self = $json->decode($content);
return bless $self, $class;
}
sub responseData {
my $self = shift;
return $self->{responseData};
}
1;
Back to Directory
File Manager