ultra-fast-mod 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/geocoder-1.8.6/CHANGELOG.md +669 -0
- data/geocoder-1.8.6/LICENSE +20 -0
- data/geocoder-1.8.6/README.md +827 -0
- data/geocoder-1.8.6/bin/console +13 -0
- data/geocoder-1.8.6/bin/geocode +5 -0
- data/geocoder-1.8.6/examples/app_defined_lookup_services.rb +22 -0
- data/geocoder-1.8.6/examples/cache_bypass.rb +48 -0
- data/geocoder-1.8.6/examples/reverse_geocode_job.rb +40 -0
- data/geocoder-1.8.6/lib/easting_northing.rb +171 -0
- data/geocoder-1.8.6/lib/generators/geocoder/config/config_generator.rb +14 -0
- data/geocoder-1.8.6/lib/generators/geocoder/config/templates/initializer.rb +27 -0
- data/geocoder-1.8.6/lib/generators/geocoder/maxmind/geolite_city_generator.rb +30 -0
- data/geocoder-1.8.6/lib/generators/geocoder/maxmind/geolite_country_generator.rb +30 -0
- data/geocoder-1.8.6/lib/generators/geocoder/maxmind/templates/migration/geolite_city.rb +30 -0
- data/geocoder-1.8.6/lib/generators/geocoder/maxmind/templates/migration/geolite_country.rb +17 -0
- data/geocoder-1.8.6/lib/generators/geocoder/migration_version.rb +15 -0
- data/geocoder-1.8.6/lib/geocoder/cache.rb +77 -0
- data/geocoder-1.8.6/lib/geocoder/cache_stores/base.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/cache_stores/generic.rb +35 -0
- data/geocoder-1.8.6/lib/geocoder/cache_stores/redis.rb +34 -0
- data/geocoder-1.8.6/lib/geocoder/calculations.rb +420 -0
- data/geocoder-1.8.6/lib/geocoder/cli.rb +121 -0
- data/geocoder-1.8.6/lib/geocoder/configuration.rb +151 -0
- data/geocoder-1.8.6/lib/geocoder/configuration_hash.rb +11 -0
- data/geocoder-1.8.6/lib/geocoder/esri_token.rb +38 -0
- data/geocoder-1.8.6/lib/geocoder/exceptions.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/ip_address.rb +36 -0
- data/geocoder-1.8.6/lib/geocoder/kernel_logger.rb +25 -0
- data/geocoder-1.8.6/lib/geocoder/logger.rb +47 -0
- data/geocoder-1.8.6/lib/geocoder/lookup.rb +155 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/abstract_api.rb +46 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/amap.rb +63 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/amazon_location_service.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/azure.rb +56 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/baidu.rb +63 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/baidu_ip.rb +30 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ban_data_gouv_fr.rb +143 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/base.rb +351 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/bing.rb +82 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/db_ip_com.rb +52 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/esri.rb +114 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/freegeoip.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/geoapify.rb +78 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/geocoder_ca.rb +53 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/geocodio.rb +42 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/geoip2.rb +49 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/geoportail_lu.rb +65 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/google.rb +100 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/google_places_details.rb +64 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/google_places_search.rb +75 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/google_premier.rb +61 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/here.rb +73 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ip2location.rb +71 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ip2location_io.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ip2location_lite.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipapi_com.rb +82 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipbase.rb +49 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipdata_co.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipgeolocation.rb +51 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipinfo_io.rb +44 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipinfo_io_lite.rb +42 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipqualityscore.rb +50 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipregistry.rb +68 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/ipstack.rb +63 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/latlon.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/location_iq.rb +54 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/mapbox.rb +60 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/mapquest.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/maxmind.rb +90 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/maxmind_geoip2.rb +70 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/maxmind_local.rb +71 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/melissa_street.rb +41 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/nationaal_georegister_nl.rb +38 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/nominatim.rb +64 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/opencagedata.rb +65 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/osmnames.rb +57 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/pc_miler.rb +87 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/pdok_nl.rb +43 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/pelias.rb +63 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/photon.rb +89 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/pickpoint.rb +41 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/pointpin.rb +69 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/postcode_anywhere_uk.rb +50 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/postcodes_io.rb +31 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/smarty_streets.rb +68 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/telize.rb +75 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/tencent.rb +59 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/test.rb +49 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/twogis.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/uk_ordnance_survey_names.rb +59 -0
- data/geocoder-1.8.6/lib/geocoder/lookups/yandex.rb +61 -0
- data/geocoder-1.8.6/lib/geocoder/models/active_record.rb +51 -0
- data/geocoder-1.8.6/lib/geocoder/models/base.rb +39 -0
- data/geocoder-1.8.6/lib/geocoder/models/mongo_base.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/models/mongo_mapper.rb +26 -0
- data/geocoder-1.8.6/lib/geocoder/models/mongoid.rb +32 -0
- data/geocoder-1.8.6/lib/geocoder/query.rb +125 -0
- data/geocoder-1.8.6/lib/geocoder/railtie.rb +26 -0
- data/geocoder-1.8.6/lib/geocoder/request.rb +114 -0
- data/geocoder-1.8.6/lib/geocoder/results/abstract_api.rb +146 -0
- data/geocoder-1.8.6/lib/geocoder/results/amap.rb +87 -0
- data/geocoder-1.8.6/lib/geocoder/results/amazon_location_service.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/results/azure.rb +65 -0
- data/geocoder-1.8.6/lib/geocoder/results/baidu.rb +75 -0
- data/geocoder-1.8.6/lib/geocoder/results/baidu_ip.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/results/ban_data_gouv_fr.rb +282 -0
- data/geocoder-1.8.6/lib/geocoder/results/base.rb +79 -0
- data/geocoder-1.8.6/lib/geocoder/results/bing.rb +52 -0
- data/geocoder-1.8.6/lib/geocoder/results/db_ip_com.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/results/esri.rb +78 -0
- data/geocoder-1.8.6/lib/geocoder/results/freegeoip.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/results/geoapify.rb +179 -0
- data/geocoder-1.8.6/lib/geocoder/results/geocoder_ca.rb +60 -0
- data/geocoder-1.8.6/lib/geocoder/results/geocodio.rb +78 -0
- data/geocoder-1.8.6/lib/geocoder/results/geoip2.rb +76 -0
- data/geocoder-1.8.6/lib/geocoder/results/geoportail_lu.rb +71 -0
- data/geocoder-1.8.6/lib/geocoder/results/google.rb +150 -0
- data/geocoder-1.8.6/lib/geocoder/results/google_places_details.rb +39 -0
- data/geocoder-1.8.6/lib/geocoder/results/google_places_search.rb +52 -0
- data/geocoder-1.8.6/lib/geocoder/results/google_premier.rb +6 -0
- data/geocoder-1.8.6/lib/geocoder/results/here.rb +77 -0
- data/geocoder-1.8.6/lib/geocoder/results/ip2location.rb +22 -0
- data/geocoder-1.8.6/lib/geocoder/results/ip2location_io.rb +21 -0
- data/geocoder-1.8.6/lib/geocoder/results/ip2location_lite.rb +47 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipapi_com.rb +45 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipbase.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipdata_co.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipgeolocation.rb +59 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipinfo_io.rb +48 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipinfo_io_lite.rb +16 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipqualityscore.rb +54 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipregistry.rb +304 -0
- data/geocoder-1.8.6/lib/geocoder/results/ipstack.rb +60 -0
- data/geocoder-1.8.6/lib/geocoder/results/latlon.rb +71 -0
- data/geocoder-1.8.6/lib/geocoder/results/location_iq.rb +6 -0
- data/geocoder-1.8.6/lib/geocoder/results/mapbox.rb +80 -0
- data/geocoder-1.8.6/lib/geocoder/results/mapquest.rb +48 -0
- data/geocoder-1.8.6/lib/geocoder/results/maxmind.rb +130 -0
- data/geocoder-1.8.6/lib/geocoder/results/maxmind_geoip2.rb +9 -0
- data/geocoder-1.8.6/lib/geocoder/results/maxmind_local.rb +44 -0
- data/geocoder-1.8.6/lib/geocoder/results/melissa_street.rb +46 -0
- data/geocoder-1.8.6/lib/geocoder/results/nationaal_georegister_nl.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/results/nominatim.rb +121 -0
- data/geocoder-1.8.6/lib/geocoder/results/opencagedata.rb +100 -0
- data/geocoder-1.8.6/lib/geocoder/results/osmnames.rb +56 -0
- data/geocoder-1.8.6/lib/geocoder/results/pc_miler.rb +98 -0
- data/geocoder-1.8.6/lib/geocoder/results/pdok_nl.rb +62 -0
- data/geocoder-1.8.6/lib/geocoder/results/pelias.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/results/photon.rb +119 -0
- data/geocoder-1.8.6/lib/geocoder/results/pickpoint.rb +6 -0
- data/geocoder-1.8.6/lib/geocoder/results/pointpin.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/results/postcode_anywhere_uk.rb +42 -0
- data/geocoder-1.8.6/lib/geocoder/results/postcodes_io.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/results/smarty_streets.rb +142 -0
- data/geocoder-1.8.6/lib/geocoder/results/telize.rb +40 -0
- data/geocoder-1.8.6/lib/geocoder/results/tencent.rb +72 -0
- data/geocoder-1.8.6/lib/geocoder/results/test.rb +33 -0
- data/geocoder-1.8.6/lib/geocoder/results/twogis.rb +76 -0
- data/geocoder-1.8.6/lib/geocoder/results/uk_ordnance_survey_names.rb +59 -0
- data/geocoder-1.8.6/lib/geocoder/results/yandex.rb +292 -0
- data/geocoder-1.8.6/lib/geocoder/sql.rb +110 -0
- data/geocoder-1.8.6/lib/geocoder/stores/active_record.rb +329 -0
- data/geocoder-1.8.6/lib/geocoder/stores/base.rb +115 -0
- data/geocoder-1.8.6/lib/geocoder/stores/mongo_base.rb +58 -0
- data/geocoder-1.8.6/lib/geocoder/stores/mongo_mapper.rb +13 -0
- data/geocoder-1.8.6/lib/geocoder/stores/mongoid.rb +13 -0
- data/geocoder-1.8.6/lib/geocoder/util.rb +29 -0
- data/geocoder-1.8.6/lib/geocoder/version.rb +3 -0
- data/geocoder-1.8.6/lib/geocoder.rb +48 -0
- data/geocoder-1.8.6/lib/maxmind_database.rb +109 -0
- data/geocoder-1.8.6/lib/tasks/geocoder.rake +54 -0
- data/geocoder-1.8.6/lib/tasks/maxmind.rake +73 -0
- data/ultra-fast-mod.gemspec +12 -0
- metadata +214 -0
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class Here < Base
|
|
5
|
+
|
|
6
|
+
##
|
|
7
|
+
# A string in the given format.
|
|
8
|
+
#
|
|
9
|
+
def address(format = :full)
|
|
10
|
+
address_data["label"]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
##
|
|
14
|
+
# A two-element array: [lat, lon].
|
|
15
|
+
#
|
|
16
|
+
def coordinates
|
|
17
|
+
fail unless d = @data["position"]
|
|
18
|
+
[d["lat"].to_f, d["lng"].to_f]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def route
|
|
22
|
+
address_data["street"]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def street_number
|
|
26
|
+
address_data["houseNumber"]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def state
|
|
30
|
+
address_data["state"]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def province
|
|
34
|
+
address_data["county"]
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def postal_code
|
|
38
|
+
address_data["postalCode"]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def city
|
|
42
|
+
address_data["city"]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def state_code
|
|
46
|
+
address_data["stateCode"]
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def province_code
|
|
50
|
+
address_data["state"]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def country
|
|
54
|
+
address_data["countryName"]
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def country_code
|
|
58
|
+
address_data["countryCode"]
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def viewport
|
|
62
|
+
return [] if data["resultType"] == "place"
|
|
63
|
+
map_view = data["mapView"]
|
|
64
|
+
south = map_view["south"]
|
|
65
|
+
west = map_view["west"]
|
|
66
|
+
north = map_view["north"]
|
|
67
|
+
east = map_view["east"]
|
|
68
|
+
[south, west, north, east]
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
private # ----------------------------------------------------------------
|
|
72
|
+
|
|
73
|
+
def address_data
|
|
74
|
+
@data["address"] || fail
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class Ip2location < Base
|
|
5
|
+
|
|
6
|
+
def address(format = :full)
|
|
7
|
+
"#{city_name} #{zip_code}, #{country_name}".sub(/^[ ,]*/, '')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.response_attributes
|
|
11
|
+
%w[country_code country_name region_name city_name latitude longitude
|
|
12
|
+
zip_code time_zone isp domain net_speed idd_code area_code usage_type
|
|
13
|
+
weather_station_code weather_station_name mcc mnc mobile_brand elevation]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
response_attributes.each do |attr|
|
|
17
|
+
define_method attr do
|
|
18
|
+
@data[attr] || ""
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class Ip2locationIo < Base
|
|
5
|
+
|
|
6
|
+
def address(format = :full)
|
|
7
|
+
"#{city_name} #{zip_code}, #{country_name}".sub(/^[ ,]*/, '')
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.response_attributes
|
|
11
|
+
%w[ip country_code country_name region_name city_name latitude longitude
|
|
12
|
+
zip_code time_zone asn as is_proxy]
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
response_attributes.each do |attr|
|
|
16
|
+
define_method attr do
|
|
17
|
+
@data[attr] || ""
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class Ip2locationLite < Base
|
|
5
|
+
|
|
6
|
+
def coordinates
|
|
7
|
+
[@data[:latitude], @data[:longitude]]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def city
|
|
11
|
+
@data[:city]
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def state
|
|
15
|
+
@data[:region]
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def state_code
|
|
19
|
+
"" # Not available in Maxmind's database
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def country
|
|
23
|
+
@data[:country_long]
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def country_code
|
|
27
|
+
@data[:country_short]
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def postal_code
|
|
31
|
+
@data[:zipcode]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.response_attributes
|
|
35
|
+
%w[country_short country_long region latitude longitude isp
|
|
36
|
+
domain netspeed areacode iddcode timezone zipcode weatherstationname
|
|
37
|
+
weatherstationcode mcc mnc mobilebrand elevation usagetype addresstype
|
|
38
|
+
category district asn as]
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
response_attributes.each do |a|
|
|
42
|
+
define_method a do
|
|
43
|
+
@data[a] || ""
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class IpapiCom < Base
|
|
5
|
+
|
|
6
|
+
def coordinates
|
|
7
|
+
[lat, lon]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def address
|
|
11
|
+
"#{city}, #{state_code} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def state
|
|
15
|
+
region_name
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def state_code
|
|
19
|
+
region
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def postal_code
|
|
23
|
+
zip
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def country_code
|
|
27
|
+
@data['countryCode']
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def region_name
|
|
31
|
+
@data['regionName']
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.response_attributes
|
|
35
|
+
%w[country region city zip timezone isp org as reverse query status message mobile proxy lat lon]
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
response_attributes.each do |attribute|
|
|
39
|
+
define_method attribute do
|
|
40
|
+
@data[attribute]
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class Ipbase < Base
|
|
5
|
+
def ip
|
|
6
|
+
@data["data"]['ip']
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def country_code
|
|
10
|
+
@data["data"]["location"]["country"]["alpha2"]
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def country
|
|
14
|
+
@data["data"]["location"]["country"]["name"]
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def state_code
|
|
18
|
+
@data["data"]["location"]["region"]["alpha2"]
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def state
|
|
22
|
+
@data["data"]["location"]["region"]["name"]
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def city
|
|
26
|
+
@data["data"]["location"]["city"]["name"]
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def postal_code
|
|
30
|
+
@data["data"]["location"]["zip"]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def coordinates
|
|
34
|
+
[
|
|
35
|
+
@data["data"]["location"]["latitude"].to_f,
|
|
36
|
+
@data["data"]["location"]["longitude"].to_f
|
|
37
|
+
]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class IpdataCo < Base
|
|
5
|
+
|
|
6
|
+
def city
|
|
7
|
+
@data['city']
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def state
|
|
11
|
+
@data['region']
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def state_code
|
|
15
|
+
@data['region_code']
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def country
|
|
19
|
+
@data['country_name']
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def country_code
|
|
23
|
+
@data['country_code']
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def postal_code
|
|
27
|
+
@data['postal']
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.response_attributes
|
|
31
|
+
%w[ip asn organisation currency currency_symbol calling_code flag time_zone is_eu]
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
response_attributes.each do |a|
|
|
35
|
+
define_method a do
|
|
36
|
+
@data[a]
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class Ipgeolocation < Base
|
|
5
|
+
|
|
6
|
+
def coordinates
|
|
7
|
+
[@data['latitude'].to_f, @data['longitude'].to_f]
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def address(format = :full)
|
|
11
|
+
"#{city}, #{state} #{postal_code}, #{country_name}".sub(/^[ ,]*/, "")
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def state
|
|
15
|
+
@data['state_prov']
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def state_code
|
|
19
|
+
@data['state_prov']
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def country
|
|
23
|
+
@data['country_name']
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def country_code
|
|
27
|
+
@data['country_code2']
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def postal_code
|
|
31
|
+
@data['zipcode']
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def self.response_attributes
|
|
35
|
+
[
|
|
36
|
+
['ip', ''],
|
|
37
|
+
['hostname', ''],
|
|
38
|
+
['continent_code', ''],
|
|
39
|
+
['continent_name', ''],
|
|
40
|
+
['country_code2', ''],
|
|
41
|
+
['country_code3', ''],
|
|
42
|
+
['country_name', ''],
|
|
43
|
+
['country_capital',''],
|
|
44
|
+
['district',''],
|
|
45
|
+
['state_prov',''],
|
|
46
|
+
['city', ''],
|
|
47
|
+
['zipcode', ''],
|
|
48
|
+
['time_zone', {}],
|
|
49
|
+
['currency', {}]
|
|
50
|
+
]
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
response_attributes.each do |attr, default|
|
|
54
|
+
define_method attr do
|
|
55
|
+
@data[attr] || default
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class IpinfoIo < Base
|
|
5
|
+
|
|
6
|
+
def address(format = :full)
|
|
7
|
+
"#{city} #{postal_code}, #{country}".sub(/^[ ,]*/, "")
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def coordinates
|
|
11
|
+
@data['loc'].to_s.split(",").map(&:to_f)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def city
|
|
15
|
+
@data['city']
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def state
|
|
19
|
+
@data['region']
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def country
|
|
23
|
+
@data['country']
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def postal_code
|
|
27
|
+
@data['postal']
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def country_code
|
|
31
|
+
@data.fetch('country', '')
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def state_code
|
|
35
|
+
@data.fetch('region_code', '')
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.response_attributes
|
|
39
|
+
%w(ip region postal)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
response_attributes.each do |a|
|
|
43
|
+
define_method a do
|
|
44
|
+
@data[a]
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder::Result
|
|
4
|
+
class IpinfoIoLite < Base
|
|
5
|
+
|
|
6
|
+
def self.response_attributes
|
|
7
|
+
%w(ip asn as_name as_domain country country_code continent continent_code)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
response_attributes.each do |a|
|
|
11
|
+
define_method a do
|
|
12
|
+
@data[a]
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'geocoder/results/base'
|
|
2
|
+
|
|
3
|
+
module Geocoder
|
|
4
|
+
module Result
|
|
5
|
+
class Ipqualityscore < Base
|
|
6
|
+
|
|
7
|
+
def self.key_method_mappings
|
|
8
|
+
{
|
|
9
|
+
'request_id' => :request_id,
|
|
10
|
+
'success' => :success?,
|
|
11
|
+
'message' => :message,
|
|
12
|
+
'city' => :city,
|
|
13
|
+
'region' => :state,
|
|
14
|
+
'country_code' => :country_code,
|
|
15
|
+
'mobile' => :mobile?,
|
|
16
|
+
'fraud_score' => :fraud_score,
|
|
17
|
+
'ISP' => :isp,
|
|
18
|
+
'ASN' => :asn,
|
|
19
|
+
'organization' => :organization,
|
|
20
|
+
'is_crawler' => :crawler?,
|
|
21
|
+
'host' => :host,
|
|
22
|
+
'proxy' => :proxy?,
|
|
23
|
+
'vpn' => :vpn?,
|
|
24
|
+
'tor' => :tor?,
|
|
25
|
+
'active_vpn' => :active_vpn?,
|
|
26
|
+
'active_tor' => :active_tor?,
|
|
27
|
+
'recent_abuse' => :recent_abuse?,
|
|
28
|
+
'bot_status' => :bot?,
|
|
29
|
+
'connection_type' => :connection_type,
|
|
30
|
+
'abuse_velocity' => :abuse_velocity,
|
|
31
|
+
'timezone' => :timezone,
|
|
32
|
+
}
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
key_method_mappings.each_pair do |key, meth|
|
|
36
|
+
define_method meth do
|
|
37
|
+
@data[key]
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
alias_method :state_code, :state
|
|
42
|
+
alias_method :country, :country_code
|
|
43
|
+
|
|
44
|
+
def postal_code
|
|
45
|
+
'' # No suitable fallback
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def address
|
|
49
|
+
[city, state, country_code].compact.reject(&:empty?).join(', ')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|