geo_locale 0.0.1 → 0.0.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d3630bc2042f478722327069b9b89537d3edfa75
4
- data.tar.gz: 93a05c5cb14ddb962bd0bbfef6c8a598379cfef8
3
+ metadata.gz: 2810f63b7da90f39c9449254810fc4a53c89185c
4
+ data.tar.gz: c89638f968f4ec925c6b6e9263e1b8600164c839
5
5
  SHA512:
6
- metadata.gz: 29c014106ca2986094bf8aa6e63ee67676f274d9aee86369cd07a2c9176fa7abb20f61aa759a3e4e6d944a99718e722ced46f2b06aa7d4a359444fecae1edd63
7
- data.tar.gz: 2212080c277d6455443c673b982b5f8f89bf9a8ff1f23d0af7cb78a6897f0bb8c8388085b615857863e1b763f8be5ba1bfae0875e9a5c3b70d0b1e3eb2ff341c
6
+ metadata.gz: 3de8168f9d7121b3eaa847246a53095687edb278a1212620c5de2941097184aedbc06a1d680b9dfc8104ffdfc2b114d47fe53d4218d23e4e0ad28587d48e934b
7
+ data.tar.gz: 3eec2c6def2b37bc874d77255cf95ea6db5a05fd905b33d563c75a7a293e594de6ea104905772309570a8643200d327d38bc4d9053eb51eedee6a9eeb607e360
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # GeoLocale
2
2
 
3
- TODO: Write a gem description
3
+ Simple wrapper for GeoIP gem with some redundancy on GeoKit to get a two-letter country code or locale from an IP address.
4
+
5
+ Basic use-case: Detect application user's origin and display app in that language.
4
6
 
5
7
  ## Installation
6
8
 
@@ -21,12 +23,41 @@ Or install it yourself as:
21
23
  ## Usage
22
24
  Configure default locales
23
25
  ```ruby
26
+ # in /config/initializers/geo_locale.rb
24
27
  GeoLocale.configure do |config|
25
- config.dev_country = "fr"
26
- config.local_country = "de"
28
+ config.default_country = "de" # set to nil or false if you want to catch fails in geolocation
29
+ config.default_locale = "en" # country->locale conversion is minimal for now, set this explicitly to ensure GeoLocale.locale
30
+ config.default_lcid = "en-us"
31
+ config.overrides["ee"] = "en" # hash used to override standard country codes
27
32
  end
28
33
  ```
29
34
 
35
+ To get country code:
36
+ GeoLocale.country_code(ip: "")
37
+ Use in controller like so:
38
+ ```ruby
39
+ GeoLocale.country_code(request.remote_ip)
40
+ => "en"
41
+ ```
42
+
43
+ To get locale:
44
+ GeoLocale.locale(country_code: "", ip: "", lcid: false)
45
+ ```ruby
46
+ GeoLocale.locale(country_code: "gb")
47
+ => "en"
48
+ GeoLocale.locale(country_code: "gb", lcid: true)
49
+ => "en-gb"
50
+ GeoLocale.locale(ip: "97.77.25.20")
51
+ => "en"
52
+ GeoLocale.locale(ip: "97.77.25.20", lcid: true)
53
+ => "en-us"
54
+ ```
55
+ country_code is prioritized as it does not require external calls.
56
+ ```ruby
57
+ GeoLocale.locale(ip: "97.77.25.20", country_code: "lv")
58
+ => "lv"
59
+ ```
60
+
30
61
  ## Contributing
31
62
 
32
63
  1. Fork it ( https://github.com/Epigene/geo_locale/fork )
data/geo_locale.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.name = "geo_locale"
8
8
  spec.version = GeoLocale::VERSION
9
9
  spec.date = Date.today.to_s
10
- spec.platform = Gem::Platform::RUBY
10
+ #spec.platform = Gem::Platform::RUBY
11
11
  spec.authors = ["Epigene"]
12
12
  spec.email = ["augusts.bautra@gmail.com"]
13
13
  spec.summary = ['A Rails 4+ gem for getting user country']
@@ -19,15 +19,14 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
20
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
21
  spec.require_paths = ["lib"]
22
- #s.rubyforge_project = "ga_collector_pusher"
22
+ spec.rubyforge_project = "geo_locale"
23
23
 
24
- spec.add_development_dependency "bundler", "~> 1.7"
24
+ spec.add_development_dependency "bundler", "~> 1.7.0"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency 'rspec'
27
- spec.add_development_dependency 'rails'
26
+ spec.add_development_dependency 'rspec', "~> 3.1.0"
28
27
 
29
- #spec.add_dependency "rest-client"
30
- #spec.add_dependency "activesupport"
31
28
  spec.add_dependency 'geoip'
32
- spec.add_dependency 'i18n'
29
+ spec.add_dependency 'geokit'
30
+ spec.add_dependency 'geokit-rails'
31
+
33
32
  end
@@ -0,0 +1,46 @@
1
+ module GeoLocale
2
+ IP_REGEX = /\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/
3
+
4
+ def self.country_code (ip: "") # ip = "12.12.12.12"
5
+ country_code = GeoLocale.geo_ip_try(ip)
6
+ if country_code.present?
7
+ return country_code
8
+ else
9
+ country_code = GeoLocale.geokit_try(ip)
10
+ if country_code.present?
11
+ return country_code
12
+ else
13
+ # final fallback, config default
14
+ return GeoLocale.config.default_country
15
+ end
16
+ end
17
+ end
18
+
19
+ def self.geo_ip_try (ip)
20
+ begin
21
+ return nil unless ip.match(GeoLocale::IP_REGEX).present?
22
+ code = GeoIP.new("#{GeoLocale::ROOT}/lib/data/GeoIP.dat").country(ip).country_code2.downcase
23
+ if code == "--"
24
+ return nil
25
+ else
26
+ if GeoLocale.config.overrides["#{code}"].present?
27
+ return GeoLocale.config.overrides["#{code}"]
28
+ else
29
+ return code
30
+ end
31
+ end
32
+ rescue
33
+ nil
34
+ end
35
+ end
36
+
37
+ def self.geokit_try (ip)
38
+ return nil unless ip.match(GeoLocale::IP_REGEX).present?
39
+ begin
40
+ return Geokit::Geocoders::MultiGeocoder.geocode(ip).country_code.downcase
41
+ rescue
42
+ nil
43
+ end
44
+ end
45
+
46
+ end
@@ -0,0 +1,79 @@
1
+ module GeoLocale
2
+
3
+ def self.locale (ip: "", country_code: "", lcid: false)
4
+ if country_code.present?
5
+ unless lcid
6
+ locale = GeoLocale::LOCALE[country_code]
7
+ return figure_out_returnable_locale(locale: locale)
8
+ else
9
+ lcid_string = GeoLocale::LCID[country_code]
10
+ return figure_out_returnable_lcid(lcid_string: lcid_string)
11
+ end
12
+
13
+ elsif ip.present?
14
+ country_code = GeoLocale.country_code(ip: ip)
15
+ unless lcid
16
+ locale = GeoLocale::LOCALE[country_code]
17
+ return figure_out_returnable_locale(locale: locale)
18
+ else
19
+ lcid_string = GeoLocale::LCID[country_code]
20
+ return figure_out_returnable_lcid(lcid_string: lcid_string)
21
+ end
22
+
23
+ else
24
+ unless lcid
25
+ locale = GeoLocale::LOCALE["#{GeoLocale.config.default_country}"]
26
+ return figure_out_returnable_locale(locale: locale)
27
+ else
28
+ lcid_string = GeoLocale::LCID["#{GeoLocale.config.default_country}"]
29
+ return figure_out_returnable_lcid(lcid_string: lcid_string)
30
+ end
31
+ end
32
+ end
33
+
34
+ LOCALE = {
35
+ "lv" => "lv",
36
+ "lt" => "lt",
37
+ "ee" => "et",
38
+ "ru" => "ru",
39
+ "ie" => "en", # Ireland
40
+ "gb" => "en", # UK a.k.a Great Britain
41
+ "uk" => "en", # fallback England
42
+ "us" => "en", # US&A
43
+ "pl" => "pl",
44
+ "de" => "de",
45
+ "fr" => "fr"
46
+ }
47
+
48
+ LCID = {
49
+ "lv" => "lv",
50
+ "lt" => "lt",
51
+ "ee" => "et",
52
+ "ru" => "ru",
53
+ "ie" => "en-ie", # Ireland
54
+ "gb" => "en-gb", # UK a.k.a Great Britain
55
+ "uk" => "en-gb", # fallback England
56
+ "us" => "en-us", # US&A
57
+ "pl" => "pl",
58
+ "de" => "de",
59
+ "fr" => "fr"
60
+ }
61
+
62
+
63
+ def self.figure_out_returnable_locale(locale:)
64
+ if locale.present?
65
+ return locale
66
+ else
67
+ return GeoLocale.config.default_locale
68
+ end
69
+ end
70
+
71
+ def self.figure_out_returnable_lcid(lcid_string:)
72
+ if lcid_string.present?
73
+ return lcid_string
74
+ else
75
+ return GeoLocale.config.default_lcid
76
+ end
77
+ end
78
+
79
+ end
@@ -1,3 +1,3 @@
1
1
  module GeoLocale
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/geo_locale.rb CHANGED
@@ -1,5 +1,9 @@
1
1
  require "geo_locale/version"
2
- require "geo_locale/geo_locale"
2
+ require "geo_locale/country_code"
3
+ require "geo_locale/locale"
4
+ require 'geoip'
5
+ require 'geokit'
6
+ require 'geokit-rails'
3
7
 
4
8
  module GeoLocale
5
9
  class << self
@@ -12,11 +16,13 @@ module GeoLocale
12
16
  end
13
17
 
14
18
  class Config
15
- attr_accessor :local_country, :dev_country
19
+ attr_accessor :default_country, :default_locale, :default_lcid, :overrides
16
20
 
17
21
  def initialize
18
- @local_country = "en"
19
- @dev_country = "en"
22
+ @default_country = "us"
23
+ @default_locale = "en"
24
+ @default_lcid = "en-us"
25
+ @overrides = {}
20
26
  end
21
27
  end
22
28
 
data/spec/spec_helper.rb CHANGED
@@ -2,8 +2,15 @@ require 'bundler/setup'
2
2
  Bundler.setup
3
3
 
4
4
  require "geo_locale"
5
- require "rails"
6
5
 
7
6
  RSpec.configure do |config|
8
- # some (optional) config here
9
- end
7
+ LV_IPS =["81.198.65.13", "85.9.209.244", "83.241.46.175", "78.84.147.188", "159.148.168.103"]
8
+ LT_IPS =["77.79.35.98", "158.129.84.6", "91.211.246.238"]
9
+ EE_IPS =["188.92.162.172", "46.36.219.51", "84.50.44.25"]
10
+ RU_IPS =["92.255.197.224", "213.85.92.10", "80.78.245.89"]
11
+ US_IPS =["97.77.25.20", "192.185.83.90", "199.180.150.25"]
12
+ GB_IPS =["78.157.209.36", "79.143.87.234", "195.40.6.43"]
13
+ IR_IPS =["77.104.75.76", "94.74.132.65"]
14
+ IE_IPS =["54.170.245.171", "54.171.4.57", "176.34.86.253"]
15
+ PL_IPS =["83.3.115.58", "109.207.54.81", "88.199.29.50"]
16
+ end
@@ -0,0 +1,146 @@
1
+ # rspec spec/tests/geolocation_spec.rb
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Geolocation" do
6
+ lv_ip = LV_IPS.sample
7
+ lt_ip = LT_IPS.sample
8
+ ee_ip = EE_IPS.sample
9
+ ru_ip = RU_IPS.sample
10
+ us_ip = US_IPS.sample
11
+ gb_ip = GB_IPS.sample
12
+ ir_ip = IR_IPS.sample
13
+ ie_ip = IE_IPS.sample
14
+ pl_ip = PL_IPS.sample
15
+
16
+ before :each do
17
+ GeoLocale.config = nil
18
+ GeoLocale.configure {}
19
+ end
20
+
21
+ describe "GeoIP" do
22
+ it "should return nil for 0.0.0.0" do
23
+ expect(GeoLocale.geo_ip_try("0.0.0.0")).to eq nil
24
+ end
25
+ it "should return nil for localhost" do
26
+ expect(GeoLocale.geo_ip_try("localhost")).to eq nil
27
+ end
28
+ it "should return lv for #{lv_ip}" do
29
+ expect(GeoLocale.geo_ip_try(lv_ip) ).to eq "lv"
30
+ end
31
+ it "should return lt for #{lt_ip}" do
32
+ expect(GeoLocale.geo_ip_try(lt_ip)).to eq "lt"
33
+ end
34
+ it "should return ee for #{ee_ip}" do
35
+ expect(GeoLocale.geo_ip_try(ee_ip)).to eq "ee"
36
+ end
37
+ it "should return et for #{ee_ip} after override" do
38
+ GeoLocale.config.overrides["ee"] = "et"
39
+ expect(GeoLocale.geo_ip_try("#{ee_ip}")).to eq "et"
40
+ end
41
+ it "should return ru for #{ru_ip}" do
42
+ expect(GeoLocale.geo_ip_try("#{ru_ip}")).to eq "ru"
43
+ end
44
+ it "should return us for #{us_ip}" do
45
+ expect(GeoLocale.geo_ip_try("#{us_ip}")).to eq "us"
46
+ end
47
+ it "should return gb for #{gb_ip}" do # Great Britain
48
+ expect(GeoLocale.geo_ip_try("#{gb_ip}")).to eq "gb"
49
+ end
50
+ it "should return ir for #{ir_ip}" do # Iran
51
+ expect(GeoLocale.geo_ip_try("#{ir_ip}")).to eq "ir"
52
+ end
53
+ it "should return ie for #{ie_ip}" do # Ireland
54
+ expect(GeoLocale.geo_ip_try("#{ie_ip}")).to eq "ie"
55
+ end
56
+ it "should return pl for #{pl_ip}" do # Poland
57
+ expect(GeoLocale.geo_ip_try("#{pl_ip}")).to eq "pl"
58
+ end
59
+ end
60
+
61
+ describe "GeoKit" do # enable these to see IPs fail
62
+ # xit "should return nil for #{lv_ip}" do
63
+ # expect(GeoLocale.geokit_try("#{lv_ip}")).to eq nil
64
+ # end
65
+ # xit "should return nil for localhost" do
66
+ # expect(GeoLocale.geokit_try("localhost")).to eq nil
67
+ # end
68
+ xit "should return lv for #{lv_ip}" do
69
+ puts lv_ip
70
+ expect(GeoLocale.geokit_try(lv_ip)).to eq "lv"
71
+ end
72
+ # xit "should return lt for #{lt_ip}" do
73
+ # expect(GeoLocale.geokit_try(lt_ip)).to eq "lt"
74
+ # end
75
+ # xit "should return ee for #{ee_ip}" do
76
+ # expect(GeoLocale.geokit_try(ee_ip)).to eq "ee"
77
+ # end
78
+ # xit "should return et for #{ee_ip} after override" do
79
+ # GeoLocale.config.overrides["ee"] = "et"
80
+ # expect(GeoLocale.geokit_try("#{ee_ip}")).to eq "et"
81
+ # end
82
+ # xit "should return ru for #{ru_ip}" do
83
+ # expect(GeoLocale.geokit_try("#{ru_ip}")).to eq "ru"
84
+ # end
85
+ # xit "should return us for #{us_ip}" do
86
+ # expect(GeoLocale.geokit_try("#{us_ip}")).to eq "us"
87
+ # end
88
+ # xit "should return gb for #{gb_ip}" do # Great Britain
89
+ # expect(GeoLocale.geokit_try("#{gb_ip}")).to eq "gb"
90
+ # end
91
+ # xit "should return ir for #{ir_ip}" do # Iran
92
+ # expect(GeoLocale.geokit_try("#{ir_ip}")).to eq "ir"
93
+ # end
94
+ # xit "should return ie for #{ie_ip}" do # Ireland
95
+ # expect(GeoLocale.geokit_try("#{ie_ip}")).to eq "ie"
96
+ # end
97
+ # xit "should return pl for #{pl_ip}" do # Poland
98
+ # expect(GeoLocale.geokit_try("#{pl_ip}")).to eq "pl"
99
+ # end
100
+ end
101
+
102
+ describe "Cascade" do
103
+ it "should return config default and set value for 0.0.0.0" do
104
+ expect(GeoLocale.country_code(ip: "0.0.0.0")).to eq "us"
105
+ GeoLocale.config.default_country = "de"
106
+ expect(GeoLocale.country_code(ip: "0.0.0.0")).to eq "de"
107
+ end
108
+ it "should return config default and set value for localhost" do
109
+ expect(GeoLocale.country_code(ip: "localhost")).to eq "us"
110
+ GeoLocale.config.default_country = "fr"
111
+ expect(GeoLocale.country_code(ip: "localhost")).to eq "fr"
112
+ end
113
+ it "should return lv for #{lv_ip}" do
114
+ expect(GeoLocale.country_code(ip: lv_ip)).to eq "lv"
115
+ end
116
+ it "should return lt for #{lt_ip}" do
117
+ expect(GeoLocale.country_code(ip: lt_ip)).to eq "lt"
118
+ end
119
+ it "should return ee for #{ee_ip}" do
120
+ expect(GeoLocale.country_code(ip: ee_ip)).to eq "ee"
121
+ end
122
+ it "should return et for #{ee_ip} after override" do
123
+ GeoLocale.config.overrides["ee"] = "et"
124
+ expect(GeoLocale.country_code(ip: "#{ee_ip}")).to eq "et"
125
+ end
126
+ it "should return ru for #{ru_ip}" do
127
+ expect(GeoLocale.country_code(ip: "#{ru_ip}")).to eq "ru"
128
+ end
129
+ it "should return us for #{us_ip}" do
130
+ expect(GeoLocale.country_code(ip: "#{us_ip}")).to eq "us"
131
+ end
132
+ it "should return gb for #{gb_ip}" do # Great Britain
133
+ expect(GeoLocale.country_code(ip: "#{gb_ip}")).to eq "gb"
134
+ end
135
+ it "should return ir for #{ir_ip}" do # Iran
136
+ expect(GeoLocale.country_code(ip: "#{ir_ip}")).to eq "ir"
137
+ end
138
+ it "should return ie for #{ie_ip}" do # Ireland
139
+ expect(GeoLocale.country_code(ip: "#{ie_ip}")).to eq "ie"
140
+ end
141
+ it "should return pl for #{pl_ip}" do # Poland
142
+ expect(GeoLocale.country_code(ip: "#{pl_ip}")).to eq "pl"
143
+ end
144
+ end
145
+
146
+ end
@@ -3,25 +3,11 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe "Initializing" do
6
- before :all do
7
-
8
- end
9
-
10
- it "should set dev_country to en" do
11
- expect(GeoLocale.config.dev_country).to eq "en"
6
+ it "should set default_country to us" do
7
+ expect(GeoLocale.config.default_country).to eq "us"
12
8
  end
13
- it "should set local_country to en" do
14
- expect(GeoLocale.config.local_country).to eq "en"
9
+ it "should change default_country to de" do
10
+ GeoLocale.config.default_country = "de"
11
+ expect(GeoLocale.config.default_country).to eq "de"
15
12
  end
16
- it "should change local_country to de" do
17
- GeoLocale.config.local_country = "de"
18
- expect(GeoLocale.config.local_country).to eq "de"
19
- end
20
- it "should change dev_country to fr" do
21
- GeoLocale.configure do |c|
22
- c.dev_country = "fr"
23
- end
24
- expect(GeoLocale.config.dev_country).to eq "fr"
25
- end
26
-
27
13
  end
@@ -0,0 +1,110 @@
1
+ # rspec spec/tests/locale_spec.rb
2
+
3
+ require 'spec_helper'
4
+
5
+ describe "Locale interpret" do
6
+ lv_ip = LV_IPS.sample
7
+ lt_ip = LT_IPS.sample
8
+ ee_ip = EE_IPS.sample
9
+ ru_ip = RU_IPS.sample
10
+ us_ip = US_IPS.sample
11
+ gb_ip = GB_IPS.sample
12
+ ir_ip = IR_IPS.sample
13
+ ie_ip = IE_IPS.sample
14
+ pl_ip = PL_IPS.sample
15
+
16
+ before :each do
17
+ GeoLocale.config = nil
18
+ GeoLocale.configure {}
19
+ end
20
+
21
+ describe "from country code" do
22
+ context "with unchanged defaults" do
23
+ it "should return en if no arguments given" do
24
+ expect( GeoLocale.locale(country_code: "") ).to eq "en"
25
+ end
26
+ it 'should return lv for country_code: "lv"' do
27
+ expect( GeoLocale.locale(country_code: "lv") ).to eq "lv"
28
+ end
29
+ it 'should return en for country_code: "gb"' do
30
+ expect( GeoLocale.locale(country_code: "gb") ).to eq "en"
31
+ end
32
+ it 'should return en-gb for country_code: "gb", lcid: true' do
33
+ expect( GeoLocale.locale(country_code: "gb", lcid: true) ).to eq "en-gb"
34
+ end
35
+ end
36
+ context "with customized config" do
37
+ it "should return de if no arguments given" do
38
+ GeoLocale.config.default_country = "de"
39
+ expect( GeoLocale.locale(country_code: "") ).to eq "de"
40
+ end
41
+ it 'should return lv for country_code: "lv"' do
42
+ GeoLocale.config.default_country = "de"
43
+ expect( GeoLocale.locale(country_code: "lv") ).to eq "lv"
44
+ end
45
+ it 'should return en for country_code: "gb"' do
46
+ GeoLocale.config.default_country = "de"
47
+ expect( GeoLocale.locale(country_code: "gb") ).to eq "en"
48
+ end
49
+ it 'should return en-gb for country_code: "gb", lcid: true' do
50
+ GeoLocale.config.default_country = "de"
51
+ expect( GeoLocale.locale(country_code: "gb", lcid: true) ).to eq "en-gb"
52
+ end
53
+ end
54
+ end
55
+
56
+ describe "from IP" do
57
+ context "with unchanged defaults" do
58
+ it "should return en if no arguments given" do
59
+ expect( GeoLocale.locale(ip: "") ).to eq "en"
60
+ end
61
+ it "should return lv for #{lv_ip}" do
62
+ expect( GeoLocale.locale(ip: lv_ip) ).to eq "lv"
63
+ end
64
+ it "should return en for #{us_ip} " do
65
+ expect( GeoLocale.locale(ip: us_ip) ).to eq "en"
66
+ end
67
+ it "should return en-ie for #{ie_ip}, lcid: true" do
68
+ expect( GeoLocale.locale(ip: ie_ip, lcid: true) ).to eq "en-ie"
69
+ end
70
+ end
71
+ context "with customized config" do
72
+ it "should return en if only default_contry configured and no arguments given" do
73
+ GeoLocale.config.default_country = "no"
74
+ expect( GeoLocale.locale(ip: "") ).to eq "en"
75
+ end
76
+ it "should return en if only default_locale configured and no arguments given" do
77
+ GeoLocale.config.default_locale = "no"
78
+ expect( GeoLocale.locale(ip: "") ).to eq "en"
79
+ end
80
+ it 'should return "no" if both defaults configured and no arguments given' do
81
+ GeoLocale.config.default_country = "no"
82
+ GeoLocale.config.default_locale = "no"
83
+ expect( GeoLocale.locale(ip: "") ).to eq "no"
84
+ end
85
+ it "should return lv for #{lv_ip}" do
86
+ GeoLocale.config.default_country = "no"
87
+ GeoLocale.config.default_locale = "no"
88
+ expect( GeoLocale.locale(ip: lv_ip) ).to eq "lv"
89
+ end
90
+ it "should return en for #{gb_ip}" do
91
+ GeoLocale.config.default_country = "no"
92
+ GeoLocale.config.default_locale = "no"
93
+ expect( GeoLocale.locale(ip: gb_ip) ).to eq "en"
94
+ end
95
+ it "should return en-ie for #{ie_ip}, lcid: true" do
96
+ GeoLocale.config.default_country = "no"
97
+ GeoLocale.config.default_locale = "no"
98
+ expect( GeoLocale.locale(ip: ie_ip, lcid: true) ).to eq "en-ie"
99
+ end
100
+ it "should return lt for #{lt_ip}, lcid: true" do
101
+ GeoLocale.config.default_country = "no"
102
+ GeoLocale.config.default_locale = "no"
103
+ expect( GeoLocale.locale(ip: lt_ip, lcid: true) ).to eq "lt"
104
+ end
105
+ end
106
+ end
107
+
108
+
109
+
110
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: geo_locale
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Epigene
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-09 00:00:00.000000000 Z
11
+ date: 2015-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: 1.7.0
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: 1.7.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -42,24 +42,24 @@ dependencies:
42
42
  name: rspec
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 3.1.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 3.1.0
55
55
  - !ruby/object:Gem::Dependency
56
- name: rails
56
+ name: geoip
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :development
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: geoip
70
+ name: geokit
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: i18n
84
+ name: geokit-rails
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -110,11 +110,13 @@ files:
110
110
  - geo_locale.gemspec
111
111
  - lib/data/GeoIP.dat
112
112
  - lib/geo_locale.rb
113
- - lib/geo_locale/geo_locale.rb
113
+ - lib/geo_locale/country_code.rb
114
+ - lib/geo_locale/locale.rb
114
115
  - lib/geo_locale/version.rb
115
116
  - spec/spec_helper.rb
116
- - spec/tests/geo_ip_part_spec.rb
117
+ - spec/tests/geolocation_spec.rb
117
118
  - spec/tests/initialize_spec.rb
119
+ - spec/tests/locale_spec.rb
118
120
  homepage: ''
119
121
  licenses:
120
122
  - MIT
@@ -134,12 +136,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
136
  - !ruby/object:Gem::Version
135
137
  version: '0'
136
138
  requirements: []
137
- rubyforge_project:
139
+ rubyforge_project: geo_locale
138
140
  rubygems_version: 2.2.2
139
141
  signing_key:
140
142
  specification_version: 4
141
143
  summary: '["A Rails 4+ gem for getting user country"]'
142
144
  test_files:
143
145
  - spec/spec_helper.rb
144
- - spec/tests/geo_ip_part_spec.rb
146
+ - spec/tests/geolocation_spec.rb
145
147
  - spec/tests/initialize_spec.rb
148
+ - spec/tests/locale_spec.rb
@@ -1,25 +0,0 @@
1
- module GeoLocale
2
-
3
- def self.country_code
4
- country_code = GeoLocale.geo_ip_try
5
- if country_code.present?
6
- return
7
- else
8
- country_code = GeoLocale.config.local_country
9
- end
10
- end
11
-
12
- def self.geo_ip_try
13
- begin
14
- return GeoIP.new("#{GeoLocale::ROOT}/lib/data/GeoIP.dat").country(request.remote_ip).country_code2.downcase
15
- rescue
16
- nil
17
- end
18
- end
19
-
20
- def _try
21
- # request.location is handled by Geocoder, fails often
22
- # request.location.country_code.downcase
23
- end
24
-
25
- end
@@ -1,20 +0,0 @@
1
- # rspec spec/tests/geo_ip_part_spec.rb
2
-
3
- require 'spec_helper'
4
-
5
- describe "GeoIP part" do
6
- before :all do
7
-
8
- end
9
-
10
- it "status should be sent" do
11
- # request = stub(host: 'dietbikini.com')
12
- # GeoLocale.any_instance.stub request: request
13
- helper.request.stub(:path).and_return("/asdf.asdf")
14
- request = ActionController::TestRequest.new(host: "www.google.lv", remote_ip: "146.185.168.135")
15
- expect(GeoLocale.geo_ip_try).to eq "xx"
16
- end
17
-
18
-
19
-
20
- end