rgeoip 0.0.2 → 0.0.3
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.
- data/.gemtest +0 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +2 -0
- data/VERSION +1 -1
- data/ext/rgeoip.c +1 -3
- data/lib/rack/rgeoip.rb +27 -0
- data/rgeoip.gemspec +2 -1
- data/test/data/GeoIP.dat +0 -0
- data/test/data/GeoLiteCity.dat +0 -0
- data/test/helper.rb +1 -0
- data/test/test_rack_rgeoip_lookup.rb +15 -0
- data/test/test_rgeoip.rb +9 -2
- data/test/test_rgeoip_database.rb +2 -2
- metadata +36 -16
data/.gemtest
ADDED
File without changes
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/ext/rgeoip.c
CHANGED
@@ -113,8 +113,6 @@ static VALUE
|
|
113
113
|
gi_new(int argc, VALUE *argv, VALUE self)
|
114
114
|
{
|
115
115
|
Rgeoip *gi;
|
116
|
-
VALUE flags;
|
117
|
-
VALUE filenames;
|
118
116
|
int i;
|
119
117
|
|
120
118
|
Data_Get_Struct(self, Rgeoip, gi);
|
@@ -294,7 +292,7 @@ gid_new(int argc, VALUE *argv, VALUE self)
|
|
294
292
|
|
295
293
|
rb_scan_args(argc, argv, "11", &filename, &flags);
|
296
294
|
|
297
|
-
|
295
|
+
filename = StringValue(filename);
|
298
296
|
|
299
297
|
gid->ptr = GeoIP_open(RSTRING_PTR(filename),
|
300
298
|
GEOIP_MEMORY_CACHE | GEOIP_CHECK_CACHE | GEOIP_MMAP_CACHE);
|
data/lib/rack/rgeoip.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'rack'
|
2
|
+
require 'rgeoip'
|
3
|
+
|
4
|
+
module Rack::Rgeoip
|
5
|
+
def self.new(app, options={})
|
6
|
+
Lookup.new(app, options)
|
7
|
+
end
|
8
|
+
|
9
|
+
class Lookup
|
10
|
+
DEFAULT = { :db => '/usr/share/GeoIP/GeoIP.dat' }
|
11
|
+
|
12
|
+
def initialize(app, options={})
|
13
|
+
@app, @options = app, DEFAULT.merge(options)
|
14
|
+
@rgeoip = Rgeoip.new @options[:db]
|
15
|
+
end
|
16
|
+
|
17
|
+
def call(env)
|
18
|
+
@app.call(lookup env)
|
19
|
+
end
|
20
|
+
|
21
|
+
def lookup(env)
|
22
|
+
env.tap do
|
23
|
+
env['rack.geoip'] = @rgeoip.country(Rack::Request.new(env).ip)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/rgeoip.gemspec
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{rgeoip}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["miyucy"]
|
@@ -27,6 +27,7 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"ext/extconf.rb",
|
29
29
|
"ext/rgeoip.c",
|
30
|
+
"rgeoip.gemspec",
|
30
31
|
"test/helper.rb",
|
31
32
|
"test/test_rgeoip.rb",
|
32
33
|
"test/test_rgeoip_database.rb"
|
data/test/data/GeoIP.dat
ADDED
Binary file
|
Binary file
|
data/test/helper.rb
CHANGED
@@ -13,6 +13,7 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
13
13
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
14
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'ext'))
|
15
15
|
require 'rgeoip'
|
16
|
+
require 'rack/rgeoip'
|
16
17
|
|
17
18
|
class Test::Unit::TestCase
|
18
19
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
class TestRackRgeoipLookup < Test::Unit::TestCase
|
4
|
+
def test_initialize
|
5
|
+
assert_respond_to(Rack::Rgeoip.new(nil), :call)
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_initialize_with_hash
|
9
|
+
assert_nothing_raised { Rack::Rgeoip.new(nil, {}) }
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_pass_to_app
|
13
|
+
Rack::Rgeoip.new(lambda { |env| assert env.has_key? 'rack.geoip' }).call({})
|
14
|
+
end
|
15
|
+
end
|
data/test/test_rgeoip.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'helper'
|
2
2
|
require 'tempfile'
|
3
|
+
require 'pathname'
|
3
4
|
|
4
5
|
class TestRgeoip < Test::Unit::TestCase
|
5
6
|
def test_constant
|
@@ -16,6 +17,12 @@ class TestRgeoip < Test::Unit::TestCase
|
|
16
17
|
}
|
17
18
|
end
|
18
19
|
|
20
|
+
def test_open_with_pathname
|
21
|
+
assert_nothing_raised {
|
22
|
+
Rgeoip.new.open Pathname.new(paths[:country])
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
19
26
|
def test_open_invalid_dbfile
|
20
27
|
assert_raise(RuntimeError) {
|
21
28
|
Rgeoip.new.open Tempfile.new("rgeoip").path
|
@@ -60,8 +67,8 @@ class TestRgeoip < Test::Unit::TestCase
|
|
60
67
|
|
61
68
|
def paths
|
62
69
|
{
|
63
|
-
:country => File.expand_path("
|
64
|
-
:city => File.expand_path("
|
70
|
+
:country => File.expand_path("data/GeoIP.dat", File.dirname(__FILE__)),
|
71
|
+
:city => File.expand_path("data/GeoLiteCity.dat", File.dirname(__FILE__)),
|
65
72
|
}
|
66
73
|
end
|
67
74
|
|
@@ -76,8 +76,8 @@ class TestRgeoipDatabase < Test::Unit::TestCase
|
|
76
76
|
|
77
77
|
def paths
|
78
78
|
{
|
79
|
-
:country => File.expand_path("
|
80
|
-
:city => File.expand_path("
|
79
|
+
:country => File.expand_path("data/GeoIP.dat", File.dirname(__FILE__)),
|
80
|
+
:city => File.expand_path("data/GeoLiteCity.dat", File.dirname(__FILE__)),
|
81
81
|
}
|
82
82
|
end
|
83
83
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rgeoip
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 25
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- miyucy
|
@@ -15,10 +15,11 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-02-18 00:00:00 +09:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
type: :development
|
22
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
@@ -30,11 +31,11 @@ dependencies:
|
|
30
31
|
- 6
|
31
32
|
- 0
|
32
33
|
version: 0.6.0
|
33
|
-
prerelease: false
|
34
34
|
name: yard
|
35
|
-
type: :development
|
36
35
|
version_requirements: *id001
|
36
|
+
prerelease: false
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
|
+
type: :development
|
38
39
|
requirement: &id002 !ruby/object:Gem::Requirement
|
39
40
|
none: false
|
40
41
|
requirements:
|
@@ -46,11 +47,11 @@ dependencies:
|
|
46
47
|
- 0
|
47
48
|
- 0
|
48
49
|
version: 1.0.0
|
49
|
-
prerelease: false
|
50
50
|
name: bundler
|
51
|
-
type: :development
|
52
51
|
version_requirements: *id002
|
52
|
+
prerelease: false
|
53
53
|
- !ruby/object:Gem::Dependency
|
54
|
+
type: :development
|
54
55
|
requirement: &id003 !ruby/object:Gem::Requirement
|
55
56
|
none: false
|
56
57
|
requirements:
|
@@ -62,11 +63,11 @@ dependencies:
|
|
62
63
|
- 5
|
63
64
|
- 2
|
64
65
|
version: 1.5.2
|
65
|
-
prerelease: false
|
66
66
|
name: jeweler
|
67
|
-
type: :development
|
68
67
|
version_requirements: *id003
|
68
|
+
prerelease: false
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
+
type: :development
|
70
71
|
requirement: &id004 !ruby/object:Gem::Requirement
|
71
72
|
none: false
|
72
73
|
requirements:
|
@@ -76,11 +77,11 @@ dependencies:
|
|
76
77
|
segments:
|
77
78
|
- 0
|
78
79
|
version: "0"
|
79
|
-
prerelease: false
|
80
80
|
name: rcov
|
81
|
-
type: :development
|
82
81
|
version_requirements: *id004
|
82
|
+
prerelease: false
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
+
type: :development
|
84
85
|
requirement: &id005 !ruby/object:Gem::Requirement
|
85
86
|
none: false
|
86
87
|
requirements:
|
@@ -90,10 +91,23 @@ dependencies:
|
|
90
91
|
segments:
|
91
92
|
- 0
|
92
93
|
version: "0"
|
93
|
-
prerelease: false
|
94
94
|
name: ZenTest
|
95
|
-
type: :development
|
96
95
|
version_requirements: *id005
|
96
|
+
prerelease: false
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
type: :development
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
100
|
+
none: false
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
hash: 3
|
105
|
+
segments:
|
106
|
+
- 0
|
107
|
+
version: "0"
|
108
|
+
name: rack
|
109
|
+
version_requirements: *id006
|
110
|
+
prerelease: false
|
97
111
|
description: alternative libGeoIP binding for Ruby
|
98
112
|
email: miyucy@gmail.com
|
99
113
|
executables: []
|
@@ -105,6 +119,7 @@ extra_rdoc_files:
|
|
105
119
|
- README.rdoc
|
106
120
|
files:
|
107
121
|
- .document
|
122
|
+
- .gemtest
|
108
123
|
- Gemfile
|
109
124
|
- Gemfile.lock
|
110
125
|
- LICENSE.txt
|
@@ -113,8 +128,12 @@ files:
|
|
113
128
|
- VERSION
|
114
129
|
- ext/extconf.rb
|
115
130
|
- ext/rgeoip.c
|
131
|
+
- lib/rack/rgeoip.rb
|
116
132
|
- rgeoip.gemspec
|
133
|
+
- test/data/GeoIP.dat
|
134
|
+
- test/data/GeoLiteCity.dat
|
117
135
|
- test/helper.rb
|
136
|
+
- test/test_rack_rgeoip_lookup.rb
|
118
137
|
- test/test_rgeoip.rb
|
119
138
|
- test/test_rgeoip_database.rb
|
120
139
|
has_rdoc: true
|
@@ -147,11 +166,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
166
|
requirements: []
|
148
167
|
|
149
168
|
rubyforge_project:
|
150
|
-
rubygems_version: 1.
|
169
|
+
rubygems_version: 1.5.2
|
151
170
|
signing_key:
|
152
171
|
specification_version: 3
|
153
172
|
summary: alternative libGeoIP binding for Ruby
|
154
173
|
test_files:
|
155
174
|
- test/helper.rb
|
175
|
+
- test/test_rack_rgeoip_lookup.rb
|
156
176
|
- test/test_rgeoip.rb
|
157
177
|
- test/test_rgeoip_database.rb
|