cinch-hangouts 1.0.6 → 1.1.1

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 45fde4d2a553d57adc0da9c914d4523853acdbae
4
+ data.tar.gz: 4ff858cfa515f6f64465cf4cb524ae67c3a53125
5
+ SHA512:
6
+ metadata.gz: 8fe3adc17dfe6cd57258170d665a3b68c9944e3078f45c33d6184d51480e4c578f1b31bfaa84e6c416c6a3f1835d9addc3eeceaa4d77749f277fe2b7728e4fad
7
+ data.tar.gz: 02e10783b7f9486e16fb7b3498634eb30133f94108721d4dd5dae08ca3018255bc9851c62e8a53af2c82eabf2a0f5d5e56a67f62a6f11bd223022590b3fe03dd
@@ -1,4 +1,35 @@
1
1
  language: ruby
2
+ addons:
3
+ code_climate:
4
+ repo_token: 8ef6d81d6b07ed7d9e852307f2d6a28c2c4f49b8a27c9ee5951ae4e1381a8396
5
+ before_install:
6
+ - gem update --system
7
+ - gem update bundler
8
+ env:
9
+ global:
10
+ - "JRUBY_OPTS=-Xcext.enabled=true"
2
11
  rvm:
3
- - 1.9.2
12
+ - 2.3.0
13
+ - 2.2.0
14
+ - 2.1.0
15
+ - 2.0.0
4
16
  - 1.9.3
17
+ - 1.9.2
18
+ - 1.8.7
19
+ - jruby-18mode
20
+ - jruby-19mode
21
+ - ruby-head
22
+ - jruby-head
23
+ - ree
24
+ matrix:
25
+ allow_failures:
26
+ - rvm: 1.9.3
27
+ - rvm: 1.9.2
28
+ - rvm: 1.8.7
29
+ - rvm: 1.8.7
30
+ - rvm: ree
31
+ - rvm: jruby-18mode
32
+ - rvm: jruby-19mode
33
+ - rvm: jruby-head
34
+ - rvm: ruby-head
35
+ fast_finish: true
@@ -18,13 +18,14 @@ Gem::Specification.new do |gem|
18
18
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
19
19
  gem.require_paths = ['lib']
20
20
 
21
- gem.add_development_dependency 'rake'
22
- gem.add_development_dependency 'rspec'
23
- gem.add_development_dependency 'coveralls'
24
- gem.add_development_dependency 'cinch-test'
21
+ gem.add_development_dependency 'rake', '~> 10'
22
+ gem.add_development_dependency 'rspec', '~> 3'
23
+ gem.add_development_dependency 'cinch-test', '~> 0.1', '>= 0.1.1'
24
+ gem.add_development_dependency 'codeclimate-test-reporter', '~> 0.4'
25
25
 
26
- gem.add_dependency 'cinch', '~> 2.0.12'
27
- gem.add_dependency 'cinch-storage', '~> 1.1.0'
28
- gem.add_dependency 'cinch-toolbox', '~> 1.1.0'
29
- gem.add_dependency 'time-lord', '~> 1.0.1'
26
+ gem.add_dependency 'cinch', '~> 2.0'
27
+ gem.add_dependency 'cinch-cooldown', '~> 1.1.7'
28
+ gem.add_dependency 'cinch-storage', '~> 1.2'
29
+ gem.add_dependency 'cinch-toolbox', '~> 1.1'
30
+ gem.add_dependency 'time-lord', '~> 1.0', '>= 1.0.1'
30
31
  end
@@ -8,31 +8,30 @@ module Cinch::Plugins
8
8
  # Plugin to track Google Hangout links
9
9
  class Hangouts
10
10
  include Cinch::Plugin
11
- @@hangout_filename = ''
12
- @@subscription_filename = ''
11
+ HANGOUT_FILENAME = 'yaml/hangouts.yml'
12
+ SUBSCRIPTION_FILENAME = 'yaml/hangout_subscriptions.yml'
13
+
14
+ # This is the regex that captures hangout links
15
+ # The regex will need to be updated if the url scheme changes in the future
16
+ HANGOUTS_REGEX = %r((?:_|call)/([a-z0-9]{10,40})(?:\?|$))
13
17
 
14
18
  attr_accessor :storage
15
19
 
16
20
  self.help = 'Use .hangouts to see the info for any recent hangouts. You ' +
17
21
  'can also use .hangouts subscribe to sign up for notifications'
18
22
 
19
- match /hangouts\z/, method: :list_hangouts
20
- match /hangouts subscribe/, method: :subscribe
21
- match /hangouts unsubscribe/, method: :unsubscribe
23
+ match(/hangouts\z/, method: :list_hangouts)
24
+ match(/hangouts subscribe/, method: :subscribe)
25
+ match(/hangouts unsubscribe/, method: :unsubscribe)
22
26
 
23
27
  listen_to :channel
24
28
 
25
- # This is the regex that captures hangout links
26
- # The regex will need to be updated if the url scheme changes in the future
27
- HANGOUTS_REGEX = %r(plus\.google\.com/hangouts/_/([a-z0-9]{10,40})(\?|$))
28
-
29
29
  def initialize(*args)
30
30
  super
31
- @@subscription_filename = config[:subscription_filename] ||
32
- 'yaml/hangout_subscriptions.yml'
33
- @@hangout_filename = config[:hangout_filename] ||
34
- 'yaml/hangouts.yml'
35
-
31
+ @files = {
32
+ hangouts: config[:hangout_filename] || HANGOUT_FILENAME,
33
+ subscriptions: config[:subscription_filename] || SUBSCRIPTION_FILENAME
34
+ }
36
35
  @expire = config[:expire_period] || 120
37
36
  @response_type = config[:response_type] || :notice
38
37
  end
@@ -43,55 +42,62 @@ module Cinch::Plugins
43
42
  end
44
43
 
45
44
  def process_hangout(hangout_id, m)
46
- if Hangout.find_by_id(hangout_id)
45
+ if Hangout.find_by_id(hangout_id, @files)
47
46
  # If it's an old hangout capture a new expiration time
48
- hangout = Hangout.find_by_id(hangout_id)
47
+ hangout = Hangout.find_by_id(hangout_id, @files)
49
48
  hangout.time = Time.now
50
49
  hangout.save
50
+ debug "Old hangout with id:#{hangout_id} relinked."
51
51
  else
52
- Hangout.new(m.user.nick, hangout_id, Time.now)
53
- .save
54
- Subscription.notify(hangout_id, @bot, @response_type)
52
+ Hangout.new(m.user.nick, hangout_id, Time.now, @files).save
53
+ Subscription.notify(hangout_id, @bot, @response_type, @files)
54
+ debug "New hangout with id:#{hangout_id} created."
55
55
  end
56
56
  end
57
57
 
58
58
  def subscribe(m)
59
59
  nick = m.user.nick
60
- if Subscription.for_user(nick)
60
+ if Subscription.for_user(nick, @files)
61
61
  msg = 'You are already subscribed. '
62
+ debug "#{nick} subscription request failed: Already subscribed."
62
63
  else
63
- sub = Subscription.new(nick)
64
+ sub = Subscription.new(nick, @files)
64
65
  sub.save
65
- msg = 'You are now subscribed. ' +
66
- 'I will let you know when a hangout is linked. '
66
+ msg = 'You are now subscribed. I will let you know when a hangout ' \
67
+ ' is linked. '
68
+ debug "#{nick} subscription request succeeded."
67
69
  end
68
- m.user.notice msg + 'To unsubscribe use `.hangouts unsubscribe`.'
70
+ m.user.notice "#{msg} To unsubscribe use `.hangouts unsubscribe`."
69
71
  end
70
72
 
71
73
  def unsubscribe(m)
72
74
  nick = m.user.nick
73
- if Subscription.for_user(nick)
74
- Subscription.for_user(nick).delete
75
- msg = 'You are now unsubscribed, and will no ' +
76
- 'longer receive a messages. '
75
+ if Subscription.for_user(nick, @files)
76
+ debug Subscription.for_user(nick, @files).to_s
77
+ Subscription.for_user(nick, @files).destroy
78
+ msg = 'You are now unsubscribed, and will no longer receive a messages.'
79
+ debug "#{nick} unsubscription request succeeded."
77
80
  else
78
- msg = 'You are not subscribed. '
81
+ msg = 'You are not subscribed.'
82
+ debug "#{nick} unsubscription request failed: Not subscribed."
79
83
  end
80
- m.user.notice msg + 'To subscribe use `.hangouts subscribe`.'
84
+ m.user.notice "#{msg} To subscribe use `.hangouts subscribe`."
81
85
  end
82
86
 
83
87
  def list_hangouts(m)
84
- Hangout.delete_expired(@expire)
85
- if Hangout.sorted.empty?
88
+ Hangout.delete_expired(@expire, @files)
89
+ if Hangout.sorted(@files).empty?
86
90
  m.user.notice 'No hangouts have been linked recently!'
87
91
  return
88
92
  end
89
- m.user.notice 'These hangouts have been linked in the last ' +
93
+ m.user.notice 'These hangouts have been linked in the last ' \
90
94
  "#{@expire} minutes. They may or may not still be going."
91
- Hangout.sorted.each do |hangout|
92
- m.user.notice "#{hangout.nick} started a hangout at " +
93
- Hangout.url(hangout.id) +
94
- " it was last linked #{hangout.time.ago.to_words}"
95
+ hangouts = Hangout.sorted(@files)
96
+ debug "#{m.user.nick} hangouts listing request; Sending #{hangouts.count} hangouts to them."
97
+ hangouts.each do |hangout|
98
+ m.user.notice "#{hangout.nick} started a hangout at " \
99
+ "#{Hangout.url(hangout.id)} it was last linked " \
100
+ "#{hangout.time.ago.to_words}"
95
101
  end
96
102
  end
97
103
  end
@@ -3,40 +3,42 @@
3
3
  class Hangout < Cinch::Plugins::Hangouts
4
4
  attr_accessor :nick, :id, :time, :hangout_filename
5
5
 
6
- def initialize(nick, id, time)
6
+ def initialize(nick, id, time, files)
7
7
  @nick = nick
8
8
  @id = id
9
9
  @time = time
10
+ fail if files.nil? || !files.key?(:hangouts) || files[:hangouts].empty?
11
+ @filename = files[:hangouts]
10
12
  end
11
13
 
12
14
  def save
13
- storage = Cinch::Storage.new(@@hangout_filename)
15
+ storage = Cinch::Storage.new(@filename)
14
16
  storage.data[:hangouts] ||= {}
15
17
  storage.data[:hangouts][id] = self
16
18
  storage.save
17
19
  end
18
20
 
19
- def self.find_by_id(id)
20
- listing[id]
21
+ def self.find_by_id(id, files)
22
+ listing(files)[id]
21
23
  end
22
24
 
23
- def self.delete_expired(expire_time)
24
- return if listing.nil?
25
- storage = read_file
25
+ def self.delete_expired(expire_time, files)
26
+ return if listing(files).nil?
27
+ storage = read_file(files)
26
28
  storage.data[:hangouts].delete_if do |id, hangout|
27
29
  (Time.now - hangout.time) > (expire_time * 60)
28
30
  end
29
31
  storage.save
30
32
  end
31
33
 
32
- def self.sorted
33
- hangouts = listing.values
34
+ def self.sorted(files)
35
+ hangouts = listing(files).values
34
36
  hangouts.sort! { |x, y| y.time <=> x.time }
35
37
  hangouts
36
38
  end
37
39
 
38
- def self.listing
39
- read_file.data[:hangouts]
40
+ def self.listing(files)
41
+ read_file(files).data[:hangouts]
40
42
  end
41
43
 
42
44
  def self.url(id, shorten = true)
@@ -47,8 +49,9 @@ class Hangout < Cinch::Plugins::Hangouts
47
49
 
48
50
  private
49
51
 
50
- def self.read_file
51
- storage = Cinch::Storage.new(@@hangout_filename)
52
+ def self.read_file(files)
53
+ fail "No Hangout filename passed" unless files.key?(:hangouts)
54
+ storage = Cinch::Storage.new(files[:hangouts])
52
55
  unless storage.data[:hangouts]
53
56
  storage.data[:hangouts] = {}
54
57
  storage.save
@@ -3,36 +3,38 @@
3
3
  class Subscription < Cinch::Plugins::Hangouts
4
4
  attr_accessor :nick, :all_links
5
5
 
6
- def initialize(nick)
6
+ def initialize(nick, files)
7
7
  @nick = nick
8
8
  @all_links = false
9
+ @files = files
9
10
  save
10
11
  end
11
12
 
12
13
  def save
13
- subs = Subscription.storage
14
- subs.data[nick] = self
14
+ subs = Subscription.storage(@files)
15
+ subs.data[@nick] = self
15
16
  subs.save
16
17
  end
17
18
 
18
- def delete
19
- subs = Subscription.storage
20
- subs.data.delete(nick)
19
+ def destroy
20
+ subs = Subscription.storage(@files)
21
+ subs.data.delete(@nick)
21
22
  subs.save
22
23
  end
23
24
 
24
- def self.for_user(nick)
25
- return nil unless list.key?(nick)
26
- list[nick]
25
+ def self.for_user(nick, files)
26
+ nicks = list(files)
27
+ return nil unless nicks.key?(nick)
28
+ Subscription.new(nick[nick], files)
27
29
  end
28
30
 
29
- def self.list
30
- storage.data
31
+ def self.list(files)
32
+ storage(files).data
31
33
  end
32
34
 
33
- def self.notify(hangout_id, bot, type)
34
- nick = Hangout.find_by_id(hangout_id).nick
35
- list.each_value do |s|
35
+ def self.notify(hangout_id, bot, type, files)
36
+ nick = Hangout.find_by_id(hangout_id, files).nick
37
+ list(files).each_value do |s|
36
38
  # Don't link the person who linked it.
37
39
  unless nick == s.nick
38
40
  user = Cinch::User.new(s.nick, bot)
@@ -54,7 +56,8 @@ class Subscription < Cinch::Plugins::Hangouts
54
56
 
55
57
  private
56
58
 
57
- def self.storage
58
- Cinch::Storage.new(@@subscription_filename)
59
+ def self.storage(files)
60
+ fail "No Subscription filename passed" unless files.key?(:subscriptions)
61
+ Cinch::Storage.new(files[:subscriptions])
59
62
  end
60
63
  end
@@ -3,7 +3,7 @@ module Cinch
3
3
  module Plugins
4
4
  # Versioning Info
5
5
  class Hangouts
6
- VERSION = '1.0.6'
6
+ VERSION = '1.1.1'
7
7
  end
8
8
  end
9
9
  end
@@ -4,113 +4,106 @@ describe Cinch::Plugins::Hangouts do
4
4
  include Cinch::Test
5
5
 
6
6
  before(:each) do
7
- files = { hangout_filename: '/tmp/hangout.yml',
8
- subscription_filename: '/tmp/subscription.yml' }
9
- files.values.each do |file|
10
- File.delete(file) if File.exist?(file)
11
- end
12
- @bot = make_bot(Cinch::Plugins::Hangouts, files)
7
+ @files = { hangout_filename: '/tmp/hangout.yml',
8
+ subscription_filename: '/tmp/subscription.yml' }
9
+ @files.values.each { |file| File.delete(file) if File.exist?(file) }
10
+ @bot = make_bot(Cinch::Plugins::Hangouts, @files)
13
11
  end
14
12
 
15
- describe 'handling hangout links' do
16
- it 'should return an error if no one has linked a hangout' do
17
- get_replies(make_message(@bot, '!hangouts', { channel: '#foo' })).first.text.
18
- should == "No hangouts have been linked recently!"
19
- end
20
-
21
- it 'should not capture a malformed (invalid chars) Hangout link' do
22
- msg = make_message(@bot, Hangout.url('82b5cc7f76b7a%19c180416c2f509027!!d8856d', false),
23
- { :channel => '#foo' })
24
- get_replies(msg).should be_empty
25
- msg = make_message(@bot, '!hangouts')
26
- get_replies(msg).first.text.
27
- should == "No hangouts have been linked recently!"
28
- end
29
-
30
- it 'should not capture a malformed (wrong length) Hangout link' do
31
- msg = make_message(@bot, Hangout.url('82b5cc', false),
32
- { :channel => '#foo' })
33
- get_replies(msg).should be_empty
34
- msg = make_message(@bot, '!hangouts')
35
- get_replies(msg).first.text.
36
- should == "No hangouts have been linked recently!"
13
+ describe 'requesting hangout links (!hangouts)' do
14
+ it 'return an error if no one has linked a hangout' do
15
+ msg = get_replies(make_message(@bot, '!hangouts', { channel: '#foo' })).first
16
+ expect(msg.text).to eql('No hangouts have been linked recently!')
37
17
  end
18
+ end
38
19
 
39
- it 'should capture a legit Hangout link and store it in @storage' do
40
- msg = make_message(@bot, Hangout.url(random_hangout_id, false), { :channel => '#foo' })
41
- get_replies(msg).should be_empty
42
- sleep 1 # hack until 'time-lord' fix gets released
43
- msg = make_message(@bot, '!hangouts')
44
- reply = get_replies(msg).last.text
45
- reply.should include "test started a hangout at"
46
- reply.should match(/it was last linked \d seconds? ago/)
20
+ describe 'posting a valid hangout link' do
21
+ it 'captures the the link and stores it in @storage' do
22
+ msg = make_message(@bot, Hangout.url(random_hangout_id, false), { channel: '#foo' })
23
+ sleep 2
24
+ get_replies(msg)
25
+ reply = get_replies(make_message(@bot, '!hangouts')).last.text
26
+ expect(reply).to include('test started a hangout at')
27
+ expect(reply).to match(/it was last linked \d seconds? ago/)
47
28
  end
48
29
 
49
- it 'should capture a legit Hangout link if it has trailing params' do
30
+ it 'captures even if it has trailing params' do
50
31
  msg = make_message(@bot, Hangout.url(random_hangout_id + '?hl=en', false),
51
- { :channel => '#foo' })
32
+ { channel: '#foo' })
52
33
  get_replies(msg)
53
- sleep 1 # hack until 'time-lord' fix gets released
34
+ sleep 2 # hack until 'time-lord' fix gets released
54
35
  msg = make_message(@bot, '!hangouts')
55
36
  reply = get_replies(msg).last.text
56
- reply.should include "test started a hangout at"
57
- reply.should match(/it was last linked \d seconds? ago/)
37
+ expect(reply).to include('test started a hangout at')
38
+ expect(reply).to match(/it was last linked \d seconds? ago/)
58
39
  end
59
40
 
60
- it 'should recapture a legit Hangout link' do
41
+ it 'recaptures a link' do
61
42
  id = random_hangout_id
62
43
  msg = make_message(@bot, Hangout.url(id, false), { channel: '#foo' })
63
44
  get_replies(msg)
64
- sleep 1 # hack until 'time-lord' fix gets released
45
+ sleep 2 # hack until 'time-lord' fix gets released
65
46
  get_replies(msg)
66
- sleep 1 # hack until 'time-lord' fix gets released
47
+ sleep 2 # hack until 'time-lord' fix gets released
67
48
  msg = make_message(@bot, '!hangouts')
68
- reply = get_replies(msg).length
69
- .should == 2
49
+ expect(get_replies(msg).length).to eq(2)
70
50
  end
71
51
 
72
- it 'should capture a new short Hangout link and store it in @storage' do
73
- msg = make_message(@bot, Hangout.url('7acpjrpcmgl00u0b665mu25b1g', false), { :channel => '#foo' })
74
- get_replies(msg).should be_empty
75
- sleep 1 # hack until 'time-lord' fix gets released
52
+ it 'capture a new short Hangout link and store it in @storage' do
53
+ msg = make_message(@bot, Hangout.url('7acpjrpcmgl00u0b665mu25b1g', false), { channel: '#foo' })
54
+ expect(get_replies(msg)).to be_empty
55
+ sleep 2 # hack until 'time-lord' fix gets released
76
56
  msg = make_message(@bot, '!hangouts')
77
57
  reply = get_replies(msg).last.text
78
- reply.should include "test started a hangout at"
79
- reply.should match(/it was last linked \d seconds? ago/)
58
+ expect(reply).to include('test started a hangout at')
59
+ expect(reply).to match(/it was last linked \d seconds? ago/)
60
+ end
61
+ end
62
+
63
+ describe 'posting an invalid hangout link does not log' do
64
+ it 'when it is malformed (invalid chars)' do
65
+ msg = make_message(@bot, Hangout.url('82b5cc7f76b7a%19c180416c2f509027!!d8856d',
66
+ false), { channel: '#foo' })
67
+ expect(get_replies(msg)).to be_empty
68
+ msg = make_message(@bot, '!hangouts')
69
+ message = get_replies(msg).first.text
70
+ expect(message).to eq('No hangouts have been linked recently!')
71
+ end
72
+
73
+ it 'when it is malformed (wrong length)' do
74
+ msg = make_message(@bot, Hangout.url('82b5cc', false), { channel: '#foo' })
75
+ expect(get_replies(msg)).to be_empty
76
+ msg = make_message(@bot, '!hangouts')
77
+ expect(get_replies(msg).first.text).to eq('No hangouts have been linked recently!')
80
78
  end
81
79
  end
82
80
 
83
81
  describe 'subscriptions' do
84
82
  it 'should allow users to subscribe' do
85
- msg = make_message(@bot, '!hangouts subscribe')
86
- get_replies(msg).first.text.
87
- should include("You are now subscribed")
83
+ msg = get_replies(make_message(@bot, '!hangouts subscribe'))
84
+ expect(msg.first.text).to include('You are now subscribed')
88
85
  end
89
86
 
90
87
  it 'should allow users to subscribe' do
91
88
  get_replies(make_message(@bot, '!hangouts subscribe'))
92
- Cinch::Plugins::Hangouts::Subscription.list.length
93
- .should == 1
89
+ expect(Cinch::Plugins::Hangouts::Subscription.list({ subscriptions: @files[:subscription_filename] }).length).to eq(1)
94
90
  end
95
91
 
96
92
  it 'should inform users that they already subscribed' do
97
93
  get_replies(make_message(@bot, '!hangouts subscribe'))
98
94
  msg = make_message(@bot, '!hangouts subscribe')
99
- get_replies(msg).first.text.
100
- should include("You are already subscribed")
95
+ expect(get_replies(msg).first.text).to include('You are already subscribed')
101
96
  end
102
97
 
103
98
  it 'should allow users to unsubscribe' do
104
99
  get_replies(make_message(@bot, '!hangouts subscribe'))
105
100
  get_replies(make_message(@bot, '!hangouts unsubscribe'))
106
- Cinch::Plugins::Hangouts::Subscription.list.length
107
- .should == 0
101
+ expect(Cinch::Plugins::Hangouts::Subscription.list({ subscriptions: @files[:subscription_filename] }).length).to eq(0)
108
102
  end
109
103
 
110
104
  it 'should inform users that they are not subscribed on an unsubscribe' do
111
105
  msg = make_message(@bot, '!hangouts unsubscribe')
112
- get_replies(msg).first.text.
113
- should include("You are not subscribed.")
106
+ expect(get_replies(msg).first.text).to include('You are not subscribed.')
114
107
  end
115
108
 
116
109
  #it 'should notify users when a new hangout is linked' do
@@ -120,18 +113,19 @@ describe Cinch::Plugins::Hangouts do
120
113
  #end
121
114
 
122
115
  it 'should not notify users when an old hangout is relinked' do
123
- get_replies(make_message(@bot, '!hangouts subscribe'), { :channel => '#foo' } )
124
- get_replies(make_message(@bot, Hangout.url(random_hangout_id, false), { :channel => '#foo' }))
125
- msg = make_message(@bot, Hangout.url(random_hangout_id, false), { :channel => '#foo' })
126
- get_replies(msg).
127
- should be_empty
116
+ get_replies(make_message(@bot, '!hangouts subscribe'), { channel: '#foo' } )
117
+ get_replies(make_message(@bot, Hangout.url(random_hangout_id, false), { channel: '#foo' }))
118
+ msg = make_message(@bot, Hangout.url(random_hangout_id, false), { channel: '#foo' })
119
+ expect(get_replies(msg)).to be_empty
128
120
  end
121
+
122
+
129
123
  end
130
124
 
131
- def random_hangout_id(len = 40)
132
- chars = %w{ a b c d e f 0 1 2 3 4 5 6 7 8 9 }
125
+ def random_hangout_id(len = 27)
126
+ chars = ('a'..'z').to_a + ('0'..'9').to_a
133
127
  string = ''
134
- len.times { string << chars[rand(chars.length)] }
128
+ len.times { string << chars[rand(chars.length)] }
135
129
  string
136
130
  end
137
131
  end
@@ -1,11 +1,5 @@
1
- require 'coveralls'
2
- require 'simplecov'
3
-
4
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
5
- SimpleCov::Formatter::HTMLFormatter,
6
- Coveralls::SimpleCov::Formatter
7
- ]
8
- SimpleCov.start
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
9
3
 
10
4
  require 'cinch-hangouts'
11
5
  require 'cinch/test'
metadata CHANGED
@@ -1,142 +1,151 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinch-hangouts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
5
- prerelease:
4
+ version: 1.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Brian Haberer
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-02-22 00:00:00.000000000 Z
11
+ date: 2016-05-03 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rake
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: '0'
19
+ version: '10'
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: '0'
26
+ version: '10'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - "~>"
36
32
  - !ruby/object:Gem::Version
37
- version: '0'
33
+ version: '3'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - "~>"
44
39
  - !ruby/object:Gem::Version
45
- version: '0'
40
+ version: '3'
46
41
  - !ruby/object:Gem::Dependency
47
- name: coveralls
42
+ name: cinch-test
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.1'
48
+ - - ">="
52
49
  - !ruby/object:Gem::Version
53
- version: '0'
50
+ version: 0.1.1
54
51
  type: :development
55
52
  prerelease: false
56
53
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
54
  requirements:
59
- - - ! '>='
55
+ - - "~>"
60
56
  - !ruby/object:Gem::Version
61
- version: '0'
57
+ version: '0.1'
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 0.1.1
62
61
  - !ruby/object:Gem::Dependency
63
- name: cinch-test
62
+ name: codeclimate-test-reporter
64
63
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
64
  requirements:
67
- - - ! '>='
65
+ - - "~>"
68
66
  - !ruby/object:Gem::Version
69
- version: '0'
67
+ version: '0.4'
70
68
  type: :development
71
69
  prerelease: false
72
70
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
71
  requirements:
75
- - - ! '>='
72
+ - - "~>"
76
73
  - !ruby/object:Gem::Version
77
- version: '0'
74
+ version: '0.4'
78
75
  - !ruby/object:Gem::Dependency
79
76
  name: cinch
80
77
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
78
  requirements:
83
- - - ~>
79
+ - - "~>"
84
80
  - !ruby/object:Gem::Version
85
- version: 2.0.12
81
+ version: '2.0'
86
82
  type: :runtime
87
83
  prerelease: false
88
84
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
85
  requirements:
91
- - - ~>
86
+ - - "~>"
92
87
  - !ruby/object:Gem::Version
93
- version: 2.0.12
88
+ version: '2.0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: cinch-cooldown
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: 1.1.7
96
+ type: :runtime
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: 1.1.7
94
103
  - !ruby/object:Gem::Dependency
95
104
  name: cinch-storage
96
105
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
106
  requirements:
99
- - - ~>
107
+ - - "~>"
100
108
  - !ruby/object:Gem::Version
101
- version: 1.1.0
109
+ version: '1.2'
102
110
  type: :runtime
103
111
  prerelease: false
104
112
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
113
  requirements:
107
- - - ~>
114
+ - - "~>"
108
115
  - !ruby/object:Gem::Version
109
- version: 1.1.0
116
+ version: '1.2'
110
117
  - !ruby/object:Gem::Dependency
111
118
  name: cinch-toolbox
112
119
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
120
  requirements:
115
- - - ~>
121
+ - - "~>"
116
122
  - !ruby/object:Gem::Version
117
- version: 1.1.0
123
+ version: '1.1'
118
124
  type: :runtime
119
125
  prerelease: false
120
126
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
127
  requirements:
123
- - - ~>
128
+ - - "~>"
124
129
  - !ruby/object:Gem::Version
125
- version: 1.1.0
130
+ version: '1.1'
126
131
  - !ruby/object:Gem::Dependency
127
132
  name: time-lord
128
133
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
134
  requirements:
131
- - - ~>
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: '1.0'
138
+ - - ">="
132
139
  - !ruby/object:Gem::Version
133
140
  version: 1.0.1
134
141
  type: :runtime
135
142
  prerelease: false
136
143
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
144
  requirements:
139
- - - ~>
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '1.0'
148
+ - - ">="
140
149
  - !ruby/object:Gem::Version
141
150
  version: 1.0.1
142
151
  description: Cinch Plugin to track any Google Hangouts that are linked into the channel
@@ -146,8 +155,8 @@ executables: []
146
155
  extensions: []
147
156
  extra_rdoc_files: []
148
157
  files:
149
- - .gitignore
150
- - .travis.yml
158
+ - ".gitignore"
159
+ - ".travis.yml"
151
160
  - Gemfile
152
161
  - LICENSE.txt
153
162
  - README.md
@@ -163,29 +172,27 @@ files:
163
172
  homepage: https://github.com/bhaberer/cinch-hangouts
164
173
  licenses:
165
174
  - MIT
175
+ metadata: {}
166
176
  post_install_message:
167
177
  rdoc_options: []
168
178
  require_paths:
169
179
  - lib
170
180
  required_ruby_version: !ruby/object:Gem::Requirement
171
- none: false
172
181
  requirements:
173
- - - ! '>='
182
+ - - ">="
174
183
  - !ruby/object:Gem::Version
175
184
  version: '0'
176
185
  required_rubygems_version: !ruby/object:Gem::Requirement
177
- none: false
178
186
  requirements:
179
- - - ! '>='
187
+ - - ">="
180
188
  - !ruby/object:Gem::Version
181
189
  version: '0'
182
190
  requirements: []
183
191
  rubyforge_project:
184
- rubygems_version: 1.8.25
192
+ rubygems_version: 2.4.8
185
193
  signing_key:
186
- specification_version: 3
194
+ specification_version: 4
187
195
  summary: Cinch Plugin for racking Google Hangouts
188
196
  test_files:
189
197
  - spec/cinch-hangouts_spec.rb
190
198
  - spec/spec_helper.rb
191
- has_rdoc: