| Net-Google documentation | Contained in the Net-Google distribution. |
Net::Google::Response - simple OOP-ish interface to the Google SOAP API search responses
my $service = Net::Google->new(key=>LOCAL_GOOGLE_KEY);
my $session = $service->search();
$session->query(qw(Perl modules));
# You are probably better off calling
# $session->results() but if you want
# the raw response object(s) here ya go :
my $responses = $session->response();
my $count = scalar(@$responses);
# $r is a Net::Google::Response object
foreach my $r (@$responses) {
print sprintf("%s : %s\n",$r->searchQuery(),$r->estimatedTotalResults());
}
Provides a simple OOP-ish interface to the Google SOAP API for searching. This package is used by Net::Google.
The Net::Google::Response object is used to contain response information provided by the Google search service in response to a search query. The Response object allows the client program to easily access the data returned from a search.
Response data is accessed using methods with identical names to the elements of a search response (as documented in the Google Web APIs Reference, section 3). For instance, the first example in the SYNOPSIS section, above, would return the estimated number of total results for the query.
Response objects may contain other response objects, where an element
would return an array of other elements. For instance, calling
$response->resultElements() will return a reference to an array
of Net::Google::Response objects, each one representing one result
from the search.
The Response module will automatically provide methods for the search response, as described by the service WSDL file. The results format is described by the Google APIs documentation, to which you should refer for the most up-to-date information. As of the April 8th, 2002 release of the Google APIs, the methods below are provided for each search result.
Returns 0 if false, 1 if true.
Returns a string.
Returns an integer.
Returns 0 if false, 1 if true.
Returns a reference to an array of Response objects.
Returns a string.
Returns an integer.
Returns an integer.
Returns a string.
Returns a reference to an array of Response objects (one per directory category -- see below).
Returns a float.
Returns a string.
Returns a string.
Returns a string, formatted in HTML.
Returns a string.
Returns a string.
Returns a string.
Returns a string.
Returns a hash reference.
1.0
$Date: 2006/01/12 03:37:31 $
Aaron Straup Cope
Marc Hedlund <marc@precipice.org>
Net::Google
Copyright (c) 2002-2005, Aaron Straup Cope. All Rights Reserved.
This is free software, you may use it and distribute it under the same terms as Perl itself.
| Net-Google documentation | Contained in the Net-Google distribution. |
{
use strict; package Net::Google::Response; use vars qw ($AUTOLOAD); use Carp; $Net::Google::Response::VERSION = '1.0'; # Note that we handle 'resultElements' separately # Maybe we should doing the same w/ directoryCategories... use constant RESPONSE_FIELDS => qw [ directoryCategories estimateIsExact startIndex searchTime estimatedTotalResultsCount searchTips searchComments searchQuery endIndex documentFiltering ];
sub new { my $pkg = shift; my $self = {}; bless $self,$pkg; if (! $self->init(@_)) { return undef; } return $self; } sub init { my $self = shift; my $response = shift; if (ref($response) ne "GoogleSearchResult") { carp "Unknown response object."; return 0; } foreach my $el (@{$response->{'resultElements'}}) { if (my $res = Result->new($el)) { push @{$self->{'__resultElements'}},$res; } } map { $self->{'__'.$_} = $response->{$_}; } &RESPONSE_FIELDS; return 1; }
sub resultElements { my $self = shift; if(ref($self->{'__resultElements'}) eq "ARRAY") { return $self->{'__resultElements'}; } return []; }
sub to_string { my $self = shift; my $string = ''; foreach my $key (keys %$self) { $string .= "$key: $$self{$key}\n"; } return $string; } sub DESTROY { return 1; } sub AUTOLOAD { my $self = shift; $AUTOLOAD =~ s/.*:://; unless (grep/^($AUTOLOAD)$/,&RESPONSE_FIELDS) { carp "Unknown attribute : ".$AUTOLOAD; return undef; } return $self->{'__'.$AUTOLOAD}; } package Result; use Carp; use vars qw ($AUTOLOAD); use constant RESULT_FIELDS => qw [ title URL snippet cachedSize directoryTitle summary hostName directoryCategory relatedInformationPresent ]; sub new { my $pkg = shift; my $self = {}; bless $self,$pkg; if (! $self->init(@_)) { return undef; } return $self; } sub init { my $self = shift; my $res = shift; unless (ref($res) eq "ResultElement") { carp "Unknown result object"; return 0; } map { $self->{'__'.$_} = $res->{$_}; } &RESULT_FIELDS; return 1; }
sub AUTOLOAD { my $self = shift; $AUTOLOAD =~ s/.*:://; unless (grep/^($AUTOLOAD)$/,&RESULT_FIELDS) { carp "Unknown attribute :".$AUTOLOAD; return undef; } return $self->{'__'.$AUTOLOAD}; } sub DESTROY { return 1; }
return 1; }