package Net::Geohash;

use strict;
use warnings;

use LWP::UserAgent;

our $VERSION = '1.1';

sub get {
    my ($coords) = shift @_;
    if (! $coords) { warn 'Missing lattitude/longitude param'; return ''; }
    if (@_) { warn 'Extra parameters found.'; return; }
    my $ua = LWP::UserAgent->new();
    $ua->agent('perl-Net-Geohash/' . $VERSION );
    $ua->max_redirect(0);
    my $resp = $ua->get('http://geohash.org/?q=' . $coords);
    if ($resp->code() eq '303') {
        if (my $loc = $resp->header('location')) {
            if ($loc eq 'http://geohash.org/') {
                warn 'geohash.org response indicates that the geocode was invalid.';
                return '';
            }
            return $loc;
        } else {
            return '';
        }
    }
    warn 'geohash.org response was not a redirect, possibly invalid geocoords.';
    return '';
}

=head1 NAME

Net::Geohash - The great new Net::Geohash!

=head1 VERSION

Version 1.1

=head1 SYNOPSIS

Quick summary of what the module does.

Perhaps a little code snippet.

    use Net::Geohash;

    my $ghurl = Net::Geohash::get('37.391012 -122.071873');
    ...

=head1 EXPORT

=head1 FUNCTIONS

=head2 get

The get function accepts a string containing the lat/lon to send to
geohash.org for hashing. It returns the fully qualified geohash.org url
on success. If an error occurs it will give a warning message and return
an empty string.

Location names such as 'Paris, France' can also be given.

=head1 AUTHOR

Nick Gerakines, C<< <nick at gerakines.net> >>

=head1 BUGS

Please report any bugs or feature requests to
C<bug-net-geohash at rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-Geohash>.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.

=head1 SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Net::Geohash

You can also look for information at:

=over 4

=item * geohash.org

L<http://geohash.org/>

=item * del.icio.us/tag/geohash

L<http://del.icio.us/tag/geohash>

=over 4

=item * AnnoCPAN: Annotated CPAN documentation

L<http://annocpan.org/dist/Net-Geohash>

=item * CPAN Ratings

L<http://cpanratings.perl.org/d/Net-Geohash>

=item * RT: CPAN's request tracker

L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Net-Geohash>

=item * Search CPAN

L<http://search.cpan.org/dist/Net-Geohash>

=back

=head1 COPYRIGHT & LICENSE

Copyright 2008 Nick Gerakines, all rights reserved.

This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.

=cut

1; # End of Net::Geohash