lita-whois 0.1.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39ea8d3ef372b75007280071a0208e01bd09ac8e
4
- data.tar.gz: 0a8237bb38bc43e6d77c16b06ff090ecc1a17d23
3
+ metadata.gz: d7bf04dbb4e6f3a789a35cf9501d0bec4558ec36
4
+ data.tar.gz: 38e834e951924536d2e8ccdb9561a331c4771672
5
5
  SHA512:
6
- metadata.gz: 979dadb1dee9a38c1fee8b9829dd3050bf71df1e797bed237df8d209c6f6adc376ed42c3fb85df9e72092ba794a85def7d0b7ceffa936f1e14cb748c89542333
7
- data.tar.gz: e4a20b44b49fa4122d51400a6c97de0d9584e059c904fbebbf259c50df8bf4440500004f925ecf28a75f880005d5a0bce0d79e200f3106f5f2228e1e817131dc
6
+ metadata.gz: 0c1b30e1a92c99972da9a4f1d1de4a01e8c6eb56839476dc4537d3300fa34815e9f5c157a82bfa5bfe20bd613753424724dc8d182213c6832e6c90f415c3e558
7
+ data.tar.gz: 493592639e7116fa50bf92d993ac412df07fefc7b25130f216db39651ae6d0ff16313726250949dd0be13046e4e1177deae675ce30592e02b0d515e2e4bc125e
@@ -3,6 +3,3 @@ Documentation:
3
3
 
4
4
  FileName:
5
5
  Enabled: false
6
-
7
- MethodLength:
8
- Max: 15
@@ -1,8 +1,8 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.0.0
4
- script: bundle exec rake
5
- before_install:
6
- - gem update --system
3
+ - 2.0
4
+ - 2.1
5
+ - 2.2
7
6
  services:
8
7
  - redis-server
8
+ sudo: false
data/Gemfile CHANGED
@@ -1,3 +1,3 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
data/README.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # lita-whois
2
2
 
3
+ [![Build Status](https://img.shields.io/travis/glebtv/lita-whois/master.svg)](https://travis-ci.org/glebtv/lita-whois)
4
+ [![MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://tldrlegal.com/license/mit-license)
5
+ [![RubyGems](http://img.shields.io/gem/v/lita-whois.svg)](https://rubygems.org/gems/lita-whois)
6
+ [![Coveralls Coverage](https://img.shields.io/coveralls/glebtv/lita-whois/master.svg)](https://coveralls.io/r/glebtv/lita-whois)
7
+ [![Code Climate](https://img.shields.io/codeclimate/github/glebtv/lita-whois.svg)](https://codeclimate.com/github/glebtv/lita-whois)
8
+ [![Gemnasium](https://img.shields.io/gemnasium/glebtv/lita-whois.svg)](https://gemnasium.com/glebtv/lita-whois)
9
+
3
10
  WHOIS handler for searching domain, TLD, IPv4, and IPv6 WHOIS records.
4
11
 
5
12
  ## Installation
data/Rakefile CHANGED
@@ -3,6 +3,6 @@ require 'rspec/core/rake_task'
3
3
  require 'rubocop/rake_task'
4
4
 
5
5
  RSpec::Core::RakeTask.new(:spec)
6
- Rubocop::RakeTask.new(:rubocop)
6
+ RuboCop::RakeTask.new(:rubocop)
7
7
 
8
- task default: [ :spec, :rubocop ]
8
+ task default: [:spec, :rubocop]
@@ -1,10 +1,14 @@
1
1
  require 'lita'
2
2
 
3
3
  Lita.load_locales Dir[File.expand_path(
4
- File.join('..', '..', 'locales', '*.yml'), __FILE__
4
+ File.join('..', '..', 'locales', '*.yml'), __FILE__
5
5
  )]
6
6
 
7
7
  require 'lita/handlers/whois'
8
8
 
9
- require 'ipaddress'
10
9
  require 'whois'
10
+
11
+ Lita::Handlers::Whois.template_root File.expand_path(
12
+ File.join('..', '..', 'templates'),
13
+ __FILE__
14
+ )
@@ -2,69 +2,28 @@ module Lita
2
2
  module Handlers
3
3
  class Whois < Handler
4
4
  route(
5
- /^whois\s(\w+).(\w+)$/,
6
- :whois_domain,
5
+ /^whois\s(?<input>.*)$/,
6
+ :whois,
7
7
  help: {
8
- 'whois example.com' => 'Get the WHOIS info for a domain'
8
+ t('help.syntax.domain') => t('help.desc.domain'),
9
+ t('help.syntax.tld') => t('help.desc.tld'),
10
+ t('help.syntax.ip') => t('help.desc.ip')
9
11
  }
10
12
  )
11
13
 
12
- route(
13
- /^whois\s.(\w+)$/,
14
- :whois_tld,
15
- help: {
16
- 'whois .io' => 'Get the WHOIS info for a TLD'
17
- }
18
- )
19
-
20
- route(
21
- /^whois\s(.+)$/,
22
- :whois_ip,
23
- help: {
24
- 'whois 8.8.8.8' => 'Get the WHOIS info for an IPv4 or IPv6 address'
25
- }
26
- )
27
-
28
- def whois_domain(response)
29
- response.reply(lookup("#{response.matches[0][0]}." \
30
- "#{response.matches[0][1]}"))
31
- end
32
-
33
- def whois_tld(response)
34
- response.reply(lookup(".#{response.matches[0][0]}"))
35
- end
36
-
37
- def whois_ip(response)
38
- if IPAddress.valid? response.matches[0][0]
39
- response.reply(reverse_lookup(response.matches[0][0]))
40
- end
14
+ def whois(response)
15
+ input = response.match_data['input']
16
+ response.reply(lookup(input))
41
17
  end
42
18
 
43
19
  private
44
20
 
45
- def lookup(domain)
21
+ def lookup(record)
46
22
  client = ::Whois::Client.new
47
- record = nil
48
- begin
49
- record = client.lookup(domain)
50
- rescue ::Whois::ServerNotFound
51
- return "Cannot find a WHOIS server for #{domain}"
52
- end
53
-
54
- record.to_s
55
- end
56
-
57
- def reverse_lookup(ip)
58
- client = ::Whois::Client.new
59
- record = nil
60
- begin
61
- record = client.lookup(ip)
62
- rescue ::Whois::AllocationUnknown, ::Whois::ServerNotFound,
63
- ::Whois::NoInterfaceError
64
- return "Cannot find a WHOIS server for #{ip}"
65
- end
66
-
67
- record.to_s
23
+ render_template('full', output: client.lookup(record).to_s)
24
+ rescue => e
25
+ log.warn e
26
+ render_template('simple', output: t('error', record: record))
68
27
  end
69
28
  end
70
29
 
@@ -1,27 +1,26 @@
1
1
  Gem::Specification.new do |spec|
2
- spec.name = "lita-whois"
3
- spec.version = "0.1.0"
4
- spec.authors = ["glebtv", "Eric Sigler"]
5
- spec.email = ["glebtv@gmail.com", "me@esigler.com"]
6
- spec.description = %q{WHOIS handler for lita chat bot}
7
- spec.summary = %q{WHOIS handler for lita chat bot}
8
- spec.homepage = "https://github.com/glebtv/lita-whois"
9
- spec.license = "MIT"
10
- spec.metadata = { "lita_plugin_type" => "handler" }
2
+ spec.name = 'lita-whois'
3
+ spec.version = '1.1.0'
4
+ spec.authors = ['glebtv', 'Eric Sigler']
5
+ spec.email = ['glebtv@gmail.com', 'me@esigler.com']
6
+ spec.description = 'WHOIS handler for lita chat bot'
7
+ spec.summary = spec.description
8
+ spec.homepage = 'https://github.com/glebtv/lita-whois'
9
+ spec.license = 'MIT'
10
+ spec.metadata = { 'lita_plugin_type' => 'handler' }
11
11
 
12
- spec.files = `git ls-files`.split($/)
12
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
13
13
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
14
14
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
15
- spec.require_paths = ["lib"]
15
+ spec.require_paths = ['lib']
16
16
 
17
- spec.add_runtime_dependency "lita", ">= 3.0"
18
- spec.add_runtime_dependency "whois"
19
- spec.add_runtime_dependency "ipaddress"
17
+ spec.add_runtime_dependency 'lita', '~> 4.2'
18
+ spec.add_runtime_dependency 'whois'
20
19
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "rspec", ">= 3.0.0.beta2"
24
- spec.add_development_dependency "simplecov"
25
- spec.add_development_dependency "coveralls"
26
- spec.add_development_dependency "rubocop"
20
+ spec.add_development_dependency 'bundler'
21
+ spec.add_development_dependency 'coveralls'
22
+ spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'rspec'
24
+ spec.add_development_dependency 'rubocop'
25
+ spec.add_development_dependency 'simplecov'
27
26
  end
@@ -2,3 +2,13 @@ en:
2
2
  lita:
3
3
  handlers:
4
4
  whois:
5
+ help:
6
+ syntax:
7
+ domain: whois example.com
8
+ tld: whois .io
9
+ ip: whois 8.8.8.8
10
+ desc:
11
+ domain: Get the WHOIS info for a domain
12
+ tld: Get the WHOIS info for a TLD
13
+ ip: Get the WHOIS info for an IPv4 or IPv6 address
14
+ error: "Error looking up WHOIS data for %{record}"
@@ -1,12 +1,12 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Lita::Handlers::Whois, lita_handler: true do
4
- it { routes_command('whois example.com').to(:whois_domain) }
5
- it { routes_command('whois .io').to(:whois_tld) }
6
- it { routes_command('whois 8.8.8.8').to(:whois_ip) }
7
- it { routes_command('whois 2001:418:141e:196::fc4').to(:whois_ip) }
4
+ it { is_expected.to route_command('whois example.com').to(:whois) }
5
+ it { is_expected.to route_command('whois .io').to(:whois) }
6
+ it { is_expected.to route_command('whois 8.8.8.8').to(:whois) }
7
+ it { is_expected.to route_command('whois 2001:418:141e:196::fc4').to(:whois) }
8
8
 
9
- describe '#whois_domain' do
9
+ describe '#whois' do
10
10
  let(:domain_good) do
11
11
  client = double
12
12
  expect(client).to receive(:lookup) { 'Generic response example.com' }
@@ -40,11 +40,9 @@ describe Lita::Handlers::Whois, lita_handler: true do
40
40
  it 'shows an error when the domain does not have a WHOIS' do
41
41
  expect(Whois::Client).to receive(:new) { domain_err }
42
42
  send_command('whois asdf.sdf')
43
- expect(replies.last).to eq('Cannot find a WHOIS server for asdf.sdf')
43
+ expect(replies.last).to eq('Error looking up WHOIS data for asdf.sdf')
44
44
  end
45
- end
46
45
 
47
- describe '#whois_tld' do
48
46
  let(:tld_good) do
49
47
  client = double
50
48
  expect(client).to receive(:lookup) { 'Generic TLD response .io' }
@@ -68,9 +66,7 @@ describe Lita::Handlers::Whois, lita_handler: true do
68
66
  send_command('whois .wtf')
69
67
  expect(replies.last).to eq('Invalid TLD response .wtf')
70
68
  end
71
- end
72
69
 
73
- describe '#whois_ipv4' do
74
70
  let(:ipv4_good) do
75
71
  client = double
76
72
  expect(client).to receive(:lookup) { 'Generic IPv4 response 8.8.8.8' }
@@ -104,7 +100,7 @@ describe Lita::Handlers::Whois, lita_handler: true do
104
100
  it 'shows an error when the IP is invalid' do
105
101
  expect(Whois::Client).to receive(:new) { ipv4_err }
106
102
  send_command('whois 0.0.0.0')
107
- expect(replies.last).to eq('Cannot find a WHOIS server for 0.0.0.0')
103
+ expect(replies.last).to eq('Error looking up WHOIS data for 0.0.0.0')
108
104
  end
109
105
 
110
106
  it 'shows results for the IPv6 address' do
@@ -116,7 +112,7 @@ describe Lita::Handlers::Whois, lita_handler: true do
116
112
  it 'shows an error when the IP is invalid' do
117
113
  expect(Whois::Client).to receive(:new) { ipv6_err }
118
114
  send_command('whois ::')
119
- expect(replies.last).to eq('Cannot find a WHOIS server for ::')
115
+ expect(replies.last).to eq('Error looking up WHOIS data for ::')
120
116
  end
121
117
  end
122
118
  end
@@ -8,3 +8,24 @@ SimpleCov.start { add_filter '/spec/' }
8
8
 
9
9
  require 'lita-whois'
10
10
  require 'lita/rspec'
11
+
12
+ Lita.version_3_compatibility_mode = false
13
+
14
+ RSpec.configure do |config|
15
+ config.expect_with :rspec do |expectations|
16
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
17
+ end
18
+
19
+ config.mock_with :rspec do |mocks|
20
+ mocks.verify_partial_doubles = true
21
+ end
22
+
23
+ config.filter_run :focus
24
+ config.run_all_when_everything_filtered = true
25
+ config.default_formatter = 'doc' if config.files_to_run.one?
26
+ config.order = :random
27
+ config.color = true
28
+ config.profile_examples = 5
29
+
30
+ Kernel.srand config.seed
31
+ end
@@ -0,0 +1 @@
1
+ <%= @output %>
@@ -0,0 +1 @@
1
+ /quote <%= @output %>
@@ -0,0 +1 @@
1
+ ```<%= @output %>```
@@ -0,0 +1 @@
1
+ <%= @output %>
@@ -0,0 +1 @@
1
+ /code <%= @output %>
@@ -0,0 +1 @@
1
+ `<%= @output %>`
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lita-whois
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - glebtv
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-04-02 00:00:00.000000000 Z
12
+ date: 2015-12-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: lita
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.0'
20
+ version: '4.2'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '3.0'
27
+ version: '4.2'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: whois
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -40,13 +40,13 @@ dependencies:
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: ipaddress
43
+ name: bundler
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
- type: :runtime
49
+ type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
@@ -54,21 +54,7 @@ dependencies:
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
- name: bundler
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '1.3'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '1.3'
70
- - !ruby/object:Gem::Dependency
71
- name: rake
57
+ name: coveralls
72
58
  requirement: !ruby/object:Gem::Requirement
73
59
  requirements:
74
60
  - - ">="
@@ -82,21 +68,21 @@ dependencies:
82
68
  - !ruby/object:Gem::Version
83
69
  version: '0'
84
70
  - !ruby/object:Gem::Dependency
85
- name: rspec
71
+ name: rake
86
72
  requirement: !ruby/object:Gem::Requirement
87
73
  requirements:
88
74
  - - ">="
89
75
  - !ruby/object:Gem::Version
90
- version: 3.0.0.beta2
76
+ version: '0'
91
77
  type: :development
92
78
  prerelease: false
93
79
  version_requirements: !ruby/object:Gem::Requirement
94
80
  requirements:
95
81
  - - ">="
96
82
  - !ruby/object:Gem::Version
97
- version: 3.0.0.beta2
83
+ version: '0'
98
84
  - !ruby/object:Gem::Dependency
99
- name: simplecov
85
+ name: rspec
100
86
  requirement: !ruby/object:Gem::Requirement
101
87
  requirements:
102
88
  - - ">="
@@ -110,7 +96,7 @@ dependencies:
110
96
  - !ruby/object:Gem::Version
111
97
  version: '0'
112
98
  - !ruby/object:Gem::Dependency
113
- name: coveralls
99
+ name: rubocop
114
100
  requirement: !ruby/object:Gem::Requirement
115
101
  requirements:
116
102
  - - ">="
@@ -124,7 +110,7 @@ dependencies:
124
110
  - !ruby/object:Gem::Version
125
111
  version: '0'
126
112
  - !ruby/object:Gem::Dependency
127
- name: rubocop
113
+ name: simplecov
128
114
  requirement: !ruby/object:Gem::Requirement
129
115
  requirements:
130
116
  - - ">="
@@ -159,6 +145,12 @@ files:
159
145
  - locales/en.yml
160
146
  - spec/lita/handlers/whois_spec.rb
161
147
  - spec/spec_helper.rb
148
+ - templates/full.erb
149
+ - templates/full.hipchat.erb
150
+ - templates/full.slack.erb
151
+ - templates/simple.erb
152
+ - templates/simple.hipchat.erb
153
+ - templates/simple.slack.erb
162
154
  homepage: https://github.com/glebtv/lita-whois
163
155
  licenses:
164
156
  - MIT
@@ -180,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
172
  version: '0'
181
173
  requirements: []
182
174
  rubyforge_project:
183
- rubygems_version: 2.2.2
175
+ rubygems_version: 2.4.5.1
184
176
  signing_key:
185
177
  specification_version: 4
186
178
  summary: WHOIS handler for lita chat bot