lita-dig 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 49a68c5ef90d059f8330b32b210471a0fced8cd9
4
+ data.tar.gz: 5909f6811c41e5ce6497fe48d3dcd29145620d6f
5
+ SHA512:
6
+ metadata.gz: a552459801353610b19dcaa2fd70267b9ce49ff803b84bacb37dc15560caaaa4a7b969c7bb6056990bedd41dfb44abc45d1b7a868aa8bc0aeecd9b6e9f91e386
7
+ data.tar.gz: 2b491766d1b93dd543af735caefb4515486284dfe082dbf4e82a55198adb40a81ac879d80267491c400c8e88cdf580ad87220fa487d38ddd1bec26937c596d5a
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
@@ -0,0 +1,16 @@
1
+ ClassLength:
2
+ Max: 200
3
+
4
+ CyclomaticComplexity:
5
+ Max: 75
6
+
7
+ Documentation:
8
+ Exclude:
9
+ - lib/lita/handlers/dig.rb
10
+
11
+ FileName:
12
+ Exclude:
13
+ - lib/lita-dig.rb
14
+
15
+ MethodLength:
16
+ Max: 200
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ script: bundle exec rake
5
+ before_install:
6
+ - gem update --system
7
+ services:
8
+ - redis-server
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2014 Eric Sigler
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,39 @@
1
+ # lita-dig
2
+
3
+ [![Build Status](https://img.shields.io/travis/esigler/lita-dig/master.svg)](https://travis-ci.org/esigler/lita-dig)
4
+ [![MIT License](https://img.shields.io/badge/license-MIT-brightgreen.svg)](https://tldrlegal.com/license/mit-license)
5
+ [![RubyGems :: RMuh Gem Version](http://img.shields.io/gem/v/lita-dig.svg)](https://rubygems.org/gems/lita-dig)
6
+ [![Coveralls Coverage](https://img.shields.io/coveralls/esigler/lita-dig/master.svg)](https://coveralls.io/r/esigler/lita-dig)
7
+ [![Code Climate](https://img.shields.io/codeclimate/github/esigler/lita-dig.svg)](https://codeclimate.com/github/esigler/lita-dig)
8
+ [![Gemnasium](https://img.shields.io/gemnasium/esigler/lita-dig.svg)](https://gemnasium.com/esigler/lita-dig)
9
+
10
+ DNS record lookup [handler](https://github.com/jimmycuadra/lita).
11
+
12
+ ## Installation
13
+
14
+ Add lita-dig to your Lita instance's Gemfile:
15
+
16
+ ``` ruby
17
+ gem "lita-dig"
18
+ ```
19
+
20
+ ## Configuration
21
+
22
+ None
23
+
24
+ ## Usage
25
+
26
+ Examples:
27
+
28
+ ```
29
+ dig example.com - Lookup the A record for example.com using the default resolver
30
+ dig example.com MX - Lookup the MX record for example.com using the default resolver
31
+ dig @8.8.8.8 example.com - Lookup the A record for example.com using 8.8.8.8 as a resolver
32
+ dig @8.8.8.8 example.com NS - Lookup the NS record for example.com using 8.8.8.8 as a resolver
33
+ ```
34
+
35
+ The majority of DNS record types (including "any") are supported.
36
+
37
+ ## License
38
+
39
+ [MIT](http://opensource.org/licenses/MIT)
@@ -0,0 +1,8 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+ require 'rubocop/rake_task'
4
+
5
+ RSpec::Core::RakeTask.new(:spec)
6
+ Rubocop::RakeTask.new(:rubocop)
7
+
8
+ task default: [:spec, :rubocop]
@@ -0,0 +1,9 @@
1
+ require 'lita'
2
+
3
+ Lita.load_locales Dir[File.expand_path(
4
+ File.join('..', '..', 'locales', '*.yml'), __FILE__
5
+ )]
6
+
7
+ require 'net/dns'
8
+
9
+ require 'lita/handlers/dig'
@@ -0,0 +1,197 @@
1
+ module Lita
2
+ module Handlers
3
+ class Dig < Handler
4
+ route(
5
+ /^dig\s(\S+)$/,
6
+ :resolve,
7
+ command: true,
8
+ help: {
9
+ t('help.resolve.syntax') => t('help.resolve.desc')
10
+ }
11
+ )
12
+
13
+ route(
14
+ /^dig\s(?!\@)(\S+)\s(\S+)$/,
15
+ :resolve_type,
16
+ command: true,
17
+ help: {
18
+ t('help.resolve_type.syntax') => t('help.resolve_type.desc')
19
+ }
20
+ )
21
+
22
+ route(
23
+ /^dig\s\@(\S+)\s(\S+)$/,
24
+ :resolve_svr,
25
+ command: true,
26
+ help: {
27
+ t('help.resolve_svr.syntax') => t('help.resolve_svr.desc')
28
+ }
29
+ )
30
+
31
+ route(
32
+ /^dig\s\@(\S+)\s(\S+)\s(\S+)$/,
33
+ :resolve_svr_type,
34
+ command: true,
35
+ help: {
36
+ t('help.resolve_svr_type.syntax') => t('help.resolve_svr_type.desc')
37
+ }
38
+ )
39
+
40
+ def resolve(response)
41
+ name = response.matches[0][0]
42
+ response.reply(format_lookup(lookup(name, 'a')))
43
+ end
44
+
45
+ def resolve_type(response)
46
+ name = response.matches[0][0]
47
+ type = response.matches[0][1]
48
+ response.reply(format_lookup(lookup(name, type)))
49
+ end
50
+
51
+ def resolve_svr(response)
52
+ resolver = response.matches[0][0]
53
+ name = response.matches[0][1]
54
+ response.reply(format_lookup(lookup(name, 'a', resolver)))
55
+ end
56
+
57
+ def resolve_svr_type(response)
58
+ resolver = response.matches[0][0]
59
+ name = response.matches[0][1]
60
+ type = response.matches[0][2]
61
+ response.reply(format_lookup(lookup(name, type, resolver)))
62
+ end
63
+
64
+ private
65
+
66
+ def lookup(argument, type, server = nil)
67
+ case type
68
+ when 'a', 'A'
69
+ type = Net::DNS::A
70
+ when 'ns', 'NS'
71
+ type = Net::DNS::NS
72
+ when 'md', 'MD'
73
+ type = Net::DNS::MD
74
+ when 'cname', 'CNAME'
75
+ type = Net::DNS::CNAME
76
+ when 'soa', 'SOA'
77
+ type = Net::DNS::SOA
78
+ when 'mb', 'MB'
79
+ type = Net::DNS::MB
80
+ when 'mg', 'MG'
81
+ type = Net::DNS::MG
82
+ when 'mr', 'MR'
83
+ type = Net::DNS::MR
84
+ when 'null', 'NULL'
85
+ type = Net::DNS::NULL
86
+ when 'wks', 'WKS'
87
+ type = Net::DNS::WKS
88
+ when 'ptr', 'PTR'
89
+ type = Net::DNS::PTR
90
+ when 'hinfo', 'HINFO'
91
+ type = Net::DNS::HINFO
92
+ when 'minfo', 'MINFO'
93
+ type = Net::DNS::MINFO
94
+ when 'mx', 'MX'
95
+ type = Net::DNS::MX
96
+ when 'txt', 'TXT'
97
+ type = Net::DNS::TXT
98
+ when 'rp', 'RP'
99
+ type = Net::DNS::RP
100
+ when 'afsdb', 'AFSDB'
101
+ type = Net::DNS::AFSDB
102
+ when 'x25', 'X25'
103
+ type = Net::DNS::X25
104
+ when 'isdn', 'ISDN'
105
+ type = Net::DNS::ISDN
106
+ when 'rt', 'RT'
107
+ type = Net::DNS::RT
108
+ when 'nsap', 'NSAP'
109
+ type = Net::DNS::NSAP
110
+ when 'nsapptr', 'NSAPPTR'
111
+ type = Net::DNS::NSAPPTR
112
+ when 'sig', 'SIG'
113
+ type = Net::DNS::SIG
114
+ when 'key', 'KEY'
115
+ type = Net::DNS::KEY
116
+ when 'px', 'PX'
117
+ type = Net::DNS::PX
118
+ when 'gpos', 'GPOS'
119
+ type = Net::DNS::GPOS
120
+ when 'aaaa', 'AAAA'
121
+ type = Net::DNS::AAAA
122
+ when 'loc', 'LOC'
123
+ type = Net::DNS::LOC
124
+ when 'nxt', 'NXT'
125
+ type = Net::DNS::NXT
126
+ when 'eid', 'EID'
127
+ type = Net::DNS::EID
128
+ when 'nimloc', 'NIMLOC'
129
+ type = Net::DNS::NIMLOC
130
+ when 'srv', 'SRV'
131
+ type = Net::DNS::SRV
132
+ when 'atma', 'ATMA'
133
+ type = Net::DNS::ATMA
134
+ when 'naptr', 'NAPTR'
135
+ type = Net::DNS::NAPTR
136
+ when 'kx', 'KX'
137
+ type = Net::DNS::KX
138
+ when 'cert', 'CERT'
139
+ type = Net::DNS::CERT
140
+ when 'dname', 'DNAME'
141
+ type = Net::DNS::DNAME
142
+ when 'opt', 'OPT'
143
+ type = Net::DNS::OPT
144
+ when 'ds', 'DS'
145
+ type = Net::DNS::DS
146
+ when 'sshfp', 'SSHFP'
147
+ type = Net::DNS::SSHFP
148
+ when 'rrsig', 'RRSIG'
149
+ type = Net::DNS::RRSIG
150
+ when 'nsec', 'NSEC'
151
+ type = Net::DNS::NSEC
152
+ when 'dnskey', 'DNSKEY'
153
+ type = Net::DNS::DNSKEY
154
+ when 'uinfo', 'UINFO'
155
+ type = Net::DNS::UINFO
156
+ when 'uid', 'UID'
157
+ type = Net::DNS::UID
158
+ when 'gid', 'GID'
159
+ type = Net::DNS::GID
160
+ when 'unspec', 'UNSPEC'
161
+ type = Net::DNS::UNSPEC
162
+ when 'tkey', 'TKEY'
163
+ type = Net::DNS::TKEY
164
+ when 'tsig', 'TSIG'
165
+ type = Net::DNS::TSIG
166
+ when 'ixfr', 'IXFR'
167
+ type = Net::DNS::IXFR
168
+ when 'axfr', 'AXFR'
169
+ type = Net::DNS::AXFR
170
+ when 'mailb', 'MAILB'
171
+ type = Net::DNS::MAILB
172
+ when 'maila', 'MAILA'
173
+ type = Net::DNS::MAILA
174
+ when 'any', 'ANY'
175
+ type = Net::DNS::ANY
176
+ else
177
+ return t('error.unknown_type')
178
+ end
179
+
180
+ resolver = Net::DNS::Resolver.new
181
+ resolver.nameservers = server unless server.nil?
182
+
183
+ begin
184
+ resolver.query(argument, type)
185
+ rescue
186
+ t('error.unable_to_resolve', argument: argument)
187
+ end
188
+ end
189
+
190
+ def format_lookup(lookup)
191
+ lookup.to_s
192
+ end
193
+ end
194
+
195
+ Lita.register_handler(Dig)
196
+ end
197
+ end
@@ -0,0 +1,26 @@
1
+ Gem::Specification.new do |spec|
2
+ spec.name = 'lita-dig'
3
+ spec.version = '0.5.0'
4
+ spec.authors = ['Eric Sigler']
5
+ spec.email = ['me@esigler.com']
6
+ spec.description = %q(A Lita handler for resolving DNS records)
7
+ spec.summary = %q(A Lita handler for resolving DNS records)
8
+ spec.homepage = 'https://github.com/esigler/lita-dig'
9
+ spec.license = 'MIT'
10
+ spec.metadata = { 'lita_plugin_type' => 'handler' }
11
+
12
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
13
+ spec.executables = spec.files.grep(/^bin\//) { |f| File.basename(f) }
14
+ spec.test_files = spec.files.grep(/^(test|spec|features)\//)
15
+ spec.require_paths = ['lib']
16
+
17
+ spec.add_runtime_dependency 'lita', '>= 3.1'
18
+ spec.add_runtime_dependency 'net-dns'
19
+
20
+ spec.add_development_dependency 'bundler', '~> 1.3'
21
+ spec.add_development_dependency 'rake'
22
+ spec.add_development_dependency 'rspec', '>= 3.0.0.beta2'
23
+ spec.add_development_dependency 'simplecov'
24
+ spec.add_development_dependency 'coveralls'
25
+ spec.add_development_dependency 'rubocop'
26
+ end
@@ -0,0 +1,21 @@
1
+ en:
2
+ lita:
3
+ handlers:
4
+ dig:
5
+ error:
6
+ not_implemented: Not implemented yet
7
+ unknown_type: Unknown record type
8
+ unable_to_resolve: "Unable to resolve %{argument}"
9
+ help:
10
+ resolve:
11
+ syntax: dig <name>
12
+ desc: Lookup the A record for <name> using the default resolver
13
+ resolve_type:
14
+ syntax: dig <name> <type>
15
+ desc: Lookup the <type> record for <name> using the default resolver
16
+ resolve_svr:
17
+ syntax: dig @<server> <name>
18
+ desc: Lookup the A record for <name> using <server> as a resolver
19
+ resolve_svr_type:
20
+ syntax: dig @<server> <record> <type>
21
+ desc: Lookup the <type> record for <name> using <server> as a resolver
@@ -0,0 +1,144 @@
1
+ require 'spec_helper'
2
+
3
+ describe Lita::Handlers::Dig, lita_handler: true do
4
+ let(:resolve) do
5
+ client = double
6
+ allow(client).to receive(:nameservers=) { '' }
7
+ expect(client).to receive(:query) { 'Generic A response example.com' }
8
+ client
9
+ end
10
+
11
+ let(:resolve_mx) do
12
+ client = double
13
+ allow(client).to receive(:nameservers=) { '' }
14
+ expect(client).to receive(:query) { 'Generic MX response example.com' }
15
+ client
16
+ end
17
+
18
+ let(:resolve_unknown) do
19
+ client = double
20
+ allow(client).to receive(:nameservers=) { '' }
21
+ expect(client).to receive(:query) { 'Unknown domain example.com' }
22
+ client
23
+ end
24
+
25
+ let(:resolve_noresponse) do
26
+ client = double
27
+ allow(client).to receive(:nameservers=) { '' }
28
+ expect(client).to receive(:query).and_throw(:NoResponseError)
29
+ client
30
+ end
31
+
32
+ it { routes_command('dig example.com').to(:resolve) }
33
+ it { routes_command('dig example.com MX').to(:resolve_type) }
34
+ it { routes_command('dig @8.8.8.8 example.com').to(:resolve_svr) }
35
+ it { routes_command('dig @8.8.8.8 example.com MX').to(:resolve_svr_type) }
36
+
37
+ describe '#resolve' do
38
+ it 'shows a record if the domain exists' do
39
+ expect(Net::DNS::Resolver).to receive(:new) { resolve }
40
+ send_command('dig example.com')
41
+ expect(replies.last).to eq('Generic A response example.com')
42
+ end
43
+
44
+ it 'shows a warning if the domain does not exist' do
45
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_unknown }
46
+ send_command('dig example.com')
47
+ expect(replies.last).to eq('Unknown domain example.com')
48
+ end
49
+
50
+ it 'shows an error if the request fails' do
51
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_noresponse }
52
+ send_command('dig example.com')
53
+ expect(replies.last).to eq('Unable to resolve example.com')
54
+ end
55
+ end
56
+
57
+ describe '#resolve_type' do
58
+ it 'resolves a uppercase record with a particular type' do
59
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_mx }
60
+ send_command('dig example.com MX')
61
+ expect(replies.last).to eq('Generic MX response example.com')
62
+ end
63
+
64
+ it 'resolves a lowercase record with a particular type' do
65
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_mx }
66
+ send_command('dig example.com mx')
67
+ expect(replies.last).to eq('Generic MX response example.com')
68
+ end
69
+
70
+ %w(a ns md cname soa mb mg mr null wks ptr hinfo minfo mx txt rp afsdb
71
+ x25 isdn rt nsap nsapptr sig key px gpos aaaa loc nxt eid nimloc srv
72
+ atma naptr kx cert dname opt ds sshfp rrsig nsec dnskey uinfo uid gid
73
+ unspec tkey tsig ixfr axfr mailb maila any).each do |type|
74
+ it 'resolves a record with a particular type' do
75
+ expect(Net::DNS::Resolver).to receive(:new) { resolve }
76
+ send_command("dig example.com #{type}")
77
+ expect(replies.last).to eq('Generic A response example.com')
78
+ end
79
+ end
80
+
81
+ it 'shows a warning if the domain does not exist' do
82
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_unknown }
83
+ send_command('dig example.com MX')
84
+ expect(replies.last).to eq('Unknown domain example.com')
85
+ end
86
+
87
+ it 'shows a warning if the type does not exist' do
88
+ send_command('dig example.com omg')
89
+ expect(replies.last).to eq('Unknown record type')
90
+ end
91
+
92
+ it 'shows an error if the request fails' do
93
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_noresponse }
94
+ send_command('dig example.com MX')
95
+ expect(replies.last).to eq('Unable to resolve example.com')
96
+ end
97
+ end
98
+
99
+ describe '#resolve_svr' do
100
+ it 'shows a record if the domain exists' do
101
+ expect(Net::DNS::Resolver).to receive(:new) { resolve }
102
+ send_command('dig @8.8.8.8 example.com')
103
+ expect(replies.last).to eq('Generic A response example.com')
104
+ end
105
+
106
+ it 'shows a warning if the domain does not exist' do
107
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_unknown }
108
+ send_command('dig @8.8.8.8 example.com')
109
+ expect(replies.last).to eq('Unknown domain example.com')
110
+ end
111
+
112
+ it 'shows an error if the request fails' do
113
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_noresponse }
114
+ send_command('dig @8.8.8.8 example.com')
115
+ expect(replies.last).to eq('Unable to resolve example.com')
116
+ end
117
+ end
118
+
119
+ describe '#resolve_type' do
120
+ it 'resolves a uppercase record with a particular type' do
121
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_mx }
122
+ send_command('dig @8.8.8.8 example.com MX')
123
+ expect(replies.last).to eq('Generic MX response example.com')
124
+ end
125
+
126
+ it 'resolves a lowercase record with a particular type' do
127
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_mx }
128
+ send_command('dig @8.8.8.8 example.com mx')
129
+ expect(replies.last).to eq('Generic MX response example.com')
130
+ end
131
+
132
+ it 'shows a warning if the domain does not exist' do
133
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_unknown }
134
+ send_command('dig @8.8.8.8 example.com MX')
135
+ expect(replies.last).to eq('Unknown domain example.com')
136
+ end
137
+
138
+ it 'shows an error if the request fails' do
139
+ expect(Net::DNS::Resolver).to receive(:new) { resolve_noresponse }
140
+ send_command('dig @8.8.8.8 example.com MX')
141
+ expect(replies.last).to eq('Unable to resolve example.com')
142
+ end
143
+ end
144
+ end
@@ -0,0 +1,10 @@
1
+ require 'simplecov'
2
+ require 'coveralls'
3
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
4
+ SimpleCov::Formatter::HTMLFormatter,
5
+ Coveralls::SimpleCov::Formatter
6
+ ]
7
+ SimpleCov.start { add_filter '/spec/' }
8
+
9
+ require 'lita-dig'
10
+ require 'lita/rspec'
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: lita-dig
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.0
5
+ platform: ruby
6
+ authors:
7
+ - Eric Sigler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-04 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: lita
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '3.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '3.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: net-dns
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'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 3.0.0.beta2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 3.0.0.beta2
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: coveralls
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rubocop
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: A Lita handler for resolving DNS records
126
+ email:
127
+ - me@esigler.com
128
+ executables: []
129
+ extensions: []
130
+ extra_rdoc_files: []
131
+ files:
132
+ - ".gitignore"
133
+ - ".rubocop.yml"
134
+ - ".travis.yml"
135
+ - Gemfile
136
+ - LICENSE
137
+ - README.md
138
+ - Rakefile
139
+ - lib/lita-dig.rb
140
+ - lib/lita/handlers/dig.rb
141
+ - lita-dig.gemspec
142
+ - locales/en.yml
143
+ - spec/lita/handlers/dig_spec.rb
144
+ - spec/spec_helper.rb
145
+ homepage: https://github.com/esigler/lita-dig
146
+ licenses:
147
+ - MIT
148
+ metadata:
149
+ lita_plugin_type: handler
150
+ post_install_message:
151
+ rdoc_options: []
152
+ require_paths:
153
+ - lib
154
+ required_ruby_version: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - ">="
157
+ - !ruby/object:Gem::Version
158
+ version: '0'
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: '0'
164
+ requirements: []
165
+ rubyforge_project:
166
+ rubygems_version: 2.2.1
167
+ signing_key:
168
+ specification_version: 4
169
+ summary: A Lita handler for resolving DNS records
170
+ test_files:
171
+ - spec/lita/handlers/dig_spec.rb
172
+ - spec/spec_helper.rb