geoip_rails 0.0.2 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +17 -15
- data/lib/geoip_rails.rb +36 -2
- data/lib/geoip_rails/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cff04182d9e20c4a548563394ca80eee8abf4ff8
|
4
|
+
data.tar.gz: 481f7b4d08690ab137d904c75a72921774c48719
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1eff5a9c55320faf31be6d9e67e45abc1190ab6f988a1de783fd8613debdf41a5558226e194ed313945ec8dfec47a350a9fca10466233299c4a5037e9ae1fa7c
|
7
|
+
data.tar.gz: c2738af21562553b4e5dcdb99ac4389d0ad8a4d95b7804d8b0385d796fbe3cd1e93ff7980e5c37fb00cfa074abfd3c890286b590097360929bebed76e664cdd8
|
data/README.md
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
+
[![Gem Version](https://badge.fury.io/rb/geoip_rails.svg)](http://badge.fury.io/rb/geoip_rails)
|
1
2
|
# GeoipRails
|
2
3
|
|
3
4
|
Gives geolocation details based on an IP address or a host name
|
4
|
-
The gem uses freegeoip's API to fetch geolocation data given an IP address. freegeoip.net is a public REST API for searching geolocation of IP addresses and host names. Thanks to http://freegeoip.net/ for providing such a great API
|
5
|
+
The gem uses freegeoip's API to fetch geolocation data given an IP address. freegeoip.net is a public REST API for searching geolocation of IP addresses and host names. Supported formats include json (default), xml and csv. Thanks to http://freegeoip.net/ for providing such a great API.
|
5
6
|
## Installation
|
6
7
|
|
7
8
|
Add this line to your application's Gemfile:
|
@@ -20,28 +21,21 @@ Or install it yourself as:
|
|
20
21
|
|
21
22
|
You can pass the IP address/hostname for which you want to check geolocation data to:
|
22
23
|
|
23
|
-
GeoipRails.
|
24
|
-
|
25
|
-
|
26
|
-
These return the hashes below:
|
27
|
-
|
28
|
-
{"ip"=>"208.95.216.41", "country_code"=>"US", "country_name"=>"United States",
|
24
|
+
GeoipRails.geolocate("208.95.216.41")
|
25
|
+
=> {"ip"=>"208.95.216.41", "country_code"=>"US", "country_name"=>"United States",
|
29
26
|
"region_code"=>"VT", "region_name"=>"Vermont", "city"=>"Colchester", "zipcode"=>"05446",
|
30
27
|
"latitude"=>44.55, "longitude"=>-73.1552, "metro_code"=>"523", "area_code"=>"802"}
|
31
|
-
|
32
|
-
And
|
33
28
|
|
34
|
-
|
29
|
+
GeoipRails.geolocate("google.com")
|
30
|
+
=> {"ip"=>"173.194.115.72", "country_code"=>"US", "country_name"=>"United States",
|
35
31
|
"region_code"=>"CA", "region_name"=>"California", "city"=>"Mountain View", "zipcode"=>"94043",
|
36
32
|
"latitude"=>37.4192, "longitude"=>-122.0574, "metro_code"=>"807", "area_code"=>"650"}
|
37
33
|
|
38
|
-
|
39
|
-
|
40
|
-
You can of course select your desired value from this hash i.e.
|
34
|
+
You can of course select your desired value from the hash i.e.
|
41
35
|
|
42
|
-
GeoipRails.
|
36
|
+
GeoipRails.geolocate("208.95.216.41")["country_name"]
|
43
37
|
=> "United States"
|
44
|
-
GeoipRails.
|
38
|
+
GeoipRails.geolocate("208.95.216.41")["country_code"]
|
45
39
|
=> "US"
|
46
40
|
|
47
41
|
And so on. But we have shorthand methods for all this as shown below:
|
@@ -64,6 +58,14 @@ And so on. But we have shorthand methods for all this as shown below:
|
|
64
58
|
=> 44.55
|
65
59
|
GeoipRails.longitude("208.95.216.41")
|
66
60
|
=> -73.1552
|
61
|
+
|
62
|
+
If, for some reason, you want the response in xml or csv, you can use the same method but, pass in an extra argument for the format, as shown below:
|
63
|
+
|
64
|
+
GeoipRails.geolocate("208.95.216.41", "xml")
|
65
|
+
|
66
|
+
GeoipRails.geolocate("208.95.216.41", "csv")
|
67
|
+
|
68
|
+
GeoipRails.geolocate("208.95.216.41", "json") # Json is the default. You don't need to specify it.
|
67
69
|
|
68
70
|
## Pros and Cons
|
69
71
|
|
data/lib/geoip_rails.rb
CHANGED
@@ -3,9 +3,34 @@ require "httparty"
|
|
3
3
|
|
4
4
|
module GeoipRails
|
5
5
|
module_function
|
6
|
+
|
6
7
|
def find_by_ip ip
|
7
|
-
|
8
|
-
|
8
|
+
HTTParty.get("http://freegeoip.net/json/#{ip}")
|
9
|
+
end
|
10
|
+
|
11
|
+
def find_by_ip_and_format ip, format
|
12
|
+
ip = ip.downcase
|
13
|
+
format = format.downcase
|
14
|
+
`wget "http://freegeoip.net/#{format}/#{ip}"`
|
15
|
+
response = ""
|
16
|
+
File.open("#{ip}").each { |line| response += line}#.gsub("\n", " ")
|
17
|
+
`rm -rf #{ip}`
|
18
|
+
return response
|
19
|
+
end
|
20
|
+
|
21
|
+
# def print ip, format
|
22
|
+
# puts find_by_ip_and_format ip, format
|
23
|
+
# end
|
24
|
+
|
25
|
+
def geolocate(*args)
|
26
|
+
supported_formats = ["json", "xml", "csv"]
|
27
|
+
if args.length == 1
|
28
|
+
find_by_ip(args[0])
|
29
|
+
else
|
30
|
+
format = args[1].strip.downcase
|
31
|
+
format = "json" if !supported_formats.include?(format)
|
32
|
+
find_by_ip_and_format(args[0], format)
|
33
|
+
end
|
9
34
|
end
|
10
35
|
|
11
36
|
# def geolocation
|
@@ -16,30 +41,39 @@ module GeoipRails
|
|
16
41
|
def country ip
|
17
42
|
find_by_ip(ip)["country_name"]
|
18
43
|
end
|
44
|
+
|
19
45
|
def country_code ip
|
20
46
|
find_by_ip(ip)["country_code"]
|
21
47
|
end
|
48
|
+
|
22
49
|
def city ip
|
23
50
|
find_by_ip(ip)["city"]
|
24
51
|
end
|
52
|
+
|
25
53
|
def region_code ip
|
26
54
|
find_by_ip(ip)["region_code"]
|
27
55
|
end
|
56
|
+
|
28
57
|
def region_name ip
|
29
58
|
find_by_ip(ip)["region_name"]
|
30
59
|
end
|
60
|
+
|
31
61
|
def zipcode ip
|
32
62
|
find_by_ip(ip)["zipcode"]
|
33
63
|
end
|
64
|
+
|
34
65
|
def latitude ip
|
35
66
|
find_by_ip(ip)["latitude"]
|
36
67
|
end
|
68
|
+
|
37
69
|
def longitude ip
|
38
70
|
find_by_ip(ip)["longitude"]
|
39
71
|
end
|
72
|
+
|
40
73
|
def metro_code ip
|
41
74
|
find_by_ip(ip)["metro_code"]
|
42
75
|
end
|
76
|
+
|
43
77
|
def area_code ip
|
44
78
|
find_by_ip(ip)["area_code"]
|
45
79
|
end
|
data/lib/geoip_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: geoip_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- muaad
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|