maxmind-geoip2 1.1.0 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +10 -5
  4. data/lib/maxmind/geoip2/client.rb +18 -9
  5. data/lib/maxmind/geoip2/model/city.rb +4 -5
  6. data/lib/maxmind/geoip2/model/connection_type.rb +3 -2
  7. data/lib/maxmind/geoip2/model/enterprise.rb +2 -3
  8. data/lib/maxmind/geoip2/model/insights.rb +3 -5
  9. data/lib/maxmind/geoip2/record/traits.rb +39 -27
  10. data/lib/maxmind/geoip2/version.rb +8 -0
  11. data/maxmind-geoip2.gemspec +7 -2
  12. data/test/data/cmd/write-test-data/main.go +68 -0
  13. data/test/data/go.mod +13 -0
  14. data/test/data/go.sum +16 -0
  15. data/test/data/perltidyrc +6 -0
  16. data/test/data/pkg/writer/decoder.go +178 -0
  17. data/test/data/pkg/writer/geoip2.go +182 -0
  18. data/test/data/pkg/writer/ip.go +39 -0
  19. data/test/data/pkg/writer/maxmind.go +245 -0
  20. data/test/data/pkg/writer/nestedstructures.go +73 -0
  21. data/test/data/pkg/writer/writer.go +58 -0
  22. data/test/data/source-data/GeoIP2-City-Test.json +322 -1
  23. data/test/data/source-data/GeoIP2-Connection-Type-Test.json +15 -10
  24. data/test/data/source-data/GeoIP2-Country-Test.json +99 -0
  25. data/test/data/source-data/GeoIP2-Domain-Test.json +5 -0
  26. data/test/data/source-data/GeoIP2-Enterprise-Test.json +347 -1
  27. data/test/data/source-data/GeoIP2-Precision-Enterprise-Sandbox-Test.json +296 -0
  28. data/test/data/source-data/GeoIP2-Precision-Enterprise-Test.json +412 -2
  29. data/test/data/source-data/GeoIP2-Static-IP-Score-Test.json +15 -0
  30. data/test/data/source-data/GeoIP2-User-Count-Test.json +18 -0
  31. data/test/data/source-data/GeoLite2-City-Test.json +168 -0
  32. data/test/data/source-data/GeoLite2-Country-Test.json +92 -0
  33. data/test/data/test-data/GeoIP2-Anonymous-IP-Test.mmdb +0 -0
  34. data/test/data/test-data/GeoIP2-City-Test-Broken-Double-Format.mmdb +0 -0
  35. data/test/data/test-data/GeoIP2-City-Test-Invalid-Node-Count.mmdb +0 -0
  36. data/test/data/test-data/GeoIP2-City-Test.mmdb +0 -0
  37. data/test/data/test-data/GeoIP2-Connection-Type-Test.mmdb +0 -0
  38. data/test/data/test-data/GeoIP2-Country-Test.mmdb +0 -0
  39. data/test/data/test-data/GeoIP2-DensityIncome-Test.mmdb +0 -0
  40. data/test/data/test-data/GeoIP2-Domain-Test.mmdb +0 -0
  41. data/test/data/test-data/GeoIP2-Enterprise-Test.mmdb +0 -0
  42. data/test/data/test-data/GeoIP2-ISP-Test.mmdb +0 -0
  43. data/test/data/test-data/GeoIP2-Precision-Enterprise-Test.mmdb +0 -0
  44. data/test/data/test-data/GeoIP2-Static-IP-Score-Test.mmdb +0 -0
  45. data/test/data/test-data/GeoIP2-User-Count-Test.mmdb +0 -0
  46. data/test/data/test-data/GeoLite2-ASN-Test.mmdb +0 -0
  47. data/test/data/test-data/GeoLite2-City-Test.mmdb +0 -0
  48. data/test/data/test-data/GeoLite2-Country-Test.mmdb +0 -0
  49. data/test/data/test-data/MaxMind-DB-no-ipv4-search-tree.mmdb +0 -0
  50. data/test/data/test-data/MaxMind-DB-string-value-entries.mmdb +0 -0
  51. data/test/data/test-data/MaxMind-DB-test-broken-pointers-24.mmdb +0 -0
  52. data/test/data/test-data/MaxMind-DB-test-broken-search-tree-24.mmdb +0 -0
  53. data/test/data/test-data/MaxMind-DB-test-decoder.mmdb +0 -0
  54. data/test/data/test-data/MaxMind-DB-test-ipv4-24.mmdb +0 -0
  55. data/test/data/test-data/MaxMind-DB-test-ipv4-28.mmdb +0 -0
  56. data/test/data/test-data/MaxMind-DB-test-ipv4-32.mmdb +0 -0
  57. data/test/data/test-data/MaxMind-DB-test-ipv6-24.mmdb +0 -0
  58. data/test/data/test-data/MaxMind-DB-test-ipv6-28.mmdb +0 -0
  59. data/test/data/test-data/MaxMind-DB-test-ipv6-32.mmdb +0 -0
  60. data/test/data/test-data/MaxMind-DB-test-metadata-pointers.mmdb +0 -0
  61. data/test/data/test-data/MaxMind-DB-test-mixed-24.mmdb +0 -0
  62. data/test/data/test-data/MaxMind-DB-test-mixed-28.mmdb +0 -0
  63. data/test/data/test-data/MaxMind-DB-test-mixed-32.mmdb +0 -0
  64. data/test/data/test-data/MaxMind-DB-test-nested.mmdb +0 -0
  65. data/test/data/test-data/MaxMind-DB-test-pointer-decoder.mmdb +0 -0
  66. data/test/data/test-data/README.md +28 -12
  67. data/test/test_client.rb +18 -2
  68. data/test/test_reader.rb +19 -1
  69. metadata +16 -7
  70. data/test/data/source-data/README +0 -15
  71. data/test/data/test-data/write-test-data.pl +0 -695
@@ -1227,7 +1227,8 @@
1227
1227
  "autonomous_system_organization" : "Precision AS Org",
1228
1228
  "isp" : "Precision ISP",
1229
1229
  "organization" : "Precision Org",
1230
- "static_ip_score" : 0.46
1230
+ "static_ip_score" : 0.46,
1231
+ "user_type" : "residential"
1231
1232
  }
1232
1233
  }
1233
1234
  },
@@ -1461,7 +1462,7 @@
1461
1462
  ],
1462
1463
  "traits" : {
1463
1464
  "static_ip_score" : 0.63,
1464
- "user_type" : "dialup"
1465
+ "user_type" : "residential"
1465
1466
  }
1466
1467
  }
1467
1468
  },
@@ -1548,6 +1549,106 @@
1548
1549
  }
1549
1550
  }
1550
1551
  },
1552
+ {
1553
+ "214.1.1.0/24" : {
1554
+ "traits": {
1555
+ "is_anycast": true
1556
+ }
1557
+ }
1558
+ },
1559
+ {
1560
+ "214.248.0.0/29" : {
1561
+ "city" : {
1562
+ "confidence" : 20,
1563
+ "geoname_id" : 4734825,
1564
+ "names" : {
1565
+ "en" : "Sugar Land",
1566
+ "ja" : "シュガーランド",
1567
+ "pt-BR" : "Sugar Land",
1568
+ "ru" : "Шугар-Ленд"
1569
+ }
1570
+ },
1571
+ "continent" : {
1572
+ "code" : "NA",
1573
+ "geoname_id" : 6255149,
1574
+ "names" : {
1575
+ "de" : "Nordamerika",
1576
+ "en" : "North America",
1577
+ "es" : "Norteamérica",
1578
+ "fr" : "Amérique du Nord",
1579
+ "ja" : "北アメリカ",
1580
+ "pt-BR" : "América do Norte",
1581
+ "ru" : "Северная Америка",
1582
+ "zh-CN" : "北美洲"
1583
+ }
1584
+ },
1585
+ "country" : {
1586
+ "confidence" : 99,
1587
+ "geoname_id" : 6252001,
1588
+ "iso_code" : "US",
1589
+ "names" : {
1590
+ "de" : "USA",
1591
+ "en" : "United States",
1592
+ "es" : "Estados Unidos",
1593
+ "fr" : "États-Unis",
1594
+ "ja" : "アメリカ合衆国",
1595
+ "pt-BR" : "Estados Unidos",
1596
+ "ru" : "США",
1597
+ "zh-CN" : "美国"
1598
+ }
1599
+ },
1600
+ "location" : {
1601
+ "accuracy_radius" : 1000,
1602
+ "latitude" : 29.6197,
1603
+ "longitude" : -95.635,
1604
+ "metro_code" : 618,
1605
+ "time_zone" : "America/Chicago"
1606
+ },
1607
+ "postal" : {
1608
+ "code" : "77487",
1609
+ "confidence" : 1
1610
+ },
1611
+ "registered_country" : {
1612
+ "geoname_id" : 6252001,
1613
+ "iso_code" : "US",
1614
+ "names" : {
1615
+ "de" : "USA",
1616
+ "en" : "United States",
1617
+ "es" : "Estados Unidos",
1618
+ "fr" : "États-Unis",
1619
+ "ja" : "アメリカ合衆国",
1620
+ "pt-BR" : "Estados Unidos",
1621
+ "ru" : "США",
1622
+ "zh-CN" : "美国"
1623
+ }
1624
+ },
1625
+ "subdivisions" : [
1626
+ {
1627
+ "confidence" : 60,
1628
+ "geoname_id" : 4736286,
1629
+ "iso_code" : "TX",
1630
+ "names" : {
1631
+ "en" : "Texas",
1632
+ "es" : "Texas",
1633
+ "fr" : "Texas",
1634
+ "ja" : "テキサス州",
1635
+ "ru" : "Техас",
1636
+ "zh-CN" : "德克萨斯州"
1637
+ }
1638
+ }
1639
+ ],
1640
+ "traits" : {
1641
+ "autonomous_system_number" : 11025,
1642
+ "autonomous_system_organization" : "Comcast Cable Communications, LLC",
1643
+ "connection_type" : "Cable/DSL",
1644
+ "domain" : "comcastbusiness.net",
1645
+ "isp" : "Comcast Business",
1646
+ "organization" : "Comcast Business",
1647
+ "static_ip_score" : 1.47,
1648
+ "user_type" : "hosting"
1649
+ }
1650
+ }
1651
+ },
1551
1652
  {
1552
1653
  "::208.110.217.113/128" : {
1553
1654
  "city" : {
@@ -1641,6 +1742,90 @@
1641
1742
  }
1642
1743
  }
1643
1744
  },
1745
+ {
1746
+ "214.78.120.0/22" : {
1747
+ "city" : {
1748
+ "geoname_id" : 5391811,
1749
+ "names" : {
1750
+ "de" : "San Diego",
1751
+ "en" : "San Diego",
1752
+ "es" : "San Diego",
1753
+ "fr" : "San Diego",
1754
+ "ja" : "サンディエゴ",
1755
+ "pt-BR" : "San Diego",
1756
+ "ru" : "Сан-Диего"
1757
+ }
1758
+ },
1759
+ "continent" : {
1760
+ "code" : "NA",
1761
+ "geoname_id" : 6255149,
1762
+ "names" : {
1763
+ "de" : "Nordamerika",
1764
+ "en" : "North America",
1765
+ "es" : "Norteamérica",
1766
+ "fr" : "Amérique du Nord",
1767
+ "ja" : "北アメリカ",
1768
+ "pt-BR" : "América do Norte",
1769
+ "ru" : "Северная Америка",
1770
+ "zh-CN" : "北美洲"
1771
+ }
1772
+ },
1773
+ "country" : {
1774
+ "geoname_id" : 6252001,
1775
+ "iso_code" : "US",
1776
+ "names" : {
1777
+ "de" : "Vereinigte Staaten",
1778
+ "en" : "United States",
1779
+ "es" : "Estados Unidos",
1780
+ "fr" : "États Unis",
1781
+ "ja" : "アメリカ",
1782
+ "pt-BR" : "EUA",
1783
+ "ru" : "США",
1784
+ "zh-CN" : "美国"
1785
+ }
1786
+ },
1787
+ "location" : {
1788
+ "accuracy_radius" : 100,
1789
+ "latitude" : 32.7405,
1790
+ "longitude" : -117.0935,
1791
+ "metro_code" : 825,
1792
+ "time_zone" : "America/Los_Angeles"
1793
+ },
1794
+ "postal" : {
1795
+ "code" : "92105"
1796
+ },
1797
+ "registered_country" : {
1798
+ "geoname_id" : 6252001,
1799
+ "iso_code" : "US",
1800
+ "names" : {
1801
+ "de" : "Vereinigte Staaten",
1802
+ "en" : "United States",
1803
+ "es" : "Estados Unidos",
1804
+ "fr" : "États Unis",
1805
+ "ja" : "アメリカ",
1806
+ "pt-BR" : "EUA",
1807
+ "ru" : "США",
1808
+ "zh-CN" : "美国"
1809
+ }
1810
+ },
1811
+ "subdivisions" : [
1812
+ {
1813
+ "geoname_id" : 5332921,
1814
+ "iso_code" : "CA",
1815
+ "names" : {
1816
+ "de" : "Kalifornien",
1817
+ "en" : "California",
1818
+ "es" : "California",
1819
+ "fr" : "Californie",
1820
+ "ja" : "カリフォルニア州",
1821
+ "pt-BR" : "Califórnia",
1822
+ "ru" : "Калифорния",
1823
+ "zh-CN" : "加州"
1824
+ }
1825
+ }
1826
+ ]
1827
+ }
1828
+ },
1644
1829
  {
1645
1830
  "::216.160.83.56/125" : {
1646
1831
  "city" : {
@@ -1931,6 +2116,82 @@
1931
2116
  }
1932
2117
  }
1933
2118
  },
2119
+ {
2120
+ "214.214.214.214/32" : {
2121
+ "traits" : {
2122
+ "static_ip_score" : 0.4,
2123
+ "user_type" : "content_delivery_network"
2124
+ }
2125
+ }
2126
+ },
2127
+ {
2128
+ "214.214.214.215/32" : {
2129
+ "traits" : {
2130
+ "static_ip_score" : 0.4,
2131
+ "user_type" : "business"
2132
+ }
2133
+ }
2134
+ },
2135
+ {
2136
+ "214.214.214.216/32" : {
2137
+ "traits" : {
2138
+ "static_ip_score" : 0.4,
2139
+ "user_type" : "traveler"
2140
+ }
2141
+ }
2142
+ },
2143
+ {
2144
+ "214.214.214.217/32" : {
2145
+ "traits" : {
2146
+ "static_ip_score" : 0.4,
2147
+ "user_type" : "traveler"
2148
+ }
2149
+ }
2150
+ },
2151
+ {
2152
+ "214.214.214.218/32" : {
2153
+ "traits" : {
2154
+ "static_ip_score" : 0.4,
2155
+ "user_type" : "business"
2156
+ }
2157
+ }
2158
+ },
2159
+ {
2160
+ "214.214.214.219/32" : {
2161
+ "traits" : {
2162
+ "static_ip_score" : 0.4,
2163
+ "user_type" : "business"
2164
+ }
2165
+ }
2166
+ },
2167
+ {
2168
+ "214.214.214.220/32" : {
2169
+ "traits" : {
2170
+ "static_ip_score" : 0.4,
2171
+ "user_type" : "business"
2172
+ }
2173
+ }
2174
+ },
2175
+ {
2176
+ "214.214.214.230/32" : {
2177
+ "traits" : {
2178
+ "isp" : "Unexpected Cellular",
2179
+ "organization" : "Unexpected Cellular",
2180
+ "static_ip_score" : 0.4,
2181
+ "user_type" : "cellular"
2182
+ }
2183
+ }
2184
+ },
2185
+ {
2186
+ "214.214.214.231/32" : {
2187
+ "traits" : {
2188
+ "isp" : "Unexpected Cellular Two",
2189
+ "organization" : "Unexpected Cellular Two",
2190
+ "static_ip_score" : 0.4,
2191
+ "user_type" : "cellular"
2192
+ }
2193
+ }
2194
+ },
1934
2195
  {
1935
2196
  "2001:219::/32" : {
1936
2197
  "city" : {
@@ -2201,5 +2462,154 @@
2201
2462
  "user_type" : "business"
2202
2463
  }
2203
2464
  }
2465
+ },
2466
+ {
2467
+ "2001:480::/64" : {
2468
+ "continent" : {
2469
+ "code" : "AS",
2470
+ "geoname_id" : 6255147,
2471
+ "names" : {
2472
+ "de" : "Asien",
2473
+ "en" : "Asia",
2474
+ "es" : "Asia",
2475
+ "fr" : "Asie",
2476
+ "ja" : "アジア",
2477
+ "pt-BR" : "Ásia",
2478
+ "ru" : "Азия",
2479
+ "zh-CN" : "亚洲"
2480
+ }
2481
+ },
2482
+ "country" : {
2483
+ "geoname_id" : 1861060,
2484
+ "iso_code" : "JP",
2485
+ "names" : {
2486
+ "de" : "Japan",
2487
+ "en" : "Japan",
2488
+ "es" : "Japón",
2489
+ "fr" : "Japon",
2490
+ "ja" : "日本",
2491
+ "pt-BR" : "Japão",
2492
+ "ru" : "Япония",
2493
+ "zh-CN" : "日本"
2494
+ }
2495
+ },
2496
+ "location" : {
2497
+ "accuracy_radius" : 100,
2498
+ "latitude" : 35.68536,
2499
+ "longitude" : 139.75309,
2500
+ "time_zone" : "Asia/Tokyo"
2501
+ },
2502
+ "registered_country" : {
2503
+ "geoname_id" : 1861060,
2504
+ "iso_code" : "JP",
2505
+ "names" : {
2506
+ "de" : "Japan",
2507
+ "en" : "Japan",
2508
+ "es" : "Japón",
2509
+ "fr" : "Japon",
2510
+ "ja" : "日本",
2511
+ "pt-BR" : "Japão",
2512
+ "ru" : "Япония",
2513
+ "zh-CN" : "日本"
2514
+ }
2515
+ }
2516
+ }
2517
+ },
2518
+ {
2519
+ "214.78.0.0/23" : {
2520
+ "city" : {
2521
+ "confidence" : 99,
2522
+ "geoname_id" : 5391811,
2523
+ "names" : {
2524
+ "de" : "San Diego",
2525
+ "en" : "San Diego",
2526
+ "es" : "San Diego",
2527
+ "fr" : "San Diego",
2528
+ "ja" : "サンディエゴ",
2529
+ "pt-BR" : "San Diego",
2530
+ "ru" : "Сан-Диего"
2531
+ }
2532
+ },
2533
+ "continent" : {
2534
+ "code" : "NA",
2535
+ "geoname_id" : 6255149,
2536
+ "names" : {
2537
+ "de" : "Nordamerika",
2538
+ "en" : "North America",
2539
+ "es" : "Norteamérica",
2540
+ "fr" : "Amérique du Nord",
2541
+ "ja" : "北アメリカ",
2542
+ "pt-BR" : "América do Norte",
2543
+ "ru" : "Северная Америка",
2544
+ "zh-CN" : "北美洲"
2545
+ }
2546
+ },
2547
+ "country" : {
2548
+ "confidence" : 99,
2549
+ "geoname_id" : 6252001,
2550
+ "iso_code" : "US",
2551
+ "names" : {
2552
+ "de" : "Vereinigte Staaten",
2553
+ "en" : "United States",
2554
+ "es" : "Estados Unidos",
2555
+ "fr" : "États Unis",
2556
+ "ja" : "アメリカ",
2557
+ "pt-BR" : "EUA",
2558
+ "ru" : "США",
2559
+ "zh-CN" : "美国"
2560
+ }
2561
+ },
2562
+ "location" : {
2563
+ "accuracy_radius" : 10,
2564
+ "latitude" : 32.7449,
2565
+ "longitude" : -117.165,
2566
+ "metro_code" : 825,
2567
+ "time_zone" : "America/Los_Angeles"
2568
+ },
2569
+ "postal" : {
2570
+ "code" : "92103",
2571
+ "confidence" : 90
2572
+ },
2573
+ "registered_country" : {
2574
+ "geoname_id" : 6252001,
2575
+ "iso_code" : "US",
2576
+ "names" : {
2577
+ "de" : "Vereinigte Staaten",
2578
+ "en" : "United States",
2579
+ "es" : "Estados Unidos",
2580
+ "fr" : "États Unis",
2581
+ "ja" : "アメリカ",
2582
+ "pt-BR" : "EUA",
2583
+ "ru" : "США",
2584
+ "zh-CN" : "美国"
2585
+ }
2586
+ },
2587
+ "subdivisions" : [
2588
+ {
2589
+ "confidence" : 99,
2590
+ "geoname_id" : 5332921,
2591
+ "iso_code" : "CA",
2592
+ "names" : {
2593
+ "de" : "Kalifornien",
2594
+ "en" : "California",
2595
+ "es" : "California",
2596
+ "fr" : "Californie",
2597
+ "ja" : "カリフォルニア州",
2598
+ "pt-BR" : "Califórnia",
2599
+ "ru" : "Калифорния",
2600
+ "zh-CN" : "加州"
2601
+ }
2602
+ }
2603
+ ],
2604
+ "traits" : {
2605
+ "autonomous_system_number" : 5972,
2606
+ "autonomous_system_organization" : "DNIC-ASBLK-05800-06055",
2607
+ "connection_type" : "Cable/DSL",
2608
+ "domain" : "health.mil",
2609
+ "isp" : "US Air Force",
2610
+ "organization" : "US Department of Defense",
2611
+ "user_type" : "military"
2612
+ }
2613
+ }
2204
2614
  }
2205
2615
  ]
@@ -734,6 +734,21 @@
734
734
  "score" : 1.47
735
735
  }
736
736
  },
737
+ {
738
+ "::214.2.3.0/126" : {
739
+ "score" : 0.04
740
+ }
741
+ },
742
+ {
743
+ "::214.2.3.4/128" : {
744
+ "score" : 0.05
745
+ }
746
+ },
747
+ {
748
+ "::214.2.3.5/128" : {
749
+ "score" : 0.06
750
+ }
751
+ },
737
752
  {
738
753
  "::1:0:0:0/80" : {
739
754
  "score" : 1.48
@@ -881,6 +881,24 @@
881
881
  "ipv4_32" : 0
882
882
  }
883
883
  },
884
+ {
885
+ "::214.2.3.0/126" : {
886
+ "ipv4_24" : 4,
887
+ "ipv4_32" : 0
888
+ }
889
+ },
890
+ {
891
+ "::214.2.3.4/128" : {
892
+ "ipv4_24" : 4,
893
+ "ipv4_32" : 3
894
+ }
895
+ },
896
+ {
897
+ "::214.2.3.5/128" : {
898
+ "ipv4_24" : 4,
899
+ "ipv4_32" : 1
900
+ }
901
+ },
884
902
  {
885
903
  "::1:0:0:0/80" : {
886
904
  "ipv6_32" : 0,
@@ -12800,5 +12800,173 @@
12800
12800
  }
12801
12801
  }
12802
12802
  }
12803
+ },
12804
+ {
12805
+ "214.78.0.0/19" : {
12806
+ "city" : {
12807
+ "geoname_id" : 5391811,
12808
+ "names" : {
12809
+ "de" : "San Diego",
12810
+ "en" : "San Diego",
12811
+ "es" : "San Diego",
12812
+ "fr" : "San Diego",
12813
+ "ja" : "サンディエゴ",
12814
+ "pt-BR" : "San Diego",
12815
+ "ru" : "Сан-Диего"
12816
+ }
12817
+ },
12818
+ "continent" : {
12819
+ "code" : "NA",
12820
+ "geoname_id" : 6255149,
12821
+ "names" : {
12822
+ "de" : "Nordamerika",
12823
+ "en" : "North America",
12824
+ "es" : "Norteamérica",
12825
+ "fr" : "Amérique du Nord",
12826
+ "ja" : "北アメリカ",
12827
+ "pt-BR" : "América do Norte",
12828
+ "ru" : "Северная Америка",
12829
+ "zh-CN" : "北美洲"
12830
+ }
12831
+ },
12832
+ "country" : {
12833
+ "geoname_id" : 6252001,
12834
+ "iso_code" : "US",
12835
+ "names" : {
12836
+ "de" : "Vereinigte Staaten",
12837
+ "en" : "United States",
12838
+ "es" : "Estados Unidos",
12839
+ "fr" : "États Unis",
12840
+ "ja" : "アメリカ",
12841
+ "pt-BR" : "EUA",
12842
+ "ru" : "США",
12843
+ "zh-CN" : "美国"
12844
+ }
12845
+ },
12846
+ "location" : {
12847
+ "accuracy_radius" : 10,
12848
+ "latitude" : 32.6783,
12849
+ "longitude" : -117.1291,
12850
+ "metro_code" : 825,
12851
+ "time_zone" : "America/Los_Angeles"
12852
+ },
12853
+ "postal" : {
12854
+ "code" : "92136"
12855
+ },
12856
+ "registered_country" : {
12857
+ "geoname_id" : 6252001,
12858
+ "iso_code" : "US",
12859
+ "names" : {
12860
+ "de" : "Vereinigte Staaten",
12861
+ "en" : "United States",
12862
+ "es" : "Estados Unidos",
12863
+ "fr" : "États Unis",
12864
+ "ja" : "アメリカ",
12865
+ "pt-BR" : "EUA",
12866
+ "ru" : "США",
12867
+ "zh-CN" : "美国"
12868
+ }
12869
+ },
12870
+ "subdivisions" : [
12871
+ {
12872
+ "geoname_id" : 5332921,
12873
+ "iso_code" : "CA",
12874
+ "names" : {
12875
+ "de" : "Kalifornien",
12876
+ "en" : "California",
12877
+ "es" : "California",
12878
+ "fr" : "Californie",
12879
+ "ja" : "カリフォルニア州",
12880
+ "pt-BR" : "Califórnia",
12881
+ "ru" : "Калифорния",
12882
+ "zh-CN" : "加州"
12883
+ }
12884
+ }
12885
+ ]
12886
+ }
12887
+ },
12888
+ {
12889
+ "2001:480::/43" : {
12890
+ "city" : {
12891
+ "geoname_id" : 5391811,
12892
+ "names" : {
12893
+ "de" : "San Diego",
12894
+ "en" : "San Diego",
12895
+ "es" : "San Diego",
12896
+ "fr" : "San Diego",
12897
+ "ja" : "サンディエゴ",
12898
+ "pt-BR" : "San Diego",
12899
+ "ru" : "Сан-Диего"
12900
+ }
12901
+ },
12902
+ "continent" : {
12903
+ "code" : "NA",
12904
+ "geoname_id" : 6255149,
12905
+ "names" : {
12906
+ "de" : "Nordamerika",
12907
+ "en" : "North America",
12908
+ "es" : "Norteamérica",
12909
+ "fr" : "Amérique du Nord",
12910
+ "ja" : "北アメリカ",
12911
+ "pt-BR" : "América do Norte",
12912
+ "ru" : "Северная Америка",
12913
+ "zh-CN" : "北美洲"
12914
+ }
12915
+ },
12916
+ "country" : {
12917
+ "geoname_id" : 6252001,
12918
+ "iso_code" : "US",
12919
+ "names" : {
12920
+ "de" : "Vereinigte Staaten",
12921
+ "en" : "United States",
12922
+ "es" : "Estados Unidos",
12923
+ "fr" : "États Unis",
12924
+ "ja" : "アメリカ",
12925
+ "pt-BR" : "EUA",
12926
+ "ru" : "США",
12927
+ "zh-CN" : "美国"
12928
+ }
12929
+ },
12930
+ "location" : {
12931
+ "accuracy_radius" : 50,
12932
+ "latitude" : 32.7203,
12933
+ "longitude" : -117.1552,
12934
+ "metro_code" : 825,
12935
+ "time_zone" : "America/Los_Angeles"
12936
+ },
12937
+ "postal" : {
12938
+ "code" : "92101"
12939
+ },
12940
+ "registered_country" : {
12941
+ "geoname_id" : 6252001,
12942
+ "iso_code" : "US",
12943
+ "names" : {
12944
+ "de" : "Vereinigte Staaten",
12945
+ "en" : "United States",
12946
+ "es" : "Estados Unidos",
12947
+ "fr" : "États Unis",
12948
+ "ja" : "アメリカ",
12949
+ "pt-BR" : "EUA",
12950
+ "ru" : "США",
12951
+ "zh-CN" : "美国"
12952
+ }
12953
+ },
12954
+ "subdivisions" : [
12955
+ {
12956
+ "geoname_id" : 5332921,
12957
+ "iso_code" : "CA",
12958
+ "names" : {
12959
+ "de" : "Kalifornien",
12960
+ "en" : "California",
12961
+ "es" : "California",
12962
+ "fr" : "Californie",
12963
+ "ja" : "カリフォルニア州",
12964
+ "pt-BR" : "Califórnia",
12965
+ "ru" : "Калифорния",
12966
+ "zh-CN" : "加州"
12967
+ }
12968
+ }
12969
+ ]
12970
+ }
12803
12971
  }
12804
12972
  ]