The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
package GeoIP2::Record::City;
{
  $GeoIP2::Record::City::VERSION = '0.0200';
}

use strict;
use warnings;

use GeoIP2::Types qw( NonNegativeInt PositiveInt Str );

use Moo;

with 'GeoIP2::Role::Record::HasNames';

has confidence => (
    is        => 'ro',
    isa       => NonNegativeInt,
    predicate => 'has_confidence',
);

has geoname_id => (
    is        => 'ro',
    isa       => PositiveInt,
    predicate => 'has_geoname_id',
);

1;

# ABSTRACT: Contains data for the city record associated with an IP address

__END__

=pod

=head1 NAME

GeoIP2::Record::City - Contains data for the city record associated with an IP address

=head1 VERSION

version 0.0200

=head1 SYNOPSIS

  use 5.008;

  use GeoIP2::WebService::Client;

  my $client = GeoIP2::WebService::Client->new(
      user_id     => 42,
      license_key => 'abcdef123456',
  );

  my $city = $client->city_isp_org( ip => '24.24.24.24' );

  my $city_rec = $city->city();
  say $city_rec->name();

=head1 DESCRIPTION

This class contains the city-level data associated with an IP address.

This record is returned by all the end points except the Country end point.

=head1 METHODS

This class provides the following methods:

=head2 $city_rec->confidence()

This returns a value from 0-100 indicating MaxMind's confidence that the city
is correct.

This attribute is only available from the Omni end point.

=head2 $city_rec->geoname_id()

This returns a C<geoname_id> for the city.

This attribute is returned by all end points.

=head2 $city_rec->name()

This returns a name for the city. The language chosen depends on the
C<languages> argument that was passed to the record's constructor. This will
be passed through from the L<GeoIP2::WebService::Client> object you used to
fetch the data that populated this record.

If the record does not have a name in any of languages you asked for, this
method returns C<undef>.

This attribute is returned by all end points.

=head2 $city_rec->names()

This returns a hash reference where the keys are language codes and the values
are names. See L<GeoIP2::WebService::Client> for a list of the possible
language codes.

This attribute is returned by all end points.

=head1 AUTHOR

Dave Rolsky <autarch@urth.org>

=head1 COPYRIGHT AND LICENSE

This software is Copyright (c) 2013 by MaxMind, Inc..

This is free software, licensed under:

  The Artistic License 2.0 (GPL Compatible)

=cut