package Geo::Coder::Many::Generic; use strict; use warnings; use Carp; use Geo::Coder::Many::Response; our $VERSION = '0.01'; =head1 NAME Geo::Coder::Many::Generic - Base plugin class =head1 DESCRIPTION Base class for Geo::Coder::Many::* (Geo::Coder wrapper) classes =head1 METHODS =head2 new Construct and return a new instance of the class. Arguments should be provided in a hash with keys 'geocoder' and 'daily_limit'. =cut sub new { my $class = shift; my $args = shift; my $self = { GeoCoder => $args->{geocoder}, daily_limit => $args->{daily_limit}, }; bless $self, $class; return $self; }; =head2 geocode The main geocode method, to be overridden by subclasses. Should take a location string, geocode it using the wrapped class, and return the results (converted to a standard format) =cut sub geocode { croak "This method must be over-ridden"; } =head2 get_daily_limit Getter for daily_limit. =cut sub get_daily_limit { return shift->{daily_limit}; } =head2 get_name Return the short name of the geocoder being wrapped (should be overriden by the subclass) =cut sub get_name { croak "This method must be over-ridden"; }; 1; __END__