mm_geoip 0.1.0 → 0.1.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.
@@ -35,7 +35,7 @@ When runing this tool you have three possibilities to define the database locati
35
35
 
36
36
  Download:
37
37
  curl http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz | gunzip > GeoLiteCity.dat
38
-
38
+
39
39
  }
40
40
 
41
41
  end
@@ -19,7 +19,10 @@ class MMGeoip
19
19
  def initialize(env)
20
20
  # May be a Rack @env or any hash containing initial data. Or just an IP.
21
21
  @env = env.is_a?(Hash) ? env.dup : {:ip => env}
22
- @ip = @env[:ip] || @env["HTTP_X_REAL_IP"] || @env["HTTP_X_FORWARDED_FOR"] || @env["REMOTE_ADDR"]
22
+ @ip = @env[:ip] ||
23
+ @env["HTTP_X_REAL_IP"] ||
24
+ (@env["HTTP_X_FORWARDED_FOR"] && @env["HTTP_X_FORWARDED_FOR"].split(/[ ,]+/).first) ||
25
+ @env["REMOTE_ADDR"]
23
26
 
24
27
  raise NoIpGiven.new("No IP in env hash") unless @ip
25
28
  raise NoDatabaseFile.new("No database file: #{self.class.db_path}") unless File.exists? self.class.db_path
@@ -1,3 +1,3 @@
1
1
  class MMGeoip
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -27,19 +27,28 @@ describe MMGeoip do
27
27
 
28
28
  describe "#initialize" do
29
29
  it "works with the IP as :ip field" do
30
- MMGeoip.new '134.34.3.2'
30
+ g = MMGeoip.new '134.34.3.2'
31
+ g.lat
31
32
  end
32
33
  it "works with just the IP" do
33
- MMGeoip.new :ip => '134.34.3.2'
34
+ g = MMGeoip.new :ip => '134.34.3.2'
35
+ g.lat
34
36
  end
35
37
  it "works with the IP as 'REMOTE_ADDR' field" do
36
- MMGeoip.new 'REMOTE_ADDR' => '134.34.3.2'
38
+ g = MMGeoip.new 'REMOTE_ADDR' => '134.34.3.2'
39
+ g.lat
37
40
  end
38
41
  it "works with the IP as 'HTTP_X_REAL_IP' field" do
39
- MMGeoip.new 'HTTP_X_REAL_IP' => '134.34.3.2'
42
+ g = MMGeoip.new 'HTTP_X_REAL_IP' => '134.34.3.2'
43
+ g.lat
40
44
  end
41
45
  it "works with the IP as 'HTTP_X_FORWARDED_FOR' field" do
42
- MMGeoip.new 'HTTP_X_FORWARDED_FOR' => '134.34.3.2'
46
+ g = MMGeoip.new 'HTTP_X_FORWARDED_FOR' => '134.34.3.2'
47
+ g.lat
48
+ end
49
+ it "works with multiple IPs as 'HTTP_X_FORWARDED_FOR' field" do
50
+ g = MMGeoip.new 'HTTP_X_FORWARDED_FOR' => '134.34.3.2, 134.34.3.3'
51
+ g.lat
43
52
  end
44
53
  it "raises, if not :ip or 'REMOTE_ADDR' is given" do
45
54
  lambda{ MMGeoip.new :whatelse => 'something' }.should raise_error(MMGeoip::NoIpGiven)
metadata CHANGED
@@ -1,92 +1,90 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: mm_geoip
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
4
5
  prerelease:
5
- version: 0.1.0
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Niko Dittmann
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-06-13 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-03-29 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: geoip
17
- prerelease: false
18
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70218519127740 !ruby/object:Gem::Requirement
19
17
  none: false
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
24
22
  type: :runtime
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
27
- name: rake
28
23
  prerelease: false
29
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70218519127740
25
+ - !ruby/object:Gem::Dependency
26
+ name: rake
27
+ requirement: &70218519126080 !ruby/object:Gem::Requirement
30
28
  none: false
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
35
33
  type: :development
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: bundler
39
34
  prerelease: false
40
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70218519126080
36
+ - !ruby/object:Gem::Dependency
37
+ name: bundler
38
+ requirement: &70218519123940 !ruby/object:Gem::Requirement
41
39
  none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
46
44
  type: :development
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
49
- name: sinatra
50
45
  prerelease: false
51
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70218519123940
47
+ - !ruby/object:Gem::Dependency
48
+ name: sinatra
49
+ requirement: &70218519123220 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
57
55
  type: :development
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rack-test
61
56
  prerelease: false
62
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70218519123220
58
+ - !ruby/object:Gem::Dependency
59
+ name: rack-test
60
+ requirement: &70218519122480 !ruby/object:Gem::Requirement
63
61
  none: false
64
- requirements:
65
- - - ">="
66
- - !ruby/object:Gem::Version
67
- version: "0"
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
68
66
  type: :development
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
71
- name: rspec
72
67
  prerelease: false
73
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70218519122480
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: &70218519120180 !ruby/object:Gem::Requirement
74
72
  none: false
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: "0"
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
79
77
  type: :development
80
- version_requirements: *id006
81
- description: A proxy object around the geoip gem for lazy lookup. Includes a Rack middleware.
78
+ prerelease: false
79
+ version_requirements: *70218519120180
80
+ description: A proxy object around the geoip gem for lazy lookup. Includes a Rack
81
+ middleware.
82
82
  email: mail+git@niko-dittmann.com
83
- executables:
83
+ executables:
84
84
  - mm_geoip
85
85
  extensions: []
86
-
87
86
  extra_rdoc_files: []
88
-
89
- files:
87
+ files:
90
88
  - lib/mm_geoip/region.rb
91
89
  - lib/mm_geoip/version.rb
92
90
  - lib/mm_geoip.rb
@@ -101,32 +99,30 @@ files:
101
99
  - spec/spec_helper.rb
102
100
  homepage: http://github.com/niko/mm_geoip
103
101
  licenses: []
104
-
105
- post_install_message: "Try your new mm_geoip installation: type mm_geoip 134.34.3.2 [RETURN] in the command line."
102
+ post_install_message: ! 'Try your new mm_geoip installation: type mm_geoip 134.34.3.2
103
+ [RETURN] in the command line.'
106
104
  rdoc_options: []
107
-
108
- require_paths:
105
+ require_paths:
109
106
  - lib
110
- required_ruby_version: !ruby/object:Gem::Requirement
107
+ required_ruby_version: !ruby/object:Gem::Requirement
111
108
  none: false
112
- requirements:
113
- - - ">="
114
- - !ruby/object:Gem::Version
115
- version: "0"
116
- required_rubygems_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ! '>='
111
+ - !ruby/object:Gem::Version
112
+ version: '0'
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
114
  none: false
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: "0"
115
+ requirements:
116
+ - - ! '>='
117
+ - !ruby/object:Gem::Version
118
+ version: '0'
122
119
  requirements: []
123
-
124
120
  rubyforge_project:
125
- rubygems_version: 1.7.2
121
+ rubygems_version: 1.8.10
126
122
  signing_key:
127
123
  specification_version: 3
128
124
  summary: A proxy object around the geoip gem for lazy lookup. Includes a Rack middleware.
129
- test_files:
125
+ test_files:
130
126
  - spec/mm_geoip_region_spec.rb
131
127
  - spec/mm_geoip_spec.rb
132
128
  - spec/rack/mm_geoip_spec.rb