ipgeobase 0.0.1 → 0.1.0
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 +7 -0
- data/.coveralls.yml +1 -0
- data/.gitignore +1 -0
- data/Gemfile +5 -0
- data/README.md +42 -0
- data/Rakefile +10 -0
- data/ipgeobase.gemspec +1 -0
- data/lib/ipgeobase.rb +3 -3
- data/lib/ipgeobase/ip_meta_data.rb +16 -4
- data/lib/ipgeobase/version.rb +1 -1
- data/test/fixtures/response.xml +11 -0
- data/test/lib/ipgeobase_test.rb +22 -0
- data/test/test_helper.rb +15 -0
- metadata +37 -14
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a5fd94751a091e9f684b217975349e98e6708aeb
|
4
|
+
data.tar.gz: 92fd18fe2d5cb2c7765e981cb079c998b020aff0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 4e49790ef3ecb36d23c3adbf0fcd08e8ed6af2e48d9120a8b721fe5b4b350a3139b1f15c539d6c81f50b837d92b77e21c013ddb871dc7287a2fd8a8ba44cdbde
|
7
|
+
data.tar.gz: d3f5a30da27fbbf270204ea9f83dede310690e5ac530ff58958af94de0ee2bcc7884128b10195aa8f4ef066707b8c6df602e02980bc480be4c70706f0e8660a3
|
data/.coveralls.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
repo_token: eKNSKm6UDVvUejJOn77bpzYwokSYCV2PV
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/README.md
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
# Ipgeobase
|
2
|
+
|
3
|
+
[](https://rubygems.org/gems/ipgeobase)
|
4
|
+
[](https://travis-ci.org/mokevnin/ipgeobase)
|
5
|
+
[](https://gemnasium.com/mokevnin/ipgeobase)
|
6
|
+
[](https://codeclimate.com/github/mokevnin/ipgeobase)
|
7
|
+
[](https://coveralls.io/r/mokevnin/ipgeobase)
|
8
|
+
[](http://stillmaintained.com/mokevnin/ipgeobase)
|
9
|
+
|
10
|
+
## Installation
|
11
|
+
|
12
|
+
Add this line to your application's Gemfile:
|
13
|
+
|
14
|
+
gem 'ipgeobase'
|
15
|
+
|
16
|
+
And then execute:
|
17
|
+
|
18
|
+
$ bundle
|
19
|
+
|
20
|
+
Or install it yourself as:
|
21
|
+
|
22
|
+
$ gem install 'ipgeobase'
|
23
|
+
|
24
|
+
## Usage
|
25
|
+
|
26
|
+
ip_meta = Ipgeobase.lookup('10.11.12.134')
|
27
|
+
ip_meta.city # => Москва
|
28
|
+
ip_meta.country # => Россия
|
29
|
+
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
1. Fork it
|
34
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
35
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
36
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
37
|
+
5. Create new Pull Request
|
38
|
+
|
39
|
+
run tests:
|
40
|
+
|
41
|
+
turn -Itest test/lib
|
42
|
+
|
data/Rakefile
CHANGED
data/ipgeobase.gemspec
CHANGED
data/lib/ipgeobase.rb
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
require 'uri'
|
2
2
|
require 'net/http'
|
3
|
-
require 'happymapper'
|
4
3
|
|
5
4
|
module Ipgeobase
|
6
|
-
|
5
|
+
URL = 'http://ipgeobase.ru:7020/geo'
|
7
6
|
autoload 'IpMetaData', 'ipgeobase/ip_meta_data'
|
8
7
|
|
9
8
|
def self.lookup(ip)
|
10
|
-
uri = URI.parse(
|
9
|
+
uri = URI.parse(URL)
|
11
10
|
uri.query = URI.encode_www_form :ip => ip
|
11
|
+
|
12
12
|
IpMetaData.parse(Net::HTTP.get(uri))
|
13
13
|
end
|
14
14
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
-
require '
|
1
|
+
require 'happymapper'
|
2
|
+
require 'iconv' unless String.instance_methods.include?(:encode)
|
2
3
|
|
3
4
|
module Ipgeobase
|
4
5
|
class IpMetaData
|
5
6
|
include HappyMapper
|
6
7
|
|
7
8
|
tag 'ip-answer'
|
9
|
+
element :inetnum, String, :deep => true
|
8
10
|
element :city, String, :deep => true
|
9
11
|
element :country, String, :deep => true
|
10
12
|
element :region, String, :deep => true
|
@@ -13,15 +15,25 @@ module Ipgeobase
|
|
13
15
|
element :lng, Float, :deep => true
|
14
16
|
|
15
17
|
def city
|
16
|
-
|
18
|
+
encode(@city)
|
17
19
|
end
|
18
20
|
|
19
21
|
def country
|
20
|
-
|
22
|
+
encode(@country)
|
21
23
|
end
|
22
24
|
|
23
25
|
def region
|
24
|
-
|
26
|
+
encode(@region)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def encode(api_string)
|
32
|
+
if api_string.respond_to?(:encode)
|
33
|
+
api_string.encode
|
34
|
+
else
|
35
|
+
Iconv.iconv('windows-1251', 'utf-8', api_string).first
|
36
|
+
end
|
25
37
|
end
|
26
38
|
end
|
27
39
|
end
|
data/lib/ipgeobase/version.rb
CHANGED
@@ -0,0 +1,11 @@
|
|
1
|
+
<ip-answer>
|
2
|
+
<ip value="46.8.114.116">
|
3
|
+
<inetnum>46.8.112.0 - 46.8.127.255</inetnum>
|
4
|
+
<country>RU</country>
|
5
|
+
<city>Ульяновск</city>
|
6
|
+
<region>Ульяновская область</region>
|
7
|
+
<district>Приволжский федеральный округ</district>
|
8
|
+
<lat>54.321480</lat>
|
9
|
+
<lng>48.385651</lng>
|
10
|
+
</ip>
|
11
|
+
</ip-answer>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class IpgeobaseTest < TestCase
|
4
|
+
def setup
|
5
|
+
@ip = '46.8.114.116'
|
6
|
+
@stub = stub_request(:get, "#{Ipgeobase::URL}?ip=#{@ip}").
|
7
|
+
with(:headers => {'Accept'=>'*/*', 'User-Agent'=>'Ruby'}).
|
8
|
+
to_return(:status => 200, :body => load_fixture('response.xml'), :headers => {})
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_lookup_http_query
|
12
|
+
Ipgeobase.lookup @ip
|
13
|
+
|
14
|
+
assert_requested @stub
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_lookup_response_object
|
18
|
+
meta = Ipgeobase.lookup @ip
|
19
|
+
|
20
|
+
assert_equal 54.321480, meta.lat
|
21
|
+
end
|
22
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
Bundler.require
|
3
|
+
|
4
|
+
require "minitest/autorun"
|
5
|
+
|
6
|
+
if ENV['TRAVIS']
|
7
|
+
require 'coveralls'
|
8
|
+
Coveralls.wear!
|
9
|
+
end
|
10
|
+
|
11
|
+
class TestCase < MiniTest::Test
|
12
|
+
def load_fixture(filename)
|
13
|
+
File.read(File.dirname(__FILE__) + "/fixtures/#{filename}")
|
14
|
+
end
|
15
|
+
end
|
metadata
CHANGED
@@ -1,27 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ipgeobase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
5
|
-
prerelease:
|
4
|
+
version: 0.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Mokevnin Kirill
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-10-16 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: happymapper
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: iconv
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
25
41
|
description: geo to ip
|
26
42
|
email:
|
27
43
|
- mokevnin@gmail.com
|
@@ -29,35 +45,42 @@ executables: []
|
|
29
45
|
extensions: []
|
30
46
|
extra_rdoc_files: []
|
31
47
|
files:
|
48
|
+
- .coveralls.yml
|
32
49
|
- .gitignore
|
33
50
|
- Gemfile
|
51
|
+
- README.md
|
34
52
|
- Rakefile
|
35
53
|
- ipgeobase.gemspec
|
36
54
|
- lib/ipgeobase.rb
|
37
55
|
- lib/ipgeobase/ip_meta_data.rb
|
38
56
|
- lib/ipgeobase/version.rb
|
57
|
+
- test/fixtures/response.xml
|
58
|
+
- test/lib/ipgeobase_test.rb
|
59
|
+
- test/test_helper.rb
|
39
60
|
homepage: ''
|
40
61
|
licenses: []
|
62
|
+
metadata: {}
|
41
63
|
post_install_message:
|
42
64
|
rdoc_options: []
|
43
65
|
require_paths:
|
44
66
|
- lib
|
45
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
46
|
-
none: false
|
47
68
|
requirements:
|
48
|
-
- -
|
69
|
+
- - '>='
|
49
70
|
- !ruby/object:Gem::Version
|
50
71
|
version: '0'
|
51
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
52
|
-
none: false
|
53
73
|
requirements:
|
54
|
-
- -
|
74
|
+
- - '>='
|
55
75
|
- !ruby/object:Gem::Version
|
56
76
|
version: '0'
|
57
77
|
requirements: []
|
58
78
|
rubyforge_project: ipgeobase
|
59
|
-
rubygems_version:
|
79
|
+
rubygems_version: 2.0.4
|
60
80
|
signing_key:
|
61
|
-
specification_version:
|
81
|
+
specification_version: 4
|
62
82
|
summary: geo to ip
|
63
|
-
test_files:
|
83
|
+
test_files:
|
84
|
+
- test/fixtures/response.xml
|
85
|
+
- test/lib/ipgeobase_test.rb
|
86
|
+
- test/test_helper.rb
|