seventeen_mon 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.
- checksums.yaml +4 -4
- data/README.md +21 -3
- data/bin/seventeen +51 -0
- data/lib/seventeen_mon.rb +3 -2
- data/lib/seventeen_mon/version.rb +1 -1
- data/spec/seventeen_mon_spec.rb +2 -5
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6663d4ddeb5e3ea04c62da49b527bc038fe49a5
|
4
|
+
data.tar.gz: ba29fe84dbae2548803f64b3c6617ddfa17d38f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4cc0bb55fc45741bbef57719e27ad1f3c5d49cb32ba9d643760895ee34f1f3eb99e5175f80d18d36f597fe5d1b5947c5797c4b2b9f4d8ed2f55310efdfdf1ccd
|
7
|
+
data.tar.gz: 3ca3c66c11d64e171a6d04f8c76d889bfbae22efa660bc10b1c012d8ac46cca6bedbd189e3dc5548c4a48829ee55aec648dd873536ca9254b8efcaf65e2294c8
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# SeventeenMon
|
2
2
|
|
3
|
-
|
3
|
+
SeventeenMon simply help you find location by IP address. Data is totally based on [17MON.CN](http://tool.17mon.cn/).
|
4
4
|
|
5
5
|
|
6
6
|
## Installation
|
@@ -19,14 +19,28 @@ Or you can install simply by
|
|
19
19
|
|
20
20
|
## Usage
|
21
21
|
|
22
|
+
### In Ruby
|
22
23
|
```(ruby)
|
23
|
-
|
24
|
+
SM.find_by_ip "YOUR_IP_ADDRESS"
|
24
25
|
# => {:country=>"英国", :city=>"英国"}
|
25
26
|
|
26
|
-
SM.find_by_address
|
27
|
+
SM.find_by_address "http://ruby-lang.com"
|
27
28
|
# => {:country=>"荷兰", :city=>"荷兰"}
|
28
29
|
```
|
29
30
|
|
31
|
+
### In Command Line
|
32
|
+
|
33
|
+
```(bash)
|
34
|
+
$ seventeen ip 188.74.78.234
|
35
|
+
Country: 英国
|
36
|
+
City: 英国
|
37
|
+
|
38
|
+
|
39
|
+
$ seventeen address https://github.com
|
40
|
+
Country: 美国
|
41
|
+
City: 美国
|
42
|
+
```
|
43
|
+
|
30
44
|
## Contributing
|
31
45
|
|
32
46
|
1. Fork it ( http://github.com/<my-github-username>/seventeen_mom/fork )
|
@@ -34,3 +48,7 @@ SM.find_by_address address: "ruby-lang.com", protocol: "http"
|
|
34
48
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
35
49
|
4. Push to the branch (`git push origin my-new-feature`)
|
36
50
|
5. Create new Pull Request
|
51
|
+
|
52
|
+
## Thanks
|
53
|
+
|
54
|
+
[高春辉 Paul Gao](http://tool.17mon.cn/) - for his awesome data.
|
data/bin/seventeen
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
$LOAD_PATH << File.dirname(__FILE__) + "/../lib" if $0 == __FILE__
|
3
|
+
|
4
|
+
require 'optparse'
|
5
|
+
require 'seventeen_mon'
|
6
|
+
|
7
|
+
CONFIG = {}
|
8
|
+
OPERATIONS = %w(ip address)
|
9
|
+
|
10
|
+
option_parser = OptionParser.new do |opts|
|
11
|
+
opts.banner = "Seventeen Mon #{SeventeenMon::VERSION}, a location finder for human\n" \
|
12
|
+
"Usage: #{File.basename(__FILE__)} [#{OPERATIONS.join('|')}] [pattern]"
|
13
|
+
|
14
|
+
opts.separator <<-EOS
|
15
|
+
|
16
|
+
Supported commands:
|
17
|
+
|
18
|
+
ip [pattern] Display the location by ip
|
19
|
+
address [pattern] Display the location by address
|
20
|
+
|
21
|
+
|
22
|
+
Example:
|
23
|
+
seventeen ip 188.74.78.234
|
24
|
+
seventeen address http://ruby-lang.com
|
25
|
+
|
26
|
+
Note: NSFW if you run seventeen as root.
|
27
|
+
EOS
|
28
|
+
end
|
29
|
+
option_parser.parse!
|
30
|
+
|
31
|
+
|
32
|
+
op = ARGV.shift
|
33
|
+
if OPERATIONS.include?(op)
|
34
|
+
begin
|
35
|
+
result = SM.send("find_by_#{op}".to_sym, ARGV.first)
|
36
|
+
puts <<-EOS
|
37
|
+
Country: #{result[:country]}
|
38
|
+
City: #{result[:city]}
|
39
|
+
EOS
|
40
|
+
|
41
|
+
rescue ArgumentError => ex
|
42
|
+
puts ex.message
|
43
|
+
|
44
|
+
rescue Exception => e
|
45
|
+
puts "Mmmmm, I didn't expect this:"
|
46
|
+
puts e.message
|
47
|
+
puts e.backtrace.join("\n")
|
48
|
+
end
|
49
|
+
else
|
50
|
+
puts option_parser.help
|
51
|
+
end
|
data/lib/seventeen_mon.rb
CHANGED
@@ -12,8 +12,9 @@ module SeventeenMon
|
|
12
12
|
IP.new(ip: _ip).find
|
13
13
|
end
|
14
14
|
|
15
|
-
def self.find_by_address(
|
16
|
-
|
15
|
+
def self.find_by_address(_address)
|
16
|
+
prot, addr = _address.split("://")
|
17
|
+
IP.new(address: addr, protocol: prot).find
|
17
18
|
end
|
18
19
|
end
|
19
20
|
|
data/spec/seventeen_mon_spec.rb
CHANGED
@@ -13,10 +13,7 @@ describe SeventeenMon do
|
|
13
13
|
describe "# query test" do
|
14
14
|
before do
|
15
15
|
@ip_param = "129.215.5.255"
|
16
|
-
@
|
17
|
-
address: "www.ruby-lang.com",
|
18
|
-
protocol: "http"
|
19
|
-
}
|
16
|
+
@url_param = "http://www.ruby-lang.com"
|
20
17
|
end
|
21
18
|
|
22
19
|
it "can find location by ip" do
|
@@ -26,7 +23,7 @@ describe SeventeenMon do
|
|
26
23
|
end
|
27
24
|
|
28
25
|
it "can find location by address" do
|
29
|
-
result = SM.find_by_address @
|
26
|
+
result = SM.find_by_address @url_param
|
30
27
|
result.should include(:city)
|
31
28
|
result.should include(:country)
|
32
29
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: seventeen_mon
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jingkai He
|
@@ -69,7 +69,8 @@ dependencies:
|
|
69
69
|
description: Simply find location by IP.
|
70
70
|
email:
|
71
71
|
- jaxihe@gmail.com
|
72
|
-
executables:
|
72
|
+
executables:
|
73
|
+
- seventeen
|
73
74
|
extensions: []
|
74
75
|
extra_rdoc_files: []
|
75
76
|
files:
|
@@ -78,6 +79,7 @@ files:
|
|
78
79
|
- LICENSE.txt
|
79
80
|
- README.md
|
80
81
|
- Rakefile
|
82
|
+
- bin/seventeen
|
81
83
|
- lib/data/17monipdb.dat
|
82
84
|
- lib/seventeen_mon.rb
|
83
85
|
- lib/seventeen_mon/ip.rb
|