mm_geoip 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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