Mojolicious::Plugin::GeoLocation - Geo Location Mojolicious Plugin
plugin 'geo_location', {
geo_ip => { db => '/usr/local/share/GeoIP/GeoLiteCity.dat' },
geo_ip_ru => { db => { dbh => app->db, table => 'ip_geo_base_ru' } },
geo_coder => { api => [ '..', .. ] }, # list of api key
geo_coder_ru => { api => [ '..', .. ] }, # list of api key
};
get '/' => sub {
my $self = shift;
warn Dumper $self->stash('location'); # returns hash { lat => '..', long => '..', ip => '..', title => '..' }
};
get '/coder' => sub {
my $self = shift;
warn $self->helper->gl_coder('Moscow');
};
Mojolicous::Plugin::GeoLocation is a plugin to detect location, uses geolat and geolong params or IP address.
Detect geo latitude and longitude:
$c->req->param('geolat')
$c->req->param('geolong')
Detect IP address:
$c->req->param('ip') ||
$c->req->headers->header('X-Real-IP') ||
$c->req->headers->header('X-Forwarded-For') ||
$c->tx->{'remote_address'}
Mojolicious::Plugin::GeoLocation inherits all methods from Mojolicious::Plugin and implements the following new ones.
$plugin->register;
Register plugin hooks in Mojolicious application. Add 2 helpers:
$self->helper('gl_coder', '..');
$self->helper('gl_ip', '..');
$plugin->coder( [ $lat, $long ] );
Detect location, uses geo lat and long params, based on Geo::Geocoder. First: uses Yandex geocoder (http://api.yandex.ru/maps/geocoder/doc/desc/concepts/reverse_geocode.xml), second: uses Google geocoder (http://code.google.com/apis/maps/documentation/geocoding/).
$plugin->ip( $ip );
Detect location, uses IP, based on Geo::IP::RU::IpGeoBase and Geo::IP. First: uses russian IP base (http://ipgeobase.ru), second: uses MaxMind IP base (http://www.maxmind.com/).
Mojolicious, Mojolicious::Guides, http://mojolicious.org.
Geo::IP::RU::IpGeoBase, Geo::IP.
Anatoly Sharifulin <sharifulin@gmail.com>
Please report any bugs or feature requests to bug-mojolicious-plugin-geolocation at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.htMail?Queue=Mojolicious-Plugin-GeoLocation. We will be notified, and then you'll automatically be notified of progress on your bug as we make changes.
Github
http://github.com/sharifulin/Mojolicious-Plugin-GeoLocation/tree/master
RT: CPAN's request tracker
http://rt.cpan.org/NoAuth/Bugs.htMail?Dist=Mojolicious-Plugin-GeoLocation
AnnoCPAN: Annotated CPAN documentation
CPANTS: CPAN Testing Service
http://cpants.perl.org/dist/overview/Mojolicious-Plugin-GeoLocation
CPAN Ratings
http://cpanratings.perl.org/d/Mojolicious-Plugin-GeoLocation
Search CPAN
Copyright (C) 2010 by Anatoly Sharifulin.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.