@@ -1,3 +1,10 @@
+2.001000 2014-10-28
+
+- Added support for the GeoIP2 Anonymous IP database. The
+ GeoIP2::Database::Reader class now has an anonymous_ip() method which
+ returns a GeoIP2::Model::AnonymousIP object.
+
+
2.000001 2014-09-22
- Removed beta notice from documentation.
@@ -1,4 +1,3 @@
-
This is the Perl distribution GeoIP2.
Installing GeoIP2 is straightforward.
@@ -1,4 +1,4 @@
-This software is copyright (c) 2013 by MaxMind, Inc.
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -12,7 +12,7 @@ b) the "Artistic License"
--- The GNU General Public License, Version 1, February 1989 ---
-This software is Copyright (c) 2013 by MaxMind, Inc.
+This software is Copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software, licensed under:
@@ -22,7 +22,7 @@ This is free software, licensed under:
Version 1, February 1989
Copyright (C) 1989 Free Software Foundation, Inc.
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -272,7 +272,7 @@ That's all there is to it!
--- The Artistic License 1.0 ---
-This software is Copyright (c) 2013 by MaxMind, Inc.
+This software is Copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software, licensed under:
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.020.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v5.022.
Changes
INSTALL
LICENSE
@@ -7,11 +7,9 @@ META.json
META.yml
Makefile.PL
README
+README.md
bin/web-service-request
-cover_db/cover.13
-cover_db/cover.css
-cover_db/coverage.html
-cover_db/digests
+cpanfile
dist.ini
lib/GeoIP2.pm
lib/GeoIP2/Database/Reader.pm
@@ -20,6 +18,7 @@ lib/GeoIP2/Error/HTTP.pm
lib/GeoIP2/Error/IPAddressNotFound.pm
lib/GeoIP2/Error/Type.pm
lib/GeoIP2/Error/WebService.pm
+lib/GeoIP2/Model/AnonymousIP.pm
lib/GeoIP2/Model/City.pm
lib/GeoIP2/Model/ConnectionType.pm
lib/GeoIP2/Model/Country.pm
@@ -49,12 +48,14 @@ lib/GeoIP2/WebService/Client.pm
maxmind-db/LICENSE
maxmind-db/MaxMind-DB-spec.md
maxmind-db/README.md
+maxmind-db/source-data/GeoIP2-Anonymous-IP-Test.json
maxmind-db/source-data/GeoIP2-City-Test.json
maxmind-db/source-data/GeoIP2-Connection-Type-Test.json
maxmind-db/source-data/GeoIP2-Country-Test.json
maxmind-db/source-data/GeoIP2-Domain-Test.json
maxmind-db/source-data/GeoIP2-ISP-Test.json
maxmind-db/source-data/README
+maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb
maxmind-db/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb
maxmind-db/test-data/GeoIP2-City-Test.mmdb
maxmind-db/test-data/GeoIP2-Connection-Type-Test.mmdb
@@ -78,8 +79,13 @@ maxmind-db/test-data/MaxMind-DB-test-nested.mmdb
maxmind-db/test-data/README.md
maxmind-db/test-data/maps-with-pointers.raw
maxmind-db/test-data/write-test-data.pl
-perltidy.LOG
-pod2htmd.tmp
+t/00-compile.t
+t/00-report-prereqs.dd
+t/00-report-prereqs.t
+t/GeoIP2/Database/Reader-Anonymous-IP.t
+t/GeoIP2/Database/Reader-Connection-Type.t
+t/GeoIP2/Database/Reader-Domain.t
+t/GeoIP2/Database/Reader-ISP.t
t/GeoIP2/Database/Reader.t
t/GeoIP2/Error/Type.t
t/GeoIP2/Model/City.t
@@ -88,12 +94,13 @@ t/GeoIP2/Model/Insights.t
t/GeoIP2/Model/names.t
t/GeoIP2/Types.t
t/GeoIP2/WebService/Client.t
+t/author-eol.t
+t/author-no-tabs.t
+t/author-pod-spell.t
t/lib/Test/GeoIP2.pm
t/release-cpan-changes.t
-t/release-eol.t
-t/release-no-tabs.t
t/release-pod-coverage.t
-t/release-pod-spell.t
t/release-pod-syntax.t
+t/release-portability.t
t/release-synopsis.t
weaver.ini
@@ -6,7 +6,7 @@
"Olaf Alders <oalders@maxmind.com>"
],
"dynamic_config" : 0,
- "generated_by" : "Dist::Zilla version 5.020, CPAN::Meta::Converter version 2.141170",
+ "generated_by" : "Dist::Zilla version 5.022, CPAN::Meta::Converter version 2.142690",
"license" : [
"perl_5"
],
@@ -18,15 +18,21 @@
"prereqs" : {
"configure" : {
"requires" : {
- "ExtUtils::MakeMaker" : "0"
+ "ExtUtils::MakeMaker" : "0",
+ "perl" : "5.008"
}
},
"develop" : {
"requires" : {
+ "Pod::Coverage::TrustPod" : "0",
"Test::CPAN::Changes" : "0.19",
- "Test::More" : "0",
+ "Test::EOL" : "0",
+ "Test::More" : "0.88",
"Test::NoTabs" : "0",
- "Test::Pod" : "1.41"
+ "Test::Pod" : "1.41",
+ "Test::Pod::Coverage" : "1.08",
+ "Test::Spelling" : "0.12",
+ "Test::Synopsis" : "0"
}
},
"runtime" : {
@@ -58,29 +64,743 @@
}
},
"test" : {
+ "recommends" : {
+ "CPAN::Meta" : "2.120900"
+ },
"requires" : {
+ "ExtUtils::MakeMaker" : "0",
+ "File::Spec" : "0",
"HTTP::Status" : "0",
"IO::Compress::Gzip" : "0",
+ "IO::Handle" : "0",
+ "IPC::Open3" : "0",
"Path::Class" : "0",
"Test::Fatal" : "0",
"Test::More" : "0.88",
"base" : "0",
+ "perl" : "5.008",
"utf8" : "0"
}
}
},
+ "provides" : {
+ "GeoIP2" : {
+ "file" : "lib/GeoIP2.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Database::Reader" : {
+ "file" : "lib/GeoIP2/Database/Reader.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Error::Generic" : {
+ "file" : "lib/GeoIP2/Error/Generic.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Error::HTTP" : {
+ "file" : "lib/GeoIP2/Error/HTTP.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Error::IPAddressNotFound" : {
+ "file" : "lib/GeoIP2/Error/IPAddressNotFound.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Error::Type" : {
+ "file" : "lib/GeoIP2/Error/Type.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Error::WebService" : {
+ "file" : "lib/GeoIP2/Error/WebService.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::AnonymousIP" : {
+ "file" : "lib/GeoIP2/Model/AnonymousIP.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::City" : {
+ "file" : "lib/GeoIP2/Model/City.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::ConnectionType" : {
+ "file" : "lib/GeoIP2/Model/ConnectionType.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::Country" : {
+ "file" : "lib/GeoIP2/Model/Country.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::Domain" : {
+ "file" : "lib/GeoIP2/Model/Domain.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::ISP" : {
+ "file" : "lib/GeoIP2/Model/ISP.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Model::Insights" : {
+ "file" : "lib/GeoIP2/Model/Insights.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::City" : {
+ "file" : "lib/GeoIP2/Record/City.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::Continent" : {
+ "file" : "lib/GeoIP2/Record/Continent.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::Country" : {
+ "file" : "lib/GeoIP2/Record/Country.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::Location" : {
+ "file" : "lib/GeoIP2/Record/Location.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::MaxMind" : {
+ "file" : "lib/GeoIP2/Record/MaxMind.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::Postal" : {
+ "file" : "lib/GeoIP2/Record/Postal.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::RepresentedCountry" : {
+ "file" : "lib/GeoIP2/Record/RepresentedCountry.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::Subdivision" : {
+ "file" : "lib/GeoIP2/Record/Subdivision.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Record::Traits" : {
+ "file" : "lib/GeoIP2/Record/Traits.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Error::HTTP" : {
+ "file" : "lib/GeoIP2/Role/Error/HTTP.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::HasIPAddress" : {
+ "file" : "lib/GeoIP2/Role/HasIPAddress.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::HasLocales" : {
+ "file" : "lib/GeoIP2/Role/HasLocales.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Model" : {
+ "file" : "lib/GeoIP2/Role/Model.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Model::Flat" : {
+ "file" : "lib/GeoIP2/Role/Model/Flat.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Model::HasSubdivisions" : {
+ "file" : "lib/GeoIP2/Role/Model/HasSubdivisions.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Model::Location" : {
+ "file" : "lib/GeoIP2/Role/Model/Location.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Record::Country" : {
+ "file" : "lib/GeoIP2/Role/Record/Country.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Role::Record::HasNames" : {
+ "file" : "lib/GeoIP2/Role/Record/HasNames.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::Types" : {
+ "file" : "lib/GeoIP2/Types.pm",
+ "version" : "2.001000"
+ },
+ "GeoIP2::WebService::Client" : {
+ "file" : "lib/GeoIP2/WebService/Client.pm",
+ "version" : "2.001000"
+ }
+ },
"release_status" : "stable",
"resources" : {
"bugtracker" : {
"web" : "https://github.com/maxmind/GeoIP2-perl/issues"
},
+ "homepage" : "https://metacpan.org/release/GeoIP2",
"repository" : {
"type" : "git",
"url" : "git://github.com/maxmind/GeoIP2-perl.git",
"web" : "https://github.com/maxmind/GeoIP2-perl"
}
},
- "version" : "2.000001",
+ "version" : "2.001000",
+ "x_Dist_Zilla" : {
+ "perl" : {
+ "version" : "5.016003"
+ },
+ "plugins" : [
+ {
+ "class" : "Dist::Zilla::Plugin::Encoding",
+ "name" : "Encoding",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MakeMaker",
+ "config" : {
+ "Dist::Zilla::Role::TestRunner" : {
+ "default_jobs" : 1
+ }
+ },
+ "name" : "@MAXMIND/MakeMaker",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Authority",
+ "name" : "@MAXMIND/Authority",
+ "version" : "1.009"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::AutoPrereqs",
+ "name" : "@MAXMIND/AutoPrereqs",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CopyFilesFromBuild",
+ "name" : "@MAXMIND/CopyFilesFromBuild",
+ "version" : "0.103510"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::GatherDir",
+ "config" : {
+ "Dist::Zilla::Plugin::GatherDir" : {
+ "exclude_filename" : [
+ "README.md",
+ "cpanfile",
+ "Makefile.PL",
+ "LICENSE"
+ ],
+ "exclude_match" : [],
+ "follow_symlinks" : "0",
+ "include_dotfiles" : "0",
+ "prefix" : "",
+ "prune_directory" : [],
+ "root" : "."
+ }
+ },
+ "name" : "@MAXMIND/GatherDir",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::GitHub::Meta",
+ "name" : "@MAXMIND/GitHub::Meta",
+ "version" : "0.38"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::GitHub::Update",
+ "name" : "@MAXMIND/GitHub::Update",
+ "version" : "0.38"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MetaProvides::Package",
+ "config" : {
+ "Dist::Zilla::Plugin::MetaProvides::Package" : {
+ "finder_objects" : [
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : "@MAXMIND/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+ "version" : "5.022"
+ }
+ ]
+ },
+ "Dist::Zilla::Role::MetaProvider::Provider" : {
+ "inherit_missing" : "1",
+ "inherit_version" : "1",
+ "meta_noindex" : "1"
+ }
+ },
+ "name" : "@MAXMIND/MetaProvides::Package",
+ "version" : "2.001002"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::NextRelease",
+ "name" : "@MAXMIND/NextRelease",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable",
+ "name" : "@MAXMIND/Test::Pod::Coverage::Configurable",
+ "version" : "0.01"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::PodSpelling",
+ "name" : "@MAXMIND/Test::PodSpelling",
+ "version" : "2.006008"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::ReportPrereqs",
+ "name" : "@MAXMIND/Test::ReportPrereqs",
+ "version" : "0.019"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Prereqs",
+ "config" : {
+ "Dist::Zilla::Plugin::Prereqs" : {
+ "phase" : "test",
+ "type" : "requires"
+ }
+ },
+ "name" : "@MAXMIND/TestMoreDoneTesting",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PromptIfStale",
+ "config" : {
+ "Dist::Zilla::Plugin::PromptIfStale" : {
+ "check_all_plugins" : "1",
+ "check_all_prereqs" : "1",
+ "modules" : [],
+ "phase" : "release",
+ "skip" : []
+ }
+ },
+ "name" : "@MAXMIND/stale modules, release",
+ "version" : "0.028"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
+ "name" : "@MAXMIND/ReadmeMarkdownInBuild",
+ "version" : "0.142470"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ReadmeAnyFromPod",
+ "name" : "@MAXMIND/ReadmeMarkdownInRoot",
+ "version" : "0.142470"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::UploadToCPAN",
+ "name" : "@MAXMIND/UploadToCPAN",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PruneCruft",
+ "name" : "@MAXMIND/PruneCruft",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ManifestSkip",
+ "name" : "@MAXMIND/ManifestSkip",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MetaYAML",
+ "name" : "@MAXMIND/MetaYAML",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::License",
+ "name" : "@MAXMIND/License",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ExtraTests",
+ "name" : "@MAXMIND/ExtraTests",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ExecDir",
+ "name" : "@MAXMIND/ExecDir",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ShareDir",
+ "name" : "@MAXMIND/ShareDir",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Manifest",
+ "name" : "@MAXMIND/Manifest",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::TestRelease",
+ "name" : "@MAXMIND/TestRelease",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::ConfirmRelease",
+ "name" : "@MAXMIND/ConfirmRelease",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CheckPrereqsIndexed",
+ "name" : "@MAXMIND/CheckPrereqsIndexed",
+ "version" : "0.012"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::CPANFile",
+ "name" : "@MAXMIND/CPANFile",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch",
+ "config" : {
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
+ "name" : "@MAXMIND/Git::CheckFor::CorrectBranch",
+ "version" : "0.011"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts",
+ "config" : {
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
+ "name" : "@MAXMIND/Git::CheckFor::MergeConflicts",
+ "version" : "0.011"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Describe",
+ "name" : "@MAXMIND/Git::Describe",
+ "version" : "0.003"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Contributors",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Contributors" : {
+ "include_authors" : "0",
+ "include_releaser" : "1",
+ "order_by" : "name",
+ "paths" : []
+ }
+ },
+ "name" : "@MAXMIND/Git::Contributors",
+ "version" : "0.008"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::InstallGuide",
+ "name" : "@MAXMIND/InstallGuide",
+ "version" : "1.200005"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MAXMIND::Contributors",
+ "name" : "@MAXMIND/MAXMIND::Contributors",
+ "version" : "0.02"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MAXMIND::License",
+ "name" : "@MAXMIND/MAXMIND::License",
+ "version" : "0.02"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Meta::Contributors",
+ "name" : "@MAXMIND/Meta::Contributors",
+ "version" : "0.001"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MetaConfig",
+ "name" : "@MAXMIND/MetaConfig",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MetaJSON",
+ "name" : "@MAXMIND/MetaJSON",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::MinimumPerl",
+ "name" : "@MAXMIND/MinimumPerl",
+ "version" : "1.004"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PkgVersion",
+ "name" : "@MAXMIND/PkgVersion",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::SurgicalPodWeaver",
+ "config" : {
+ "Dist::Zilla::Plugin::PodWeaver" : {
+ "finder" : [
+ ":InstallModules",
+ ":ExecFiles"
+ ],
+ "plugins" : [
+ {
+ "class" : "Pod::Weaver::Plugin::EnsurePod5",
+ "name" : "@CorePrep/EnsurePod5",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Plugin::H1Nester",
+ "name" : "@CorePrep/H1Nester",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Name",
+ "name" : "Name",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Version",
+ "name" : "Version",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "prelude",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "SYNOPSIS",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Generic",
+ "name" : "DESCRIPTION",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Leftovers",
+ "name" : "Leftovers",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Region",
+ "name" : "postlude",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Authors",
+ "name" : "Authors",
+ "version" : "4.006"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Contributors",
+ "name" : "Contributors",
+ "version" : "0.008"
+ },
+ {
+ "class" : "Pod::Weaver::Section::Legal",
+ "name" : "Legal",
+ "version" : "4.006"
+ }
+ ]
+ }
+ },
+ "name" : "@MAXMIND/SurgicalPodWeaver",
+ "version" : "0.0021"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::PodSyntaxTests",
+ "name" : "@MAXMIND/PodSyntaxTests",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::CPAN::Changes",
+ "name" : "@MAXMIND/Test::CPAN::Changes",
+ "version" : "0.008"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::Compile",
+ "config" : {
+ "Dist::Zilla::Plugin::Test::Compile" : {
+ "bail_out_on_fail" : "0",
+ "fail_on_warning" : "author",
+ "fake_home" : "0",
+ "filename" : "t/00-compile.t",
+ "module_finder" : [
+ ":InstallModules"
+ ],
+ "needs_display" : "0",
+ "phase" : "test",
+ "script_finder" : [
+ ":ExecFiles"
+ ],
+ "skips" : []
+ }
+ },
+ "name" : "@MAXMIND/Test::Compile",
+ "version" : "2.051"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::EOL",
+ "config" : {
+ "Dist::Zilla::Plugin::Test::EOL" : {
+ "filename" : "xt/author/eol.t"
+ }
+ },
+ "name" : "@MAXMIND/Test::EOL",
+ "version" : "0.14"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::NoTabs",
+ "config" : {
+ "Dist::Zilla::Plugin::Test::NoTabs" : {
+ "filename" : "xt/author/no-tabs.t",
+ "finder" : [
+ ":InstallModules",
+ ":ExecFiles",
+ ":TestFiles"
+ ]
+ }
+ },
+ "name" : "@MAXMIND/Test::NoTabs",
+ "version" : "0.09"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::Portability",
+ "name" : "@MAXMIND/Test::Portability",
+ "version" : "2.000005"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Test::Synopsis",
+ "name" : "@MAXMIND/Test::Synopsis",
+ "version" : "2.000005"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Check",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Check" : {
+ "untracked_files" : "die"
+ },
+ "Dist::Zilla::Role::Git::DirtyFiles" : {
+ "allow_dirty" : [
+ "Changes",
+ "cpanfile",
+ "CONTRIBUTING.md",
+ "LICENSE",
+ "Makefile.PL",
+ "README.md"
+ ],
+ "allow_dirty_match" : [],
+ "changelog" : "Changes"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
+ "name" : "@MAXMIND/Git::Check",
+ "version" : "2.025"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Commit",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Commit" : {
+ "add_files_in" : [],
+ "commit_msg" : "v%v%n%n%c",
+ "time_zone" : "local"
+ },
+ "Dist::Zilla::Role::Git::DirtyFiles" : {
+ "allow_dirty" : [
+ "Changes",
+ "cpanfile",
+ "CONTRIBUTING.md",
+ "LICENSE",
+ "Makefile.PL",
+ "README.md"
+ ],
+ "allow_dirty_match" : [],
+ "changelog" : "Changes"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
+ "name" : "@MAXMIND/Git::Commit",
+ "version" : "2.025"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Tag",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Tag" : {
+ "branch" : null,
+ "signed" : 0,
+ "tag" : "v2.001000",
+ "tag_format" : "v%v",
+ "tag_message" : "v%v",
+ "time_zone" : "local"
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
+ "name" : "@MAXMIND/Git::Tag",
+ "version" : "2.025"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::Git::Push",
+ "config" : {
+ "Dist::Zilla::Plugin::Git::Push" : {
+ "push_to" : [
+ "origin"
+ ],
+ "remotes_must_exist" : 1
+ },
+ "Dist::Zilla::Role::Git::Repo" : {
+ "repo_root" : "."
+ }
+ },
+ "name" : "@MAXMIND/Git::Push",
+ "version" : "2.025"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":InstallModules",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":IncModules",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":TestFiles",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":ExecFiles",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":ShareFiles",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":MainModule",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":AllFiles",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : ":NoFiles",
+ "version" : "5.022"
+ },
+ {
+ "class" : "Dist::Zilla::Plugin::FinderCode",
+ "name" : "@MAXMIND/MetaProvides::Package/AUTOVIV/:InstallModulesPM",
+ "version" : "5.022"
+ }
+ ],
+ "zilla" : {
+ "class" : "Dist::Zilla::Dist::Builder",
+ "config" : {
+ "is_trial" : "0"
+ },
+ "version" : "5.022"
+ }
+ },
"x_authority" : "cpan:MAXMIND",
"x_contributors" : [
"Graham Knop <haarg@haarg.org>"
@@ -5,22 +5,131 @@ author:
- 'Greg Oschwald <goschwald@maxmind.com>'
- 'Olaf Alders <oalders@maxmind.com>'
build_requires:
+ ExtUtils::MakeMaker: '0'
+ File::Spec: '0'
HTTP::Status: '0'
IO::Compress::Gzip: '0'
+ IO::Handle: '0'
+ IPC::Open3: '0'
Path::Class: '0'
Test::Fatal: '0'
Test::More: '0.88'
base: '0'
+ perl: '5.008'
utf8: '0'
configure_requires:
ExtUtils::MakeMaker: '0'
+ perl: '5.008'
dynamic_config: 0
-generated_by: 'Dist::Zilla version 5.020, CPAN::Meta::Converter version 2.141170'
+generated_by: 'Dist::Zilla version 5.022, CPAN::Meta::Converter version 2.142690'
license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: '1.4'
name: GeoIP2
+provides:
+ GeoIP2:
+ file: lib/GeoIP2.pm
+ version: '2.001000'
+ GeoIP2::Database::Reader:
+ file: lib/GeoIP2/Database/Reader.pm
+ version: '2.001000'
+ GeoIP2::Error::Generic:
+ file: lib/GeoIP2/Error/Generic.pm
+ version: '2.001000'
+ GeoIP2::Error::HTTP:
+ file: lib/GeoIP2/Error/HTTP.pm
+ version: '2.001000'
+ GeoIP2::Error::IPAddressNotFound:
+ file: lib/GeoIP2/Error/IPAddressNotFound.pm
+ version: '2.001000'
+ GeoIP2::Error::Type:
+ file: lib/GeoIP2/Error/Type.pm
+ version: '2.001000'
+ GeoIP2::Error::WebService:
+ file: lib/GeoIP2/Error/WebService.pm
+ version: '2.001000'
+ GeoIP2::Model::AnonymousIP:
+ file: lib/GeoIP2/Model/AnonymousIP.pm
+ version: '2.001000'
+ GeoIP2::Model::City:
+ file: lib/GeoIP2/Model/City.pm
+ version: '2.001000'
+ GeoIP2::Model::ConnectionType:
+ file: lib/GeoIP2/Model/ConnectionType.pm
+ version: '2.001000'
+ GeoIP2::Model::Country:
+ file: lib/GeoIP2/Model/Country.pm
+ version: '2.001000'
+ GeoIP2::Model::Domain:
+ file: lib/GeoIP2/Model/Domain.pm
+ version: '2.001000'
+ GeoIP2::Model::ISP:
+ file: lib/GeoIP2/Model/ISP.pm
+ version: '2.001000'
+ GeoIP2::Model::Insights:
+ file: lib/GeoIP2/Model/Insights.pm
+ version: '2.001000'
+ GeoIP2::Record::City:
+ file: lib/GeoIP2/Record/City.pm
+ version: '2.001000'
+ GeoIP2::Record::Continent:
+ file: lib/GeoIP2/Record/Continent.pm
+ version: '2.001000'
+ GeoIP2::Record::Country:
+ file: lib/GeoIP2/Record/Country.pm
+ version: '2.001000'
+ GeoIP2::Record::Location:
+ file: lib/GeoIP2/Record/Location.pm
+ version: '2.001000'
+ GeoIP2::Record::MaxMind:
+ file: lib/GeoIP2/Record/MaxMind.pm
+ version: '2.001000'
+ GeoIP2::Record::Postal:
+ file: lib/GeoIP2/Record/Postal.pm
+ version: '2.001000'
+ GeoIP2::Record::RepresentedCountry:
+ file: lib/GeoIP2/Record/RepresentedCountry.pm
+ version: '2.001000'
+ GeoIP2::Record::Subdivision:
+ file: lib/GeoIP2/Record/Subdivision.pm
+ version: '2.001000'
+ GeoIP2::Record::Traits:
+ file: lib/GeoIP2/Record/Traits.pm
+ version: '2.001000'
+ GeoIP2::Role::Error::HTTP:
+ file: lib/GeoIP2/Role/Error/HTTP.pm
+ version: '2.001000'
+ GeoIP2::Role::HasIPAddress:
+ file: lib/GeoIP2/Role/HasIPAddress.pm
+ version: '2.001000'
+ GeoIP2::Role::HasLocales:
+ file: lib/GeoIP2/Role/HasLocales.pm
+ version: '2.001000'
+ GeoIP2::Role::Model:
+ file: lib/GeoIP2/Role/Model.pm
+ version: '2.001000'
+ GeoIP2::Role::Model::Flat:
+ file: lib/GeoIP2/Role/Model/Flat.pm
+ version: '2.001000'
+ GeoIP2::Role::Model::HasSubdivisions:
+ file: lib/GeoIP2/Role/Model/HasSubdivisions.pm
+ version: '2.001000'
+ GeoIP2::Role::Model::Location:
+ file: lib/GeoIP2/Role/Model/Location.pm
+ version: '2.001000'
+ GeoIP2::Role::Record::Country:
+ file: lib/GeoIP2/Role/Record/Country.pm
+ version: '2.001000'
+ GeoIP2::Role::Record::HasNames:
+ file: lib/GeoIP2/Role/Record/HasNames.pm
+ version: '2.001000'
+ GeoIP2::Types:
+ file: lib/GeoIP2/Types.pm
+ version: '2.001000'
+ GeoIP2::WebService::Client:
+ file: lib/GeoIP2/WebService/Client.pm
+ version: '2.001000'
requires:
B: '0'
Data::Dumper: '0'
@@ -48,8 +157,446 @@ requires:
warnings: '0'
resources:
bugtracker: https://github.com/maxmind/GeoIP2-perl/issues
+ homepage: https://metacpan.org/release/GeoIP2
repository: git://github.com/maxmind/GeoIP2-perl.git
-version: '2.000001'
+version: '2.001000'
+x_Dist_Zilla:
+ perl:
+ version: '5.016003'
+ plugins:
+ -
+ class: Dist::Zilla::Plugin::Encoding
+ name: Encoding
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::MakeMaker
+ config:
+ Dist::Zilla::Role::TestRunner:
+ default_jobs: 1
+ name: '@MAXMIND/MakeMaker'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::Authority
+ name: '@MAXMIND/Authority'
+ version: '1.009'
+ -
+ class: Dist::Zilla::Plugin::AutoPrereqs
+ name: '@MAXMIND/AutoPrereqs'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::CopyFilesFromBuild
+ name: '@MAXMIND/CopyFilesFromBuild'
+ version: '0.103510'
+ -
+ class: Dist::Zilla::Plugin::GatherDir
+ config:
+ Dist::Zilla::Plugin::GatherDir:
+ exclude_filename:
+ - README.md
+ - cpanfile
+ - Makefile.PL
+ - LICENSE
+ exclude_match: []
+ follow_symlinks: '0'
+ include_dotfiles: '0'
+ prefix: ''
+ prune_directory: []
+ root: .
+ name: '@MAXMIND/GatherDir'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::GitHub::Meta
+ name: '@MAXMIND/GitHub::Meta'
+ version: '0.38'
+ -
+ class: Dist::Zilla::Plugin::GitHub::Update
+ name: '@MAXMIND/GitHub::Update'
+ version: '0.38'
+ -
+ class: Dist::Zilla::Plugin::MetaProvides::Package
+ config:
+ Dist::Zilla::Plugin::MetaProvides::Package:
+ finder_objects:
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: '@MAXMIND/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+ version: '5.022'
+ Dist::Zilla::Role::MetaProvider::Provider:
+ inherit_missing: '1'
+ inherit_version: '1'
+ meta_noindex: '1'
+ name: '@MAXMIND/MetaProvides::Package'
+ version: '2.001002'
+ -
+ class: Dist::Zilla::Plugin::NextRelease
+ name: '@MAXMIND/NextRelease'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable
+ name: '@MAXMIND/Test::Pod::Coverage::Configurable'
+ version: '0.01'
+ -
+ class: Dist::Zilla::Plugin::Test::PodSpelling
+ name: '@MAXMIND/Test::PodSpelling'
+ version: '2.006008'
+ -
+ class: Dist::Zilla::Plugin::Test::ReportPrereqs
+ name: '@MAXMIND/Test::ReportPrereqs'
+ version: '0.019'
+ -
+ class: Dist::Zilla::Plugin::Prereqs
+ config:
+ Dist::Zilla::Plugin::Prereqs:
+ phase: test
+ type: requires
+ name: '@MAXMIND/TestMoreDoneTesting'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::PromptIfStale
+ config:
+ Dist::Zilla::Plugin::PromptIfStale:
+ check_all_plugins: '1'
+ check_all_prereqs: '1'
+ modules: []
+ phase: release
+ skip: []
+ name: '@MAXMIND/stale modules, release'
+ version: '0.028'
+ -
+ class: Dist::Zilla::Plugin::ReadmeAnyFromPod
+ name: '@MAXMIND/ReadmeMarkdownInBuild'
+ version: '0.142470'
+ -
+ class: Dist::Zilla::Plugin::ReadmeAnyFromPod
+ name: '@MAXMIND/ReadmeMarkdownInRoot'
+ version: '0.142470'
+ -
+ class: Dist::Zilla::Plugin::UploadToCPAN
+ name: '@MAXMIND/UploadToCPAN'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::PruneCruft
+ name: '@MAXMIND/PruneCruft'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::ManifestSkip
+ name: '@MAXMIND/ManifestSkip'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::MetaYAML
+ name: '@MAXMIND/MetaYAML'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::License
+ name: '@MAXMIND/License'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::ExtraTests
+ name: '@MAXMIND/ExtraTests'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::ExecDir
+ name: '@MAXMIND/ExecDir'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::ShareDir
+ name: '@MAXMIND/ShareDir'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::Manifest
+ name: '@MAXMIND/Manifest'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::TestRelease
+ name: '@MAXMIND/TestRelease'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::ConfirmRelease
+ name: '@MAXMIND/ConfirmRelease'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::CheckPrereqsIndexed
+ name: '@MAXMIND/CheckPrereqsIndexed'
+ version: '0.012'
+ -
+ class: Dist::Zilla::Plugin::CPANFile
+ name: '@MAXMIND/CPANFile'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::Git::CheckFor::CorrectBranch
+ config:
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
+ name: '@MAXMIND/Git::CheckFor::CorrectBranch'
+ version: '0.011'
+ -
+ class: Dist::Zilla::Plugin::Git::CheckFor::MergeConflicts
+ config:
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
+ name: '@MAXMIND/Git::CheckFor::MergeConflicts'
+ version: '0.011'
+ -
+ class: Dist::Zilla::Plugin::Git::Describe
+ name: '@MAXMIND/Git::Describe'
+ version: '0.003'
+ -
+ class: Dist::Zilla::Plugin::Git::Contributors
+ config:
+ Dist::Zilla::Plugin::Git::Contributors:
+ include_authors: '0'
+ include_releaser: '1'
+ order_by: name
+ paths: []
+ name: '@MAXMIND/Git::Contributors'
+ version: '0.008'
+ -
+ class: Dist::Zilla::Plugin::InstallGuide
+ name: '@MAXMIND/InstallGuide'
+ version: '1.200005'
+ -
+ class: Dist::Zilla::Plugin::MAXMIND::Contributors
+ name: '@MAXMIND/MAXMIND::Contributors'
+ version: '0.02'
+ -
+ class: Dist::Zilla::Plugin::MAXMIND::License
+ name: '@MAXMIND/MAXMIND::License'
+ version: '0.02'
+ -
+ class: Dist::Zilla::Plugin::Meta::Contributors
+ name: '@MAXMIND/Meta::Contributors'
+ version: '0.001'
+ -
+ class: Dist::Zilla::Plugin::MetaConfig
+ name: '@MAXMIND/MetaConfig'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::MetaJSON
+ name: '@MAXMIND/MetaJSON'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::MinimumPerl
+ name: '@MAXMIND/MinimumPerl'
+ version: '1.004'
+ -
+ class: Dist::Zilla::Plugin::PkgVersion
+ name: '@MAXMIND/PkgVersion'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::SurgicalPodWeaver
+ config:
+ Dist::Zilla::Plugin::PodWeaver:
+ finder:
+ - ':InstallModules'
+ - ':ExecFiles'
+ plugins:
+ -
+ class: Pod::Weaver::Plugin::EnsurePod5
+ name: '@CorePrep/EnsurePod5'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Plugin::H1Nester
+ name: '@CorePrep/H1Nester'
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Name
+ name: Name
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Version
+ name: Version
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Region
+ name: prelude
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: SYNOPSIS
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Generic
+ name: DESCRIPTION
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Leftovers
+ name: Leftovers
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Region
+ name: postlude
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Authors
+ name: Authors
+ version: '4.006'
+ -
+ class: Pod::Weaver::Section::Contributors
+ name: Contributors
+ version: '0.008'
+ -
+ class: Pod::Weaver::Section::Legal
+ name: Legal
+ version: '4.006'
+ name: '@MAXMIND/SurgicalPodWeaver'
+ version: '0.0021'
+ -
+ class: Dist::Zilla::Plugin::PodSyntaxTests
+ name: '@MAXMIND/PodSyntaxTests'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::Test::CPAN::Changes
+ name: '@MAXMIND/Test::CPAN::Changes'
+ version: '0.008'
+ -
+ class: Dist::Zilla::Plugin::Test::Compile
+ config:
+ Dist::Zilla::Plugin::Test::Compile:
+ bail_out_on_fail: '0'
+ fail_on_warning: author
+ fake_home: '0'
+ filename: t/00-compile.t
+ module_finder:
+ - ':InstallModules'
+ needs_display: '0'
+ phase: test
+ script_finder:
+ - ':ExecFiles'
+ skips: []
+ name: '@MAXMIND/Test::Compile'
+ version: '2.051'
+ -
+ class: Dist::Zilla::Plugin::Test::EOL
+ config:
+ Dist::Zilla::Plugin::Test::EOL:
+ filename: xt/author/eol.t
+ name: '@MAXMIND/Test::EOL'
+ version: '0.14'
+ -
+ class: Dist::Zilla::Plugin::Test::NoTabs
+ config:
+ Dist::Zilla::Plugin::Test::NoTabs:
+ filename: xt/author/no-tabs.t
+ finder:
+ - ':InstallModules'
+ - ':ExecFiles'
+ - ':TestFiles'
+ name: '@MAXMIND/Test::NoTabs'
+ version: '0.09'
+ -
+ class: Dist::Zilla::Plugin::Test::Portability
+ name: '@MAXMIND/Test::Portability'
+ version: '2.000005'
+ -
+ class: Dist::Zilla::Plugin::Test::Synopsis
+ name: '@MAXMIND/Test::Synopsis'
+ version: '2.000005'
+ -
+ class: Dist::Zilla::Plugin::Git::Check
+ config:
+ Dist::Zilla::Plugin::Git::Check:
+ untracked_files: die
+ Dist::Zilla::Role::Git::DirtyFiles:
+ allow_dirty:
+ - Changes
+ - cpanfile
+ - CONTRIBUTING.md
+ - LICENSE
+ - Makefile.PL
+ - README.md
+ allow_dirty_match: []
+ changelog: Changes
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
+ name: '@MAXMIND/Git::Check'
+ version: '2.025'
+ -
+ class: Dist::Zilla::Plugin::Git::Commit
+ config:
+ Dist::Zilla::Plugin::Git::Commit:
+ add_files_in: []
+ commit_msg: v%v%n%n%c
+ time_zone: local
+ Dist::Zilla::Role::Git::DirtyFiles:
+ allow_dirty:
+ - Changes
+ - cpanfile
+ - CONTRIBUTING.md
+ - LICENSE
+ - Makefile.PL
+ - README.md
+ allow_dirty_match: []
+ changelog: Changes
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
+ name: '@MAXMIND/Git::Commit'
+ version: '2.025'
+ -
+ class: Dist::Zilla::Plugin::Git::Tag
+ config:
+ Dist::Zilla::Plugin::Git::Tag:
+ branch: ~
+ signed: 0
+ tag: v2.001000
+ tag_format: v%v
+ tag_message: v%v
+ time_zone: local
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
+ name: '@MAXMIND/Git::Tag'
+ version: '2.025'
+ -
+ class: Dist::Zilla::Plugin::Git::Push
+ config:
+ Dist::Zilla::Plugin::Git::Push:
+ push_to:
+ - origin
+ remotes_must_exist: 1
+ Dist::Zilla::Role::Git::Repo:
+ repo_root: .
+ name: '@MAXMIND/Git::Push'
+ version: '2.025'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':InstallModules'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':IncModules'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':TestFiles'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':ExecFiles'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':ShareFiles'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':MainModule'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':AllFiles'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: ':NoFiles'
+ version: '5.022'
+ -
+ class: Dist::Zilla::Plugin::FinderCode
+ name: '@MAXMIND/MetaProvides::Package/AUTOVIV/:InstallModulesPM'
+ version: '5.022'
+ zilla:
+ class: Dist::Zilla::Dist::Builder
+ config:
+ is_trial: '0'
+ version: '5.022'
x_authority: cpan:MAXMIND
x_contributors:
- 'Graham Knop <haarg@haarg.org>'
@@ -1,11 +1,11 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.020.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker v5.022.
use strict;
use warnings;
use 5.008;
-use ExtUtils::MakeMaker ;
+use ExtUtils::MakeMaker;
@@ -20,6 +20,7 @@ my %WriteMakefileArgs = (
"bin/web-service-request"
],
"LICENSE" => "perl",
+ "MIN_PERL_VERSION" => "5.008",
"NAME" => "GeoIP2",
"PREREQ_PM" => {
"B" => 0,
@@ -47,15 +48,19 @@ my %WriteMakefileArgs = (
"warnings" => 0
},
"TEST_REQUIRES" => {
+ "ExtUtils::MakeMaker" => 0,
+ "File::Spec" => 0,
"HTTP::Status" => 0,
"IO::Compress::Gzip" => 0,
+ "IO::Handle" => 0,
+ "IPC::Open3" => 0,
"Path::Class" => 0,
"Test::Fatal" => 0,
"Test::More" => "0.88",
"base" => 0,
"utf8" => 0
},
- "VERSION" => "2.000001",
+ "VERSION" => "2.001000",
"test" => {
"TESTS" => "t/*.t t/GeoIP2/*.t t/GeoIP2/Database/*.t t/GeoIP2/Error/*.t t/GeoIP2/Model/*.t t/GeoIP2/WebService/*.t"
}
@@ -67,9 +72,13 @@ my %FallbackPrereqs = (
"Data::Dumper" => 0,
"Data::Validate::IP" => "0.24",
"Exporter" => 0,
+ "ExtUtils::MakeMaker" => 0,
+ "File::Spec" => 0,
"Getopt::Long" => 0,
"HTTP::Status" => 0,
"IO::Compress::Gzip" => 0,
+ "IO::Handle" => 0,
+ "IPC::Open3" => 0,
"JSON" => 0,
"LWP::Protocol::https" => 0,
"LWP::UserAgent" => 0,
@@ -0,0 +1,100 @@
+# NAME
+
+GeoIP2 - Perl API for MaxMind's GeoIP2 web services and databases
+
+# VERSION
+
+version 2.001000
+
+# DESCRIPTION
+
+This distribution provides an API for the GeoIP2
+[web services](http://dev.maxmind.com/geoip/geoip2/web-services) and
+[databases](http://dev.maxmind.com/geoip/geoip2/downloadable). The API also
+works with the free
+[GeoLite2 databases](http://dev.maxmind.com/geoip/geoip2/geolite2/).
+
+See [GeoIP2::WebService::Client](https://metacpan.org/pod/GeoIP2::WebService::Client) for details on the web service client API
+and [GeoIP2::Database::Reader](https://metacpan.org/pod/GeoIP2::Database::Reader) for the database API.
+
+# SPEEDING UP DATABASE READING
+
+This module only depends on the pure Perl implementation of the MaxMind
+database reader ([MaxMind::DB::Reader](https://metacpan.org/pod/MaxMind::DB::Reader)). If you install the libmaxminddb
+library ([http://maxmind.github.io/libmaxminddb/](http://maxmind.github.io/libmaxminddb/)) and
+[MaxMind::DB::Reader::XS](https://metacpan.org/pod/MaxMind::DB::Reader::XS), then the XS implementation will be loaded
+automatically. The XS implementation is approximately 100x faster than the
+pure Perl implementation.
+
+# INTEGRATION WITH GEONAMES
+
+GeoNames ([http://www.geonames.org/](http://www.geonames.org/)) offers web services and downloadable
+databases with data on geographical features around the world, including
+populated places. They offer both free and paid premium data. Each feature is
+uniquely identified by a `geoname_id`, which is an integer.
+
+Many of the records returned by the GeoIP web services and databases include a
+`geoname_id` field. This is the ID of a geographical feature (city, region,
+country, etc.) in the GeoNames database.
+
+Some of the data that MaxMind provides is also sourced from GeoNames. We
+source data such as place names, ISO codes, and other similar data from the
+GeoNames premium data set.
+
+# REPORTING DATA PROBLEMS
+
+If the problem you find is that an IP address is incorrectly mapped, please
+submit your correction to MaxMind at [http://www.maxmind.com/en/correction](http://www.maxmind.com/en/correction).
+
+If you find some other sort of mistake, like an incorrect spelling, please
+check the GeoNames site ([http://www.geonames.org/](http://www.geonames.org/)) first. Once you've searched
+for a place and found it on the GeoNames map view, there are a number of links
+you can use to correct data ("move", "edit", "alternate names", etc.). Once
+the correction is part of the GeoNames data set, it will be automatically
+incorporated into future MaxMind releases.
+
+If you are a paying MaxMind customer and you're not sure where to submit a
+correction, please contact MaxMind support at for help. See
+[http://www.maxmind.com/en/support](http://www.maxmind.com/en/support) for support details.
+
+# VERSIONING POLICY
+
+This module uses semantic versioning as described by
+[http://semver.org/](http://semver.org/). Version numbers can be read as X.YYYZZZ, where X is the
+major number, YYY is the minor number, and ZZZ is the patch number.
+
+# PERL VERSION SUPPORT
+
+MaxMind has tested this API with Perl 5.8.8 and above. Reasonable patches for
+earlier versions of Perl 5.8 will be applied. We will not accept patches to
+support any version of Perl before 5.8.
+
+The data returned from the GeoIP2 web services includes Unicode characters in
+several locales. This may expose bugs in earlier versions of Perl. If Unicode
+support is important to you, we recommend that you use the most recent version
+of Perl available.
+
+# SUPPORT
+
+Please report all issues with this code using the GitHub issue tracker at
+[https://github.com/maxmind/GeoIP2-perl/issues](https://github.com/maxmind/GeoIP2-perl/issues).
+
+If you are having an issue with a MaxMind service that is not specific to the
+client API please see [http://www.maxmind.com/en/support](http://www.maxmind.com/en/support) for details.
+
+# AUTHORS
+
+- Dave Rolsky <drolsky@maxmind.com>
+- Greg Oschwald <goschwald@maxmind.com>
+- Olaf Alders <oalders@maxmind.com>
+
+# CONTRIBUTOR
+
+Graham Knop <haarg@haarg.org>
+
+# COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
@@ -1 +0,0 @@
-{"runs":{"1369085403.5982.05964":{"start":1369085403.04366,"collected":["branch","condition","statement","subroutine","time"],"vec":{},"OS":"linux","run":"t/GeoIP2/Model/Omni.t","digests":{},"perl":"5.18.0","count":{},"finish":1369085403.04368},"1369085402.5976.01625":{"finish":1369085402.57131,"count":{},"perl":"5.18.0","digests":{},"run":"t/GeoIP2/Model/Country.t","OS":"linux","vec":{},"collected":["branch","condition","statement","subroutine","time"],"start":1369085402.57129},"1369085403.5985.13505":{"collected":["branch","condition","statement","subroutine","time"],"start":1369085403.27774,"run":"t/GeoIP2/Types.t","OS":"linux","vec":{},"digests":{},"perl":"5.18.0","finish":1369085403.27776,"count":{}},"1369085403.5988.01734":{"OS":"linux","run":"t/GeoIP2/WebService/Client.t","vec":{},"collected":["branch","condition","statement","subroutine","time"],"start":1369085403.51622,"finish":1369085403.51625,"count":{},"perl":"5.18.0","digests":{}},"1369085402.5979.53107":{"finish":1369085402.80597,"count":{},"digests":{},"perl":"5.18.0","OS":"linux","run":"t/GeoIP2/Model/names.t","vec":{},"collected":["branch","condition","statement","subroutine","time"],"start":1369085402.80595}}}
\ No newline at end of file
@@ -1,75 +0,0 @@
-/* Stylesheet for Devel::Cover HTML reports */
-
-/* You may modify this file to alter the appearance of your coverage
- * reports. If you do, you should probably flag it read-only to prevent
- * future runs from overwriting it.
- */
-
-/* Note: default values use the color-safe web palette. */
-
-body {
- font-family: sans-serif;
-}
-
-h1 {
- background-color: #3399ff;
- border: solid 1px #999999;
- padding: 0.2em;
- -moz-border-radius: 10px;
-}
-
-a {
- color: #000000;
-}
-a:visited {
- color: #333333;
-}
-
-table {
- border-collapse: collapse;
- border-spacing: 0px;
-}
-tr {
- text-align : center;
- vertical-align: top;
-}
-th,.h {
- background-color: #cccccc;
- border: solid 1px #333333;
- padding: 0em 0.2em;
-}
-td {
- border: solid 1px #cccccc;
-}
-
-/* source code */
-pre,.s {
- text-align: left;
- font-family: monospace;
- white-space: pre;
- padding: 0em 0.5em 0em 0.5em;
-}
-
-/* Classes for color-coding coverage information:
- * c0 : path not covered or coverage < 75%
- * c1 : coverage >= 75%
- * c2 : coverage >= 90%
- * c3 : path covered or coverage = 100%
- */
-.c0, .c1, .c2, .c3 { text-align: right; }
-.c0 {
- background-color: #ff9999;
- border: solid 1px #cc0000;
-}
-.c1 {
- background-color: #ffcc99;
- border: solid 1px #ff9933;
-}
-.c2 {
- background-color: #ffff99;
- border: solid 1px #cccc66;
-}
-.c3 {
- background-color: #99ff99;
- border: solid 1px #009900;
-}
@@ -1,37 +0,0 @@
-<!DOCTYPE html
- PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<!--
-This file was generated by Devel::Cover Version 1.03
-Devel::Cover is copyright 2001-2012, Paul Johnson (paul@pjcj.net)
-Devel::Cover is free. It is licensed under the same terms as Perl itself.
-The latest version of Devel::Cover should be available from my homepage:
-http://www.pjcj.net
--->
-<head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta>
- <meta http-equiv="Content-Language" content="en-us"></meta>
- <link rel="stylesheet" type="text/css" href="cover.css"></link>
- <link rel="stylesheet" type="text/css" href="cover.css"></link>
- <title>Coverage Summary</title>
-</head>
-<body>
-<h1>Coverage Summary</h1>
-<table>
- <tr><td class="h" align="right">Database:</td><td align="left" colspan="4">/home/greg/MaxMind/GeoIP2-perl/cover_db</td></tr>
- <tr><td class="h" align="right">Report Date:</td><td align="left" colspan="4">2013-05-20 14:30:03</td></tr>
- <tr><td class="h" align="right">Perl Version:</td><td align="left" colspan="4">v5.18.0</td></tr>
- <tr><td class="h" align="right">OS:</td><td align="left" colspan="4">linux</td></tr>
- <tr>
- <td class="h" align="right">Thresholds:</td>
- <td class="c0">< 75%</td><td class="c1">< 90%</td><td class="c2">< 100%</td><td class="c3">= 100%</td>
- </tr>
-</table>
-<div><br/></div>
-<table>
-<tr><th>file</th><th>stmt</th><th>bran</th><th>cond</th><th>sub</th><th>time</th><th>total</th></tr>
-<tr><td align="left">Total</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td><td>n/a</td></tr>
-</table>
-</body>
-</html>
@@ -1 +0,0 @@
-{"daefb18c5c6bd6ace0e349ebdab2f154":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/blib.pm","f26f975c1dadf6a436c2e0fe1932b6e9":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Condition.pm","7875ee67634b05d671b0d972109e44f9":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/DB/File.pm","318e5dc1bffe6f768c454eaa1754e4df":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/Exporter/Heavy.pm","e607c6dfd4cc596889d41737d3c52f65":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/warnings/register.pm","7821b5bf6855cb8189ed39032e477382":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/List/Util.pm","6596a7a2c8c9c9efdcbd6ffde5de49fb":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Branch.pm","d1dd254359351507b57b2271c382608a":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/bytes.pm","76cf016f4a350a7e2a0aab2865426d6a":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/re.pm","2bd9e1fe176ae30411453c0933a46487":"t/GeoIP2/Types.t","5dd51a69b0e45cf63ccac5ec7d207239":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Time.pm","a12cb1908be1d11b93155f1640ec5056":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/overload.pm","058317eea9922e787664c3ae648e784b":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Dumper.pm","e450b361381e8f55781bb30d82f1391a":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/File/Glob.pm","4ed526c41268a6e65280fc3da2124a52":"t/GeoIP2/Model/Country.t","a3f3f52bfa772df49e533b3ace1da9c5":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/B.pm","0691ec7af0b6d41e5adec21baf68b4f0":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/DB/Digests.pm","e87fb9db6331c105e4a4b01a4f7668e2":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/DB/IO.pm","e136a4f1dfe51c42e0ffcbffdba120ec":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Util.pm","093ad7e78554c8e39638d059ff439a37":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Condition_or_2.pm","bbb9a2ff534b861b14e77235d961b2f4":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/utf8.pm","688e0cff9771e9780688ae9587e78118":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/JSON/PP.pm","dbe38ddf0c816a9ae7d5bd271e4c9098":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Condition_or_3.pm","629b3477329eee3c0cd27109e6b683c5":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/Carp.pm","262cf42a8f0afc4a464bf1318fd6f85a":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/base.pm","52ade067230402b3e5e61dc63518d388":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/File/Path.pm","ce58375e7612ce9590896a6e128d9404":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/Errno.pm","871273780eddc9dae3ced34c6480ce2a":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Condition_xor_4.pm","e96d8c42c5156f6c28b6254589774e89":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/Scalar/Util.pm","95f86f7030b51c61190d5570bc00e218":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Statement.pm","310c0fa0e8552f80d6151b3206e69f0d":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/Exporter.pm","fcd192cb27bf94ce6f55a12343c31c32":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Pod.pm","dcf63f2a87d97f37b745ddc4cbafd1b3":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/DynaLoader.pm","6491f06f4ca315af888da9fbe63522c1":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/XSLoader.pm","6317d7babea18d2c57ff546f233fa69d":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/DB/IO/JSON.pm","395eeb0fbf673ecf6760be2e1d34aac9":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/Config.pm","3de16a17fa8902f810f7c3e2b119c5ea":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/feature.pm","613c5318b87aa69b1145ca028f964445":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/vars.pm","36e1b34f8175e036d57e51fd7d56becd":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/overloading.pm","ec0004da56cdb3c3e03aaa8d627eabe1":"t/GeoIP2/Model/names.t","fc1a293cc37a869f8c5fe04a3773519b":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/warnings.pm","55d11da69044499fc0ea6c3be2fadc28":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Condition_and_2.pm","d659ad49fbe4fcca370541d5ed25cc75":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/constant.pm","697261014d449f5bcd565a93a7136135":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Criterion.pm","f29063cbd77fa96728ff1c621dbab609":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/DB/Structure.pm","6858d68ded21176482bab1df4d8f87dd":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/Cwd.pm","4ee6b5a6c9693dda3552e1472cfedbf0":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/B/Deparse.pm","895b6eeb921bcbd9677ab313f3af834e":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/B/Debug.pm","43b69afdbc4ea7728358328fe461f89e":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Subroutine.pm","800622ee44e5700d8eb08d0611e9b65a":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/strict.pm","588743a1e2bab11e582d8d4794d30833":"t/GeoIP2/WebService/Client.t","23e391c36b29d350bb584ade1a0167f1":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/Condition_and_3.pm","1e8d6859ddb082ad01a20b99991382e7":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover/DB.pm","8a0df8011c07c806a56670059900f14f":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/site_perl/5.18.0/x86_64-linux/Devel/Cover.pm","f3c9df98223f53fee221435ddf5e9733":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/File/Basename.pm","70707096a90be3068ba6feae636d5ad6":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/Fcntl.pm","9264b63af280d25c3052798f55e2b1c5":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/x86_64-linux/File/Spec/Unix.pm","c46e2ebb720ee7d9c600ce5acbf34291":"/home/greg/perl5/perlbrew/perls/perl-5.18.0/lib/5.18.0/Digest/base.pm","5d8a055d27157bf7ddf77fb28f4b2bf8":"t/GeoIP2/Model/Omni.t"}
\ No newline at end of file
@@ -0,0 +1,60 @@
+requires "B" => "0";
+requires "Data::Dumper" => "0";
+requires "Data::Validate::IP" => "0.24";
+requires "Exporter" => "0";
+requires "Getopt::Long" => "0";
+requires "JSON" => "0";
+requires "LWP::Protocol::https" => "0";
+requires "LWP::UserAgent" => "0";
+requires "List::MoreUtils" => "0";
+requires "List::Util" => "0";
+requires "MIME::Base64" => "0";
+requires "MaxMind::DB::Reader" => "1.000000";
+requires "Moo" => "0";
+requires "Moo::Role" => "0";
+requires "Params::Validate" => "0";
+requires "Scalar::Util" => "0";
+requires "Sub::Quote" => "0";
+requires "Throwable::Error" => "0";
+requires "Try::Tiny" => "0";
+requires "URI" => "0";
+requires "lib" => "0";
+requires "perl" => "5.008";
+requires "strict" => "0";
+requires "warnings" => "0";
+
+on 'test' => sub {
+ requires "ExtUtils::MakeMaker" => "0";
+ requires "File::Spec" => "0";
+ requires "HTTP::Status" => "0";
+ requires "IO::Compress::Gzip" => "0";
+ requires "IO::Handle" => "0";
+ requires "IPC::Open3" => "0";
+ requires "Path::Class" => "0";
+ requires "Test::Fatal" => "0";
+ requires "Test::More" => "0.88";
+ requires "base" => "0";
+ requires "perl" => "5.008";
+ requires "utf8" => "0";
+};
+
+on 'test' => sub {
+ recommends "CPAN::Meta" => "2.120900";
+};
+
+on 'configure' => sub {
+ requires "ExtUtils::MakeMaker" => "0";
+ requires "perl" => "5.008";
+};
+
+on 'develop' => sub {
+ requires "Pod::Coverage::TrustPod" => "0";
+ requires "Test::CPAN::Changes" => "0.19";
+ requires "Test::EOL" => "0";
+ requires "Test::More" => "0.88";
+ requires "Test::NoTabs" => "0";
+ requires "Test::Pod" => "1.41";
+ requires "Test::Pod::Coverage" => "1.08";
+ requires "Test::Spelling" => "0.12";
+ requires "Test::Synopsis" => "0";
+};
@@ -1,61 +1,17 @@
-name = GeoIP2
-author = Dave Rolsky <drolsky@maxmind.com>
-author = Greg Oschwald <goschwald@maxmind.com>
-author = Olaf Alders <oalders@maxmind.com>
-license = Perl_5
-copyright_holder = MaxMind, Inc.
-
-version = 2.000001
-
-[NextRelease]
-format = %-8v %{yyyy-MM-dd}d
-
-[@Filter]
--bundle = @Basic
--remove = License
--remove = UploadToCPAN
-
-[UploadToCPAN]
-pause_cfg_file = .pause-maxmind
-
-[Authority]
-authority = cpan:MAXMIND
-do_munging = 0
-
-[PruneFiles]
-filename = Makefile.PL
-filename = README
-
-[ContributorsFromGit]
-[CopyReadmeFromBuild]
-[InstallGuide]
-[MetaJSON]
-[ReadmeFromPod]
-
-[MetaResources]
-bugtracker.web = https://github.com/maxmind/GeoIP2-perl/issues
-repository.url = git://github.com/maxmind/GeoIP2-perl.git
-repository.web = https://github.com/maxmind/GeoIP2-perl
-repository.type = git
-
-[SurgicalPodWeaver]
-; authordep Dist::Zilla::Plugin::PodWeaver
-
-[PkgVersion]
-
-[EOLTests]
-[Test::NoTabs]
-[PodSyntaxTests]
-[Test::CPAN::Changes]
-;[Test::Pod::LinkCheck]
-;[Test::Pod::No404s]
-[Test::Synopsis]
-; authordep Pod::Wordlist::hanekomu
-
-[AutoPrereqs]
-
-[CheckPrereqsIndexed]
-
-[@Git]
-allow_dirty = Changes
-allow_dirty = README
+name = GeoIP2
+author = Dave Rolsky <drolsky@maxmind.com>
+author = Greg Oschwald <goschwald@maxmind.com>
+author = Olaf Alders <oalders@maxmind.com>
+copyright_year = 2013
+
+version = 2.001000
+
+[Encoding]
+encoding = bytes
+match = \.(?:mmdb|raw)$
+
+[@MAXMIND]
+dist = GeoIP2
+pod_coverage_class = Pod::Coverage::Moose
+pod_coverage_skip = qr/^GeoIP2::(?:Role|Types)/
+stopwords_file = .stopwords
@@ -1,5 +1,5 @@
package GeoIP2::Database::Reader;
-$GeoIP2::Database::Reader::VERSION = '2.000001';
+$GeoIP2::Database::Reader::VERSION = '2.001000';
use strict;
use warnings;
@@ -7,6 +7,7 @@ use Data::Validate::IP 0.24
qw( is_ipv4 is_ipv6 is_private_ipv4 is_private_ipv6 );
use GeoIP2::Error::Generic;
use GeoIP2::Error::IPAddressNotFound;
+use GeoIP2::Model::AnonymousIP;
use GeoIP2::Model::City;
use GeoIP2::Model::ConnectionType;
use GeoIP2::Model::Country;
@@ -146,6 +147,16 @@ sub isp {
);
}
+sub anonymous_ip {
+ my $self = shift;
+ return $self->_model_for_address(
+ 'AnonymousIP',
+ type_check => qr/^GeoIP2-Anonymous-IP$/,
+ is_flat => 1,
+ @_,
+ );
+}
+
1;
# ABSTRACT: Perl API for GeoIP2 databases
@@ -160,7 +171,7 @@ GeoIP2::Database::Reader - Perl API for GeoIP2 databases
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -292,6 +303,10 @@ This method returns a L<GeoIP2::Model::Domain> object.
This method returns a L<GeoIP2::Model::ISP> object.
+=head2 $reader->anonymous_ip()
+
+This method returns a L<GeoIP2::Model::AnonymousIP> object.
+
=head1 OTHER METHODS
=head2 $reader->metadata()
@@ -345,7 +360,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Error::Generic;
-$GeoIP2::Error::Generic::VERSION = '2.000001';
+$GeoIP2::Error::Generic::VERSION = '2.001000';
use strict;
use warnings;
@@ -21,7 +21,7 @@ GeoIP2::Error::Generic - A generic exception
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -76,7 +76,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Error::HTTP;
-$GeoIP2::Error::HTTP::VERSION = '2.000001';
+$GeoIP2::Error::HTTP::VERSION = '2.001000';
use strict;
use warnings;
@@ -23,7 +23,7 @@ GeoIP2::Error::HTTP - An HTTP transport error
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -91,7 +91,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Error::IPAddressNotFound;
-$GeoIP2::Error::IPAddressNotFound::VERSION = '2.000001';
+$GeoIP2::Error::IPAddressNotFound::VERSION = '2.001000';
use strict;
use warnings;
@@ -29,7 +29,7 @@ GeoIP2::Error::IPAddressNotFound - An exception thrown when an IP address is not
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -90,7 +90,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Error::Type;
-$GeoIP2::Error::Type::VERSION = '2.000001';
+$GeoIP2::Error::Type::VERSION = '2.001000';
use strict;
use warnings;
@@ -33,7 +33,7 @@ GeoIP2::Error::Type - A type validation error.
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -101,7 +101,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Error::WebService;
-$GeoIP2::Error::WebService::VERSION = '2.000001';
+$GeoIP2::Error::WebService::VERSION = '2.001000';
use strict;
use warnings;
@@ -31,7 +31,7 @@ GeoIP2::Error::WebService - An explicit error from the GeoIP2 web service
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -108,7 +108,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -0,0 +1,114 @@
+package GeoIP2::Model::AnonymousIP;
+$GeoIP2::Model::AnonymousIP::VERSION = '2.001000';
+use strict;
+use warnings;
+
+use GeoIP2::Types qw( Bool );
+
+use Moo;
+
+with 'GeoIP2::Role::Model::Flat', 'GeoIP2::Role::HasIPAddress';
+
+has [
+ 'is_anonymous',
+ 'is_anonymous_vpn',
+ 'is_hosting_provider',
+ 'is_public_proxy',
+ 'is_tor_exit_node'
+ ] => (
+ is => 'ro',
+ isa => Bool,
+ default => 0,
+ );
+
+1;
+
+# ABSTRACT: Model class for the GeoIP2 Anonymous IP database
+
+__END__
+
+=pod
+
+=head1 NAME
+
+GeoIP2::Model::AnonymousIP - Model class for the GeoIP2 Anonymous IP database
+
+=head1 VERSION
+
+version 2.001000
+
+=head1 SYNOPSIS
+
+ use 5.008;
+
+ use GeoIP2::Model::AnonymousIP;
+
+ my $anon = GeoIP2::Model::AnonymousIP->new(
+ raw => {
+ is_anonymous => 1,
+ is_hosting_provider => 1,
+ ip_address => '24.24.24.24'
+ }
+ );
+
+ say $anon->is_anonymous();
+
+=head1 DESCRIPTION
+
+This class provides a model for the data returned by the GeoIP2 Anonymous IP
+database.
+
+=head1 METHODS
+
+This class provides the following methods:
+
+=head2 $anon->is_anonynous()
+
+Returns true if the IP address belongs to any sort of anonymous network.
+
+=head2 $anon->is_anonynous_vpn()
+
+Returns true if the IP address belongs to an anonymous VPN system.
+
+=head2 $anon->is_hosting_provider()
+
+Returns true if the IP address belongs to a hosting provider.
+
+=head2 $anon->is_public_proxy()
+
+Returns true if the IP address belongs to a public proxy.
+
+=head2 $anon->is_tor_exit_node()
+
+Returns true if the IP address is a Tor exit node.
+
+=head2 $anon->ip_address()
+
+Returns the IP address used in the lookup.
+
+=head1 AUTHORS
+
+=over 4
+
+=item *
+
+Dave Rolsky <drolsky@maxmind.com>
+
+=item *
+
+Greg Oschwald <goschwald@maxmind.com>
+
+=item *
+
+Olaf Alders <oalders@maxmind.com>
+
+=back
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
+
+This is free software; you can redistribute it and/or modify it under
+the same terms as the Perl 5 programming language system itself.
+
+=cut
@@ -1,5 +1,5 @@
package GeoIP2::Model::City;
-$GeoIP2::Model::City::VERSION = '2.000001';
+$GeoIP2::Model::City::VERSION = '2.001000';
use strict;
use warnings;
@@ -26,7 +26,7 @@ GeoIP2::Model::City - Model class for GeoIP2 Precision: City and GeoIP2 City
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -150,7 +150,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Model::ConnectionType;
-$GeoIP2::Model::ConnectionType::VERSION = '2.000001';
+$GeoIP2::Model::ConnectionType::VERSION = '2.001000';
use strict;
use warnings;
@@ -29,7 +29,7 @@ GeoIP2::Model::ConnectionType - Model class for the GeoIP2 Connection Type datab
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -37,25 +37,26 @@ version 2.000001
use GeoIP2::Model::ConnectionType;
- my $record = GeoIP2::Model::ConnectionType->new(
+ my $conn = GeoIP2::Model::ConnectionType->new(
raw => { connection_type => 'Corporate', ip_address => '24.24.24.24'}
);
- say $record->connection_type();
+ say $conn->connection_type();
=head1 DESCRIPTION
-This class provides a model for GeoIP2 Connection-Type.
+This class provides a model for the data returned by the GeoIP2 Connection
+Type database.
=head1 METHODS
This class provides the following methods:
-=head2 $record->connection_type()
+=head2 $conn->connection_type()
Returns the connection type as a string.
-=head2 $record->ip_address()
+=head2 $conn->ip_address()
Returns the IP address used in the lookup.
@@ -79,7 +80,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Model::Country;
-$GeoIP2::Model::Country::VERSION = '2.000001';
+$GeoIP2::Model::Country::VERSION = '2.001000';
use strict;
use warnings;
@@ -27,7 +27,7 @@ GeoIP2::Model::Country - Model class for the GeoIP2 Precision: Country and GeoIP
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -109,7 +109,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Model::Domain;
-$GeoIP2::Model::Domain::VERSION = '2.000001';
+$GeoIP2::Model::Domain::VERSION = '2.001000';
use strict;
use warnings;
@@ -29,7 +29,7 @@ GeoIP2::Model::Domain - Model class for the GeoIP2 Domain database
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -37,25 +37,26 @@ version 2.000001
use GeoIP2::Model::Domain;
- my $record = GeoIP2::Model::Domain->new(
+ my $domain = GeoIP2::Model::Domain->new(
raw => { domain => 'maxmind.com', ip_address => '24.24.24.24'}
);
- say $record->domain();
+ say $domain->domain();
=head1 DESCRIPTION
-This class provides a model for GeoIP2 Domain.
+This class provides a model for the data returned by the GeoIP2 Domain
+database.
=head1 METHODS
This class provides the following methods:
-=head2 $record->domain()
+=head2 $domain->domain()
Returns the domain as a string.
-=head2 $record->ip_address()
+=head2 $domain->ip_address()
Returns the IP address used in the lookup.
@@ -79,7 +80,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Model::ISP;
-$GeoIP2::Model::ISP::VERSION = '2.000001';
+$GeoIP2::Model::ISP::VERSION = '2.001000';
use strict;
use warnings;
@@ -47,7 +47,7 @@ GeoIP2::Model::ISP - Model class for the GeoIP2 ISP database
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -55,7 +55,7 @@ version 2.000001
use GeoIP2::Model::ISP;
- my $record = GeoIP2::Model::ISP->new(
+ my $isp = GeoIP2::Model::ISP->new(
raw => {
autonomous_system_number => '217',
autonomous_system_organization => 'University of Minnesota',
@@ -65,40 +65,40 @@ version 2.000001
}
);
- say $record->autonomous_system_number();
- say $record->autonomous_system_organization();
- say $record->isp();
- say $record->organization();
+ say $isp->autonomous_system_number();
+ say $isp->autonomous_system_organization();
+ say $isp->isp();
+ say $isp->organization();
=head1 DESCRIPTION
-This class provides a model for GeoIP2 Connection-Type.
+This class provides a model for the data returned by the GeoIP2 ISP database.
=head1 METHODS
This class provides the following methods:
-=head2 $record->autonomous_system_number()
+=head2 $isp->autonomous_system_number()
This returns the autonomous system number
(L<http://en.wikipedia.org/wiki/Autonomous_system_(Internet)>) associated with
the IP address.
-=head2 $record->autonomous_system_organization()
+=head2 $isp->autonomous_system_organization()
This returns the organization associated with the registered autonomous system
number (L<http://en.wikipedia.org/wiki/Autonomous_system_(Internet)>) for the IP
address.
-=head2 $record->ip_address()
+=head2 $isp->ip_address()
Returns the IP address used in the lookup.
-=head2 $record->isp()
+=head2 $isp->isp()
This returns the name of the ISP associated with the IP address.
-=head2 $record->organization()
+=head2 $isp->organization()
This returns the name of the organization associated with the IP address.
@@ -122,7 +122,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Model::Insights;
-$GeoIP2::Model::Insights::VERSION = '2.000001';
+$GeoIP2::Model::Insights::VERSION = '2.001000';
use strict;
use warnings;
@@ -26,7 +26,7 @@ GeoIP2::Model::Insights - Model class for GeoIP2 Precision: Insights
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -150,7 +150,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::City;
-$GeoIP2::Record::City::VERSION = '2.000001';
+$GeoIP2::Record::City::VERSION = '2.001000';
use strict;
use warnings;
@@ -35,7 +35,7 @@ GeoIP2::Record::City - Contains data for the city record associated with an IP a
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -116,7 +116,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::Continent;
-$GeoIP2::Record::Continent::VERSION = '2.000001';
+$GeoIP2::Record::Continent::VERSION = '2.001000';
use strict;
use warnings;
@@ -35,7 +35,7 @@ GeoIP2::Record::Continent - Contains data for the continent record associated wi
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -116,7 +116,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::Country;
-$GeoIP2::Record::Country::VERSION = '2.000001';
+$GeoIP2::Record::Country::VERSION = '2.001000';
use strict;
use warnings;
@@ -21,7 +21,7 @@ GeoIP2::Record::Country - Contains data for the country record associated with a
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -109,7 +109,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::Location;
-$GeoIP2::Record::Location::VERSION = '2.000001';
+$GeoIP2::Record::Location::VERSION = '2.001000';
use strict;
use warnings;
@@ -51,7 +51,7 @@ GeoIP2::Record::Location - Contains data for the location record associated with
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -133,7 +133,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::MaxMind;
-$GeoIP2::Record::MaxMind::VERSION = '2.000001';
+$GeoIP2::Record::MaxMind::VERSION = '2.001000';
use strict;
use warnings;
@@ -26,7 +26,7 @@ GeoIP2::Record::MaxMind - Contains data for the maxmind record returned from a w
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -83,7 +83,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::Postal;
-$GeoIP2::Record::Postal::VERSION = '2.000001';
+$GeoIP2::Record::Postal::VERSION = '2.001000';
use strict;
use warnings;
@@ -33,7 +33,7 @@ GeoIP2::Record::Postal - Contains data for the postal code record associated wit
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -96,7 +96,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::RepresentedCountry;
-$GeoIP2::Record::RepresentedCountry::VERSION = '2.000001';
+$GeoIP2::Record::RepresentedCountry::VERSION = '2.001000';
use strict;
use warnings;
@@ -29,7 +29,7 @@ GeoIP2::Record::RepresentedCountry - Contains data for the represented country r
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -128,7 +128,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::Subdivision;
-$GeoIP2::Record::Subdivision::VERSION = '2.000001';
+$GeoIP2::Record::Subdivision::VERSION = '2.001000';
use strict;
use warnings;
@@ -41,7 +41,7 @@ GeoIP2::Record::Subdivision - Contains data for the subdivision record associate
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -131,7 +131,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Record::Traits;
-$GeoIP2::Record::Traits::VERSION = '2.000001';
+$GeoIP2::Record::Traits::VERSION = '2.001000';
use strict;
use warnings;
@@ -74,7 +74,7 @@ GeoIP2::Record::Traits - Contains data for the traits record associated with an
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -226,7 +226,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,5 @@
package GeoIP2::Role::Error::HTTP;
-$GeoIP2::Role::Error::HTTP::VERSION = '2.000001';
+$GeoIP2::Role::Error::HTTP::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::HasIPAddress;
-$GeoIP2::Role::HasIPAddress::VERSION = '2.000001';
+$GeoIP2::Role::HasIPAddress::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::HasLocales;
-$GeoIP2::Role::HasLocales::VERSION = '2.000001';
+$GeoIP2::Role::HasLocales::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::Model::Flat;
-$GeoIP2::Role::Model::Flat::VERSION = '2.000001';
+$GeoIP2::Role::Model::Flat::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::Model::HasSubdivisions;
-$GeoIP2::Role::Model::HasSubdivisions::VERSION = '2.000001';
+$GeoIP2::Role::Model::HasSubdivisions::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::Model::Location;
-$GeoIP2::Role::Model::Location::VERSION = '2.000001';
+$GeoIP2::Role::Model::Location::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::Model;
-$GeoIP2::Role::Model::VERSION = '2.000001';
+$GeoIP2::Role::Model::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::Record::Country;
-$GeoIP2::Role::Record::Country::VERSION = '2.000001';
+$GeoIP2::Role::Record::Country::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Role::Record::HasNames;
-$GeoIP2::Role::Record::HasNames::VERSION = '2.000001';
+$GeoIP2::Role::Record::HasNames::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::Types;
-$GeoIP2::Types::VERSION = '2.000001';
+$GeoIP2::Types::VERSION = '2.001000';
use strict;
use warnings;
@@ -1,5 +1,5 @@
package GeoIP2::WebService::Client;
-$GeoIP2::WebService::Client::VERSION = '2.000001';
+$GeoIP2::WebService::Client::VERSION = '2.001000';
use 5.008;
use strict;
@@ -312,7 +312,7 @@ GeoIP2::WebService::Client - Perl API for the GeoIP2 Precision web services
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 SYNOPSIS
@@ -559,7 +559,7 @@ Olaf Alders <oalders@maxmind.com>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -1,5 +1,7 @@
package GeoIP2;
-$GeoIP2::VERSION = '2.000001';
+# git description: v2.000001-11-g79e8ecc
+$GeoIP2::VERSION = '2.001000';
+
use 5.008;
1;
@@ -16,7 +18,7 @@ GeoIP2 - Perl API for MaxMind's GeoIP2 web services and databases
=head1 VERSION
-version 2.000001
+version 2.001000
=head1 DESCRIPTION
@@ -114,11 +116,13 @@ Olaf Alders <oalders@maxmind.com>
=head1 CONTRIBUTOR
+=for stopwords Graham Knop
+
Graham Knop <haarg@haarg.org>
=head1 COPYRIGHT AND LICENSE
-This software is copyright (c) 2014 by MaxMind, Inc..
+This software is copyright (c) 2013 - 2014 by MaxMind, Inc..
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
@@ -0,0 +1,32 @@
+[
+ {
+ "::1.2.0.0/112" : {
+ "is_anonymous" : true,
+ "is_anonymous_vpn": true
+ }
+ },
+ {
+ "::71.160.223.0/120" : {
+ "is_anonymous" : true,
+ "is_hosting_provider": true
+ }
+ },
+ {
+ "::186.30.236.0/120" : {
+ "is_anonymous" : true,
+ "is_public_proxy": true
+ }
+ },
+ {
+ "::65.0.0.0/109" : {
+ "is_anonymous" : true,
+ "is_tor_exit_node": true
+ }
+ },
+ {
+ "abcd:1000::/112" : {
+ "is_anonymous" : true,
+ "is_public_proxy": true
+ }
+ }
+]
diff --git a/var/tmp/source/MAXMIND/GeoIP2-2.001000/GeoIP2-2.001000/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb b/var/tmp/source/MAXMIND/GeoIP2-2.001000/GeoIP2-2.001000/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb
new file mode 100644
index 00000000..dc706370
Binary files /dev/null and b/var/tmp/source/MAXMIND/GeoIP2-2.001000/GeoIP2-2.001000/maxmind-db/test-data/GeoIP2-Anonymous-IP-Test.mmdb differ
@@ -302,9 +302,15 @@ sub write_test_db {
}
sub write_geoip2_dbs {
- for my $type ( 'City', 'Connection-Type', 'Country', 'Domain', 'ISP', ) {
- _write_geoip2_db( $type, 'Test' );
- }
+ _write_geoip2_db( @{$_}, 'Test' )
+ for (
+ [ 'Anonymous-IP', 1 ],
+ [ 'City', 0 ],
+ [ 'Connection-Type', 0 ],
+ [ 'Country', 0 ],
+ [ 'Domain', 0 ],
+ [ 'ISP', 0 ],
+ );
}
sub write_broken_geoip2_city_db {
@@ -321,7 +327,7 @@ sub write_broken_geoip2_city_db {
$self->_simple_encode( double => $value );
};
- _write_geoip2_db( 'City', 'Test Broken Double Format' );
+ _write_geoip2_db( 'City', 0, 'Test Broken Double Format' );
}
{
@@ -333,9 +339,7 @@ sub write_broken_geoip2_city_db {
continent => 'map',
country => 'map',
geoname_id => 'uint32',
- is_anonymous_proxy => 'boolean',
isp => 'utf8_string',
- is_satellite_provider => 'boolean',
latitude => 'double',
location => 'map',
longitude => 'double',
@@ -349,11 +353,15 @@ sub write_broken_geoip2_city_db {
traits => 'map',
);
- my $type_cb = sub { $type_map{ $_[0] } // 'utf8_string' };
+ my $type_cb = sub {
+ return 'boolean' if $_[0] =~ /^is_/;
+ return $type_map{ $_[0] } // 'utf8_string';
+ };
sub _write_geoip2_db {
- my $type = shift;
- my $description = shift;
+ my $type = shift;
+ my $populate_all_networks = shift;
+ my $description = shift;
my $writer = MaxMind::DB::Writer::Tree->new(
ip_version => 6,
@@ -366,10 +374,12 @@ sub write_broken_geoip2_city_db {
"GeoIP2 $type $description Database (a small sample of real GeoIP2 data)",
$type eq 'City' ? ( zh => '小型数据库' ) : (),
},
- alias_ipv6_to_ipv4 => 1,
- map_key_type_callback => $type_cb,
+ alias_ipv6_to_ipv4 => 1,
+ map_key_type_callback => $type_cb,
);
+ _populate_all_networks($writer) if $populate_all_networks;
+
my $nodes = decode_json(
read_file(
"$Dir/../source-data/GeoIP2-$type-Test.json",
@@ -397,6 +407,26 @@ sub write_broken_geoip2_city_db {
}
}
+sub _populate_all_networks {
+ my $writer = shift;
+
+ my $max_uint128 = uint128(0) - 1;
+ my @networks = Net::Works::Network->range_as_subnets(
+ Net::Works::Address->new_from_integer(
+ integer => 0,
+ version => 6,
+ ),
+ Net::Works::Address->new_from_integer(
+ integer => $max_uint128,
+ version => 6,
+ ),
+ );
+
+ for my $network (@networks) {
+ $writer->insert_network( $network => {} );
+ }
+}
+
sub write_no_ipv4_tree_db {
my $subnets = shift;
@@ -1,19 +0,0 @@
-perltidy version 20130806 log file on a linux system, OLD_PERL_VERSION=5.016003
-Found Configuration File >>> /home/greg/MaxMind/GeoIP2-perl/.perltidyallrc
-Configuration and command line parameters for this run:
---blank-lines-before-packages=0 --iterations=2 --nooutdent-long-comments -bar -boc -ci=4 -i=4 -l=78 -nolq -se -wbb=% + - * / x != == >= <= =~ !~ < > | & >= < = **= += *= &= <<= &&= -= /= |= >>= ||= .= %= ^= x= -profile=/home/greg/MaxMind/GeoIP2-perl/.perltidyallrc
-To find error messages search for 'WARNING' with your editor
-Indentation will be with 4 spaces
-Line 1 implies starting-indentation-level = 0
-The nesting depths in the table below are at the start of the lines.
-The indicated output line numbers are not always exact.
-ci = levels of continuation indentation; bk = 1 if in BLOCK, 0 if not.
-
-in:out indent c b nesting code + messages; (messages begin with >>>)
-lines levels i k (code begins with one '.' per indent level)
------- ----- - - -------- -------------------------------------------
-L19:19 i0:0 0 1 >>>Starting __DATA__ section
-No indentation disagreement seen
-
-No lines exceeded 78 characters
- Maximum output line length was 71 at line 10
@@ -0,0 +1,111 @@
+use 5.006;
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::Compile 2.051
+
+use Test::More;
+
+plan tests => 35 + ($ENV{AUTHOR_TESTING} ? 1 : 0);
+
+my @module_files = (
+ 'GeoIP2.pm',
+ 'GeoIP2/Database/Reader.pm',
+ 'GeoIP2/Error/Generic.pm',
+ 'GeoIP2/Error/HTTP.pm',
+ 'GeoIP2/Error/IPAddressNotFound.pm',
+ 'GeoIP2/Error/Type.pm',
+ 'GeoIP2/Error/WebService.pm',
+ 'GeoIP2/Model/AnonymousIP.pm',
+ 'GeoIP2/Model/City.pm',
+ 'GeoIP2/Model/ConnectionType.pm',
+ 'GeoIP2/Model/Country.pm',
+ 'GeoIP2/Model/Domain.pm',
+ 'GeoIP2/Model/ISP.pm',
+ 'GeoIP2/Model/Insights.pm',
+ 'GeoIP2/Record/City.pm',
+ 'GeoIP2/Record/Continent.pm',
+ 'GeoIP2/Record/Country.pm',
+ 'GeoIP2/Record/Location.pm',
+ 'GeoIP2/Record/MaxMind.pm',
+ 'GeoIP2/Record/Postal.pm',
+ 'GeoIP2/Record/RepresentedCountry.pm',
+ 'GeoIP2/Record/Subdivision.pm',
+ 'GeoIP2/Record/Traits.pm',
+ 'GeoIP2/Role/Error/HTTP.pm',
+ 'GeoIP2/Role/HasIPAddress.pm',
+ 'GeoIP2/Role/HasLocales.pm',
+ 'GeoIP2/Role/Model.pm',
+ 'GeoIP2/Role/Model/Flat.pm',
+ 'GeoIP2/Role/Model/HasSubdivisions.pm',
+ 'GeoIP2/Role/Model/Location.pm',
+ 'GeoIP2/Role/Record/Country.pm',
+ 'GeoIP2/Role/Record/HasNames.pm',
+ 'GeoIP2/Types.pm',
+ 'GeoIP2/WebService/Client.pm'
+);
+
+my @scripts = (
+ 'bin/web-service-request'
+);
+
+# no fake home requested
+
+my $inc_switch = -d 'blib' ? '-Mblib' : '-Ilib';
+
+use File::Spec;
+use IPC::Open3;
+use IO::Handle;
+
+open my $stdin, '<', File::Spec->devnull or die "can't open devnull: $!";
+
+my @warnings;
+for my $lib (@module_files)
+{
+ # see L<perlfaq8/How can I capture STDERR from an external command?>
+ my $stderr = IO::Handle->new;
+
+ my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, '-e', "require q[$lib]");
+ binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+ my @_warnings = <$stderr>;
+ waitpid($pid, 0);
+ is($?, 0, "$lib loaded ok");
+
+ if (@_warnings)
+ {
+ warn @_warnings;
+ push @warnings, @_warnings;
+ }
+}
+
+foreach my $file (@scripts)
+{ SKIP: {
+ open my $fh, '<', $file or warn("Unable to open $file: $!"), next;
+ my $line = <$fh>;
+
+ close $fh and skip("$file isn't perl", 1) unless $line =~ /^#!\s*(?:\S*perl\S*)((?:\s+-\w*)*)(?:\s*#.*)?$/;
+ my @flags = $1 ? split(' ', $1) : ();
+
+ my $stderr = IO::Handle->new;
+
+ my $pid = open3($stdin, '>&STDERR', $stderr, $^X, $inc_switch, @flags, '-c', $file);
+ binmode $stderr, ':crlf' if $^O eq 'MSWin32';
+ my @_warnings = <$stderr>;
+ waitpid($pid, 0);
+ is($?, 0, "$file compiled ok");
+
+ # in older perls, -c output is simply the file portion of the path being tested
+ if (@_warnings = grep { !/\bsyntax OK$/ }
+ grep { chomp; $_ ne (File::Spec->splitpath($file))[2] } @_warnings)
+ {
+ warn @_warnings;
+ push @warnings, @_warnings;
+ }
+} }
+
+
+
+is(scalar(@warnings), 0, 'no warnings found')
+ or diag 'got warnings: ', ( Test::More->can('explain') ? Test::More::explain(\@warnings) : join("\n", '', @warnings) ) if $ENV{AUTHOR_TESTING};
+
+
@@ -0,0 +1,70 @@
+do { my $x = {
+ 'configure' => {
+ 'requires' => {
+ 'ExtUtils::MakeMaker' => '0',
+ 'perl' => '5.008'
+ }
+ },
+ 'develop' => {
+ 'requires' => {
+ 'Pod::Coverage::TrustPod' => '0',
+ 'Test::CPAN::Changes' => '0.19',
+ 'Test::EOL' => '0',
+ 'Test::More' => '0.88',
+ 'Test::NoTabs' => '0',
+ 'Test::Pod' => '1.41',
+ 'Test::Pod::Coverage' => '1.08',
+ 'Test::Spelling' => '0.12',
+ 'Test::Synopsis' => '0'
+ }
+ },
+ 'runtime' => {
+ 'requires' => {
+ 'B' => '0',
+ 'Data::Dumper' => '0',
+ 'Data::Validate::IP' => '0.24',
+ 'Exporter' => '0',
+ 'Getopt::Long' => '0',
+ 'JSON' => '0',
+ 'LWP::Protocol::https' => '0',
+ 'LWP::UserAgent' => '0',
+ 'List::MoreUtils' => '0',
+ 'List::Util' => '0',
+ 'MIME::Base64' => '0',
+ 'MaxMind::DB::Reader' => '1.000000',
+ 'Moo' => '0',
+ 'Moo::Role' => '0',
+ 'Params::Validate' => '0',
+ 'Scalar::Util' => '0',
+ 'Sub::Quote' => '0',
+ 'Throwable::Error' => '0',
+ 'Try::Tiny' => '0',
+ 'URI' => '0',
+ 'lib' => '0',
+ 'perl' => '5.008',
+ 'strict' => '0',
+ 'warnings' => '0'
+ }
+ },
+ 'test' => {
+ 'recommends' => {
+ 'CPAN::Meta' => '2.120900'
+ },
+ 'requires' => {
+ 'ExtUtils::MakeMaker' => '0',
+ 'File::Spec' => '0',
+ 'HTTP::Status' => '0',
+ 'IO::Compress::Gzip' => '0',
+ 'IO::Handle' => '0',
+ 'IPC::Open3' => '0',
+ 'Path::Class' => '0',
+ 'Test::Fatal' => '0',
+ 'Test::More' => '0.88',
+ 'base' => '0',
+ 'perl' => '5.008',
+ 'utf8' => '0'
+ }
+ }
+ };
+ $x;
+ }
\ No newline at end of file
@@ -0,0 +1,176 @@
+#!perl
+
+use strict;
+use warnings;
+
+# This test was generated by Dist::Zilla::Plugin::Test::ReportPrereqs 0.019
+
+use Test::More tests => 1;
+
+use ExtUtils::MakeMaker;
+use File::Spec;
+
+# from $version::LAX
+my $lax_version_re =
+ qr/(?: undef | (?: (?:[0-9]+) (?: \. | (?:\.[0-9]+) (?:_[0-9]+)? )?
+ |
+ (?:\.[0-9]+) (?:_[0-9]+)?
+ ) | (?:
+ v (?:[0-9]+) (?: (?:\.[0-9]+)+ (?:_[0-9]+)? )?
+ |
+ (?:[0-9]+)? (?:\.[0-9]+){2,} (?:_[0-9]+)?
+ )
+ )/x;
+
+# hide optional CPAN::Meta modules from prereq scanner
+# and check if they are available
+my $cpan_meta = "CPAN::Meta";
+my $cpan_meta_pre = "CPAN::Meta::Prereqs";
+my $HAS_CPAN_META = eval "require $cpan_meta; $cpan_meta->VERSION('2.120900')" && eval "require $cpan_meta_pre"; ## no critic
+
+# Verify requirements?
+my $DO_VERIFY_PREREQS = 1;
+
+sub _max {
+ my $max = shift;
+ $max = ( $_ > $max ) ? $_ : $max for @_;
+ return $max;
+}
+
+sub _merge_prereqs {
+ my ($collector, $prereqs) = @_;
+
+ # CPAN::Meta::Prereqs object
+ if (ref $collector eq $cpan_meta_pre) {
+ return $collector->with_merged_prereqs(
+ CPAN::Meta::Prereqs->new( $prereqs )
+ );
+ }
+
+ # Raw hashrefs
+ for my $phase ( keys %$prereqs ) {
+ for my $type ( keys %{ $prereqs->{$phase} } ) {
+ for my $module ( keys %{ $prereqs->{$phase}{$type} } ) {
+ $collector->{$phase}{$type}{$module} = $prereqs->{$phase}{$type}{$module};
+ }
+ }
+ }
+
+ return $collector;
+}
+
+my @include = qw(
+
+);
+
+my @exclude = qw(
+
+);
+
+# Add static prereqs to the included modules list
+my $static_prereqs = do 't/00-report-prereqs.dd';
+
+# Merge all prereqs (either with ::Prereqs or a hashref)
+my $full_prereqs = _merge_prereqs(
+ ( $HAS_CPAN_META ? $cpan_meta_pre->new : {} ),
+ $static_prereqs
+);
+
+# Add dynamic prereqs to the included modules list (if we can)
+my ($source) = grep { -f } 'MYMETA.json', 'MYMETA.yml';
+if ( $source && $HAS_CPAN_META ) {
+ if ( my $meta = eval { CPAN::Meta->load_file($source) } ) {
+ $full_prereqs = _merge_prereqs($full_prereqs, $meta->prereqs);
+ }
+}
+else {
+ $source = 'static metadata';
+}
+
+my @full_reports;
+my @dep_errors;
+my $req_hash = $HAS_CPAN_META ? $full_prereqs->as_string_hash : $full_prereqs;
+
+# Add static includes into a fake section
+for my $mod (@include) {
+ $req_hash->{other}{modules}{$mod} = 0;
+}
+
+for my $phase ( qw(configure build test runtime develop other) ) {
+ next unless $req_hash->{$phase};
+ next if ($phase eq 'develop' and not $ENV{AUTHOR_TESTING});
+
+ for my $type ( qw(requires recommends suggests conflicts modules) ) {
+ next unless $req_hash->{$phase}{$type};
+
+ my $title = ucfirst($phase).' '.ucfirst($type);
+ my @reports = [qw/Module Want Have/];
+
+ for my $mod ( sort keys %{ $req_hash->{$phase}{$type} } ) {
+ next if $mod eq 'perl';
+ next if grep { $_ eq $mod } @exclude;
+
+ my $file = $mod;
+ $file =~ s{::}{/}g;
+ $file .= ".pm";
+ my ($prefix) = grep { -e File::Spec->catfile($_, $file) } @INC;
+
+ my $want = $req_hash->{$phase}{$type}{$mod};
+ $want = "undef" unless defined $want;
+ $want = "any" if !$want && $want == 0;
+
+ my $req_string = $want eq 'any' ? 'any version required' : "version '$want' required";
+
+ if ($prefix) {
+ my $have = MM->parse_version( File::Spec->catfile($prefix, $file) );
+ $have = "undef" unless defined $have;
+ push @reports, [$mod, $want, $have];
+
+ if ( $DO_VERIFY_PREREQS && $HAS_CPAN_META && $type eq 'requires' ) {
+ if ( $have !~ /\A$lax_version_re\z/ ) {
+ push @dep_errors, "$mod version '$have' cannot be parsed ($req_string)";
+ }
+ elsif ( ! $full_prereqs->requirements_for( $phase, $type )->accepts_module( $mod => $have ) ) {
+ push @dep_errors, "$mod version '$have' is not in required range '$want'";
+ }
+ }
+ }
+ else {
+ push @reports, [$mod, $want, "missing"];
+
+ if ( $DO_VERIFY_PREREQS && $type eq 'requires' ) {
+ push @dep_errors, "$mod is not installed ($req_string)";
+ }
+ }
+ }
+
+ if ( @reports ) {
+ push @full_reports, "=== $title ===\n\n";
+
+ my $ml = _max( map { length $_->[0] } @reports );
+ my $wl = _max( map { length $_->[1] } @reports );
+ my $hl = _max( map { length $_->[2] } @reports );
+ splice @reports, 1, 0, ["-" x $ml, "-" x $wl, "-" x $hl];
+
+ push @full_reports, map { sprintf(" %*s %*s %*s\n", -$ml, $_->[0], $wl, $_->[1], $hl, $_->[2]) } @reports;
+ push @full_reports, "\n";
+ }
+ }
+}
+
+if ( @full_reports ) {
+ diag "\nVersions for all modules listed in $source (including optional ones):\n\n", @full_reports;
+}
+
+if ( @dep_errors ) {
+ diag join("\n",
+ "\n*** WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING ***\n",
+ "The following REQUIRED prerequisites were not satisfied:\n",
+ @dep_errors,
+ "\n"
+ );
+}
+
+pass;
+
+# vim: ts=4 sts=4 sw=4 et:
@@ -0,0 +1,80 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use GeoIP2::Database::Reader;
+use Path::Class qw( file );
+
+{ # Anonymous IP
+ my $reader
+ = GeoIP2::Database::Reader->new(
+ file => file(qw( maxmind-db test-data GeoIP2-Anonymous-IP-Test.mmdb))
+ );
+
+ my %tests = (
+ '1.2.0.0' => {
+ is_anonymous => 1,
+ is_anonymous_vpn => 1,
+ is_hosting_provider => 0,
+ is_public_proxy => 0,
+ is_tor_exit_node => 0,
+ },
+ '6.7.8.9' => {
+ is_anonymous => 0,
+ is_anonymous_vpn => 0,
+ is_hosting_provider => 0,
+ is_public_proxy => 0,
+ is_tor_exit_node => 0,
+ },
+ '71.160.223.45' => {
+ is_anonymous => 1,
+ is_anonymous_vpn => 0,
+ is_hosting_provider => 1,
+ is_public_proxy => 0,
+ is_tor_exit_node => 0,
+ },
+ '186.30.236.233' => {
+ is_anonymous => 1,
+ is_anonymous_vpn => 0,
+ is_hosting_provider => 0,
+ is_public_proxy => 1,
+ is_tor_exit_node => 0,
+ },
+ '65.4.3.2' => {
+ is_anonymous => 1,
+ is_anonymous_vpn => 0,
+ is_hosting_provider => 0,
+ is_public_proxy => 0,
+ is_tor_exit_node => 1,
+ },
+ 'abcd:1000::1' => {
+ is_anonymous => 1,
+ is_anonymous_vpn => 0,
+ is_hosting_provider => 0,
+ is_public_proxy => 1,
+ is_tor_exit_node => 0,
+ },
+ );
+
+ for my $ip ( sort keys %tests ) {
+ my $model = $reader->anonymous_ip( ip => $ip );
+ for my $meth ( sort keys %{ $tests{$ip} } ) {
+ if ( $tests{$ip}{$meth} ) {
+ ok(
+ $model->$meth(),
+ "$meth is true for $ip"
+ );
+ }
+ else {
+ ok(
+ !$model->$meth(),
+ "$meth is false for $ip"
+ );
+ }
+ }
+ }
+}
+
+done_testing();
@@ -0,0 +1,28 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use GeoIP2::Database::Reader;
+use Path::Class qw( file );
+
+{
+ my $reader
+ = GeoIP2::Database::Reader->new( file =>
+ file(qw( maxmind-db test-data GeoIP2-Connection-Type-Test.mmdb ))
+ );
+
+ my $ip_address = '1.0.1.0';
+ my $record = $reader->connection_type( ip => $ip_address );
+ is(
+ $record->connection_type, 'Cable/DSL',
+ 'correct connection type in Connection-Type database'
+ );
+ is(
+ $record->ip_address, $ip_address,
+ 'correct IP in Connection-Type database'
+ );
+}
+
+done_testing();
@@ -0,0 +1,20 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use GeoIP2::Database::Reader;
+use Path::Class qw( file );
+
+{
+ my $reader = GeoIP2::Database::Reader->new(
+ file => file(qw( maxmind-db test-data GeoIP2-Domain-Test.mmdb)) );
+
+ my $ip_address = '1.2.0.0';
+ my $record = $reader->domain( ip => $ip_address );
+ is( $record->domain, 'maxmind.com', 'correct domain in Domain database' );
+ is( $record->ip_address, $ip_address, 'correct IP in Domain database' );
+}
+
+done_testing();
@@ -0,0 +1,33 @@
+use strict;
+use warnings;
+
+use Test::More;
+use Test::Fatal;
+
+use GeoIP2::Database::Reader;
+use Path::Class qw( file );
+
+{
+ my $reader = GeoIP2::Database::Reader->new(
+ file => file(qw( maxmind-db test-data GeoIP2-ISP-Test.mmdb )) );
+
+ my $ip_address = '1.128.0.0';
+ my $record = $reader->isp( ip => $ip_address );
+ is(
+ $record->autonomous_system_number, 1221,
+ 'correct ASN in ISP database'
+ );
+ is(
+ $record->autonomous_system_organization,
+ 'Telstra Pty Ltd', 'correct AS Org in ISP database'
+ );
+ is( $record->isp, 'Telstra Internet', 'correct ISP in ISP database' );
+ is(
+ $record->organization, 'Telstra Internet',
+ 'correct Org in ISP database'
+ );
+ is( $record->ip_address, $ip_address, 'correct IP in ISP database' );
+
+}
+
+done_testing();
@@ -105,57 +105,4 @@ my $locales = [ 'en', 'de', ];
}
}
-{ # Connection-Type
-
- my $reader
- = GeoIP2::Database::Reader->new( file =>
- file(qw( maxmind-db test-data GeoIP2-Connection-Type-Test.mmdb ))
- );
-
- my $ip_address = '1.0.1.0';
-
- my $record = $reader->connection_type( ip => $ip_address );
- is(
- $record->connection_type, 'Cable/DSL',
- 'correct connection type in Connection-Type database'
- );
- is(
- $record->ip_address, $ip_address,
- 'correct IP in Connection-Type database'
- );
-}
-
-{ # Domain
- my $reader = GeoIP2::Database::Reader->new(
- file => file(qw( maxmind-db test-data GeoIP2-Domain-Test.mmdb)) );
-
- my $ip_address = '1.2.0.0';
- my $record = $reader->domain( ip => $ip_address );
- is( $record->domain, 'maxmind.com', 'correct domain in Domain database' );
- is( $record->ip_address, $ip_address, 'correct IP in Domain database' );
-}
-
-{ # ISP
- my $reader = GeoIP2::Database::Reader->new(
- file => file(qw( maxmind-db test-data GeoIP2-ISP-Test.mmdb )) );
-
- my $ip_address = '1.128.0.0';
- my $record = $reader->isp( ip => $ip_address );
- is(
- $record->autonomous_system_number, 1221,
- 'correct ASN in ISP database'
- );
- is(
- $record->autonomous_system_organization,
- 'Telstra Pty Ltd', 'correct AS Org in ISP database'
- );
- is( $record->isp, 'Telstra Internet', 'correct ISP in ISP database' );
- is(
- $record->organization, 'Telstra Internet',
- 'correct Org in ISP database'
- );
- is( $record->ip_address, $ip_address, 'correct IP in ISP database' );
-
-}
-
done_testing();
@@ -0,0 +1,16 @@
+
+BEGIN {
+ unless ($ENV{AUTHOR_TESTING}) {
+ require Test::More;
+ Test::More::plan(skip_all => 'these tests are for testing by the author');
+ }
+}
+
+use strict;
+use warnings;
+use Test::More;
+
+# generated by Dist::Zilla::Plugin::Test::EOL 0.14
+use Test::EOL;
+
+all_perl_files_ok({ trailing_whitespace => 1 });
@@ -0,0 +1,80 @@
+
+BEGIN {
+ unless ($ENV{AUTHOR_TESTING}) {
+ require Test::More;
+ Test::More::plan(skip_all => 'these tests are for testing by the author');
+ }
+}
+
+use strict;
+use warnings;
+
+# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.09
+
+use Test::More 0.88;
+use Test::NoTabs;
+
+my @files = (
+ 'bin/web-service-request',
+ 'lib/GeoIP2.pm',
+ 'lib/GeoIP2/Database/Reader.pm',
+ 'lib/GeoIP2/Error/Generic.pm',
+ 'lib/GeoIP2/Error/HTTP.pm',
+ 'lib/GeoIP2/Error/IPAddressNotFound.pm',
+ 'lib/GeoIP2/Error/Type.pm',
+ 'lib/GeoIP2/Error/WebService.pm',
+ 'lib/GeoIP2/Model/AnonymousIP.pm',
+ 'lib/GeoIP2/Model/City.pm',
+ 'lib/GeoIP2/Model/ConnectionType.pm',
+ 'lib/GeoIP2/Model/Country.pm',
+ 'lib/GeoIP2/Model/Domain.pm',
+ 'lib/GeoIP2/Model/ISP.pm',
+ 'lib/GeoIP2/Model/Insights.pm',
+ 'lib/GeoIP2/Record/City.pm',
+ 'lib/GeoIP2/Record/Continent.pm',
+ 'lib/GeoIP2/Record/Country.pm',
+ 'lib/GeoIP2/Record/Location.pm',
+ 'lib/GeoIP2/Record/MaxMind.pm',
+ 'lib/GeoIP2/Record/Postal.pm',
+ 'lib/GeoIP2/Record/RepresentedCountry.pm',
+ 'lib/GeoIP2/Record/Subdivision.pm',
+ 'lib/GeoIP2/Record/Traits.pm',
+ 'lib/GeoIP2/Role/Error/HTTP.pm',
+ 'lib/GeoIP2/Role/HasIPAddress.pm',
+ 'lib/GeoIP2/Role/HasLocales.pm',
+ 'lib/GeoIP2/Role/Model.pm',
+ 'lib/GeoIP2/Role/Model/Flat.pm',
+ 'lib/GeoIP2/Role/Model/HasSubdivisions.pm',
+ 'lib/GeoIP2/Role/Model/Location.pm',
+ 'lib/GeoIP2/Role/Record/Country.pm',
+ 'lib/GeoIP2/Role/Record/HasNames.pm',
+ 'lib/GeoIP2/Types.pm',
+ 'lib/GeoIP2/WebService/Client.pm',
+ 't/00-compile.t',
+ 't/00-report-prereqs.dd',
+ 't/00-report-prereqs.t',
+ 't/GeoIP2/Database/Reader-Anonymous-IP.t',
+ 't/GeoIP2/Database/Reader-Connection-Type.t',
+ 't/GeoIP2/Database/Reader-Domain.t',
+ 't/GeoIP2/Database/Reader-ISP.t',
+ 't/GeoIP2/Database/Reader.t',
+ 't/GeoIP2/Error/Type.t',
+ 't/GeoIP2/Model/City.t',
+ 't/GeoIP2/Model/Country.t',
+ 't/GeoIP2/Model/Insights.t',
+ 't/GeoIP2/Model/names.t',
+ 't/GeoIP2/Types.t',
+ 't/GeoIP2/WebService/Client.t',
+ 't/author-eol.t',
+ 't/author-no-tabs.t',
+ 't/author-pod-spell.t',
+ 't/lib/Test/GeoIP2.pm',
+ 't/release-cpan-changes.t',
+ 't/release-pod-coverage.t',
+ 't/release-pod-syntax.t',
+ 't/release-portability.t',
+ 't/release-synopsis.t'
+);
+
+notabs_ok($_) foreach @files;
+done_testing;
@@ -0,0 +1,116 @@
+
+BEGIN {
+ unless ($ENV{AUTHOR_TESTING}) {
+ require Test::More;
+ Test::More::plan(skip_all => 'these tests are for testing by the author');
+ }
+}
+
+use strict;
+use warnings;
+use Test::More;
+
+# generated by Dist::Zilla::Plugin::Test::PodSpelling 2.006008
+use Test::Spelling 0.12;
+use Pod::Wordlist;
+
+
+add_stopwords(<DATA>);
+all_pod_files_spelling_ok( qw( bin lib ) );
+__DATA__
+Alders
+Alders'
+Eilam
+Eilam's
+MaxMind
+MaxMind's
+Oschwald
+Oschwald's
+Rolsky
+Rolsky's
+API
+APIs
+AdWords
+CN
+GEONAMES
+GeoIP
+GeoLite
+GeoNames
+GitHub
+IANA
+IP
+IP's
+IPv
+ISP
+Knop
+OC
+Omni
+Oxfordshire
+SSL
+URI
+VERSIONING
+VPN
+YYY
+YYYZZZ
+contentDeliveryNetwork
+de
+dialup
+downloadable
+ergument
+geoname_id
+hostname
+ip
+ja
+libmaxminddb
+lookup
+maxmind
+omni
+params
+routable
+ru
+searchEngineSpider
+ua
+unpopulated
+versioning
+zh
+Dave
+drolsky
+Greg
+goschwald
+Olaf
+oalders
+Inc
+Graham
+haarg
+lib
+GeoIP2
+Role
+Model
+HasSubdivisions
+Record
+Postal
+Country
+Location
+Error
+HTTP
+Insights
+AnonymousIP
+Generic
+Types
+Flat
+Subdivision
+Traits
+RepresentedCountry
+WebService
+Client
+HasNames
+ConnectionType
+HasLocales
+Database
+Reader
+City
+Continent
+Domain
+IPAddressNotFound
+Type
+HasIPAddress
@@ -1,16 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-use Test::More;
-
-eval 'use Test::EOL';
-plan skip_all => 'Test::EOL required' if $@;
-
-all_perl_files_ok({ trailing_whitespace => 1 });
@@ -1,55 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-
-# this test was generated with Dist::Zilla::Plugin::Test::NoTabs 0.05
-
-use Test::More 0.88;
-use Test::NoTabs;
-
-my @files = (
- 'bin/web-service-request',
- 'lib/GeoIP2.pm',
- 'lib/GeoIP2/Database/Reader.pm',
- 'lib/GeoIP2/Error/Generic.pm',
- 'lib/GeoIP2/Error/HTTP.pm',
- 'lib/GeoIP2/Error/IPAddressNotFound.pm',
- 'lib/GeoIP2/Error/Type.pm',
- 'lib/GeoIP2/Error/WebService.pm',
- 'lib/GeoIP2/Model/City.pm',
- 'lib/GeoIP2/Model/ConnectionType.pm',
- 'lib/GeoIP2/Model/Country.pm',
- 'lib/GeoIP2/Model/Domain.pm',
- 'lib/GeoIP2/Model/ISP.pm',
- 'lib/GeoIP2/Model/Insights.pm',
- 'lib/GeoIP2/Record/City.pm',
- 'lib/GeoIP2/Record/Continent.pm',
- 'lib/GeoIP2/Record/Country.pm',
- 'lib/GeoIP2/Record/Location.pm',
- 'lib/GeoIP2/Record/MaxMind.pm',
- 'lib/GeoIP2/Record/Postal.pm',
- 'lib/GeoIP2/Record/RepresentedCountry.pm',
- 'lib/GeoIP2/Record/Subdivision.pm',
- 'lib/GeoIP2/Record/Traits.pm',
- 'lib/GeoIP2/Role/Error/HTTP.pm',
- 'lib/GeoIP2/Role/HasIPAddress.pm',
- 'lib/GeoIP2/Role/HasLocales.pm',
- 'lib/GeoIP2/Role/Model.pm',
- 'lib/GeoIP2/Role/Model/Flat.pm',
- 'lib/GeoIP2/Role/Model/HasSubdivisions.pm',
- 'lib/GeoIP2/Role/Model/Location.pm',
- 'lib/GeoIP2/Role/Record/Country.pm',
- 'lib/GeoIP2/Role/Record/HasNames.pm',
- 'lib/GeoIP2/Types.pm',
- 'lib/GeoIP2/WebService/Client.pm'
-);
-
-notabs_ok($_) foreach @files;
-done_testing;
@@ -1,4 +1,4 @@
-#!/usr/bin/perl
+#!perl
BEGIN {
unless ($ENV{RELEASE_TESTING}) {
@@ -7,35 +7,44 @@ BEGIN {
}
}
+# This file was automatically generated by Dist::Zilla::Plugin::Test::Pod::Coverage::Configurable.
-use strict;
-use warnings;
+use Test::Pod::Coverage 1.08;
+use Test::More 0.88;
+use Pod::Coverage::TrustPod;
-use Pod::Coverage::Moose 0.02;
-use Test::More;
-use Test::Pod::Coverage 1.04;
+{
+ package
+ My::Coverage;
+ use parent 'Pod::Coverage::Moose', 'Pod::Coverage::TrustPod';
+ $INC{'My/Coverage.pm'} = 1;
+}
-my %trustme = ();
+my %skip = map { $_ => 1 } qw( );
-# This is a stripped down version of all_pod_coverage_ok which lets us
-# vary the trustme parameter per module.
-my @modules = grep { !/^GeoIP2::(?:Role|Types)/ } all_modules();
+my @modules;
+for my $module ( all_modules() ) {
+ next if $skip{$module};
+ next if $module =~ qr/^GeoIP2::(?:Role|Types)/;
-for my $module ( sort @modules ) {
- my $trustme = [];
+ push @modules, $module;
+}
- if ( $trustme{$module} ) {
- my $methods = join '|', @{ $trustme{$module} };
- $trustme = [qr/^(?:$methods)$/];
- }
+plan skip_all => 'All the modules we found were excluded from POD coverage test.'
+ unless @modules;
+plan tests => scalar @modules;
+
+my %trustme = ();
+
+for my $module ( sort @modules ) {
pod_coverage_ok(
$module,
{
- coverage_class => 'Pod::Coverage::Moose',
- trustme => $trustme,
+ coverage_class => 'My::Coverage',
+ trustme => $trustme{$module} || [],
},
- "Pod coverage for $module"
+ "pod coverage for $module"
);
}
@@ -1,77 +0,0 @@
-
-BEGIN {
- unless ($ENV{RELEASE_TESTING}) {
- require Test::More;
- Test::More::plan(skip_all => 'these tests are for release candidate testing');
- }
-}
-
-use strict;
-use warnings;
-
-use Test::Spelling;
-
-my @stopwords;
-for (<DATA>) {
- chomp;
- push @stopwords, $_
- unless /\A (?: \# | \s* \z)/msx; # skip comments, whitespace
-}
-
-add_stopwords(@stopwords);
-set_spell_cmd('aspell list -l en');
-
-# This prevents a weird segfault from the aspell command - see
-# https://bugs.launchpad.net/ubuntu/+source/aspell/+bug/71322
-local $ENV{LC_ALL} = 'C';
-all_pod_files_spelling_ok;
-
-__DATA__
-API
-APIs
-AdWords
-CN
-GEONAMES
-GeoIP
-GeoLite
-GeoNames
-GitHub
-IANA
-IP
-IP's
-IPv
-ISP
-Knop
-MaxMind
-MaxMind's
-OC
-Omni
-Oschwald
-Oxfordshire
-Rolsky
-SSL
-URI
-VERSIONING
-YYY
-YYYZZZ
-contentDeliveryNetwork
-de
-dialup
-downloadable
-ergument
-geoname_id
-hostname
-ip
-ja
-libmaxminddb
-lookup
-maxmind
-omni
-params
-routable
-ru
-searchEngineSpider
-ua
-unpopulated
-versioning
-zh
@@ -0,0 +1,19 @@
+#!perl
+
+BEGIN {
+ unless ($ENV{RELEASE_TESTING}) {
+ require Test::More;
+ Test::More::plan(skip_all => 'these tests are for release candidate testing');
+ }
+}
+
+
+use strict;
+use warnings;
+
+use Test::More;
+
+eval 'use Test::Portability::Files';
+plan skip_all => 'Test::Portability::Files required for testing portability'
+ if $@;
+run_tests();
@@ -8,9 +8,6 @@ BEGIN {
}
-use Test::More;
+use Test::Synopsis;
-eval "use Test::Synopsis";
-plan skip_all => "Test::Synopsis required for testing synopses"
- if $@;
-all_synopsis_ok('lib');
+all_synopsis_ok();
@@ -15,4 +15,3 @@
[Authors]
[Contributors]
[Legal]
-