WebService::Tagzania::API - Tagzania API Interface


WebService-Tagzania-API documentation Contained in the WebService-Tagzania-API distribution.

Index


Code Index:

METHODS

Top

new

Create a new object for the Tagzania API class.

  my $tagobj = new WebService::Tagzania::API() ;

query

Perform a query to the Tagzania API. Accepts a reference to a hash with the required query arguments.

  my $rh_params = {
    'start'  => 0,
    'number' => 10,
    'minlng' => -9.25,
    'minlat' => 35.35,
    'maxlng' => 4.55,
    'maxlat' => 43.80,
  } ;

  my $response = $tagobj->query( $rh_params ) ;

The required parameters are :

  start  => defined the element number of which to start from
  number => defined the number of total results to return
  minlng, maxlng, minlat, maxlat => coordinates of bounding box of location to query

  The Tagzania API returns well-formed XML. This will be present in the
  '_content' key of the response.

execute_query

internal function

NAME

Top

WebService::Tagzania::API - Tagzania API Interface

SYNOPSIS

Top

  use WebService::Tagzania::API;
  my $tagobj = new WebService::Tagzania::API() ;

  my $rh_params = {
    'start'  => 0,
    'number' => 200,
    'minlng' => -9.25,
    'minlat' => 35.35,
    'maxlng' => 4.55,
    'maxlat' => 43.80,
  } ;

  my $results = $api->query( $rh_params ) ;

  my $content = $results->{_content} ;

  # do something with the XML inside $content

DESCRIPTION

Top

Tagzania is all about tags and places. Tagzania lets you create custom maps, add points of interest on them and share them with other users, all in an extremely easy fashion. This module provides a Perl OO-ish wrapper around the Tagzania.com API.

BUGS

Top

None. That I know of ;)

AUTHOR

Top

    Spiros Denaxas
    CPAN ID: SDEN
    Lokku Ltd
    s [dot] denaxas [@] gmail [dot]com
    http://idaru.blogspot.com
    http://www.nestoria.co.uk 

COPYRIGHT

Top

SEE ALSO

Top

WebService::Tagzania::Request, WebService::Tagzania::Response, http://www.tagzania.com


WebService-Tagzania-API documentation Contained in the WebService-Tagzania-API distribution.
package WebService::Tagzania::API;

use strict   ;
use warnings ;

use WebService::Tagzania::Request ;
use WebService::Tagzania::Response ;

use LWP::UserAgent ;
use Data::Dumper ;

our @ISA = qw ( LWP::UserAgent ) ;
our $VERSION = '0.1' ;

sub new {
    my $class = shift ;
    
    ## Please do not change the following parameter. 
  	## It does not reveal any personal information 
  	## but helps Tagzania in tracking usage of their API
  	## through this module.
    
    my %options = ( 'agent' => 'WebService::Tagzania::API' ) ;
    my $self = new LWP::UserAgent ( %options );
    
    bless $self, $class ;
    return $self ;
}

sub query {
  my $self = shift ;
  my $rh_params = shift ;
  
  return unless $rh_params
         && defined $rh_params 
         && ref $rh_params eq 'HASH' ;
        
  my $query = new WebService::Tagzania::Request ( $rh_params ) ;
  
  if ( defined $query ) {
   $self->execute_query($query) ;
  } else {
    return undef ;
  }
}

sub execute_query {
  my $self = shift ;
  my $query = shift ;
    
  my $url = $query->encode_arguments() ;
  my $response = $self->get($url) ;
  
  bless $response, 'WebService::Tagzania::Response' ;
  
  unless ($response->{_rc} = 200) {
  	  $response->set_fail(0, "API returned a non-200 status code: ($response->{_rc})") ;
  		return $response ;
    } ;
  
  unless ($response->{_msg} eq 'OK') {
    $response->set_fail(0, "An API error has occured: $response->{_msg}") ;
    return $response ;
  }
  
  my $results = $response->{_content} ;
  $response->set_success($results) ;
  
  return $response ;
  
}

1;