cinch-hangouts 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'cinch/plugins/hangouts'
2
3
  require 'cinch/plugins/hangouts/version'
3
4
  require 'cinch/plugins/hangouts/hangout'
@@ -5,6 +5,7 @@ require 'cinch/toolbox'
5
5
  require 'time-lord'
6
6
 
7
7
  module Cinch::Plugins
8
+ # Plugin to track Google Hangout links
8
9
  class Hangouts
9
10
  include Cinch::Plugin
10
11
  @@hangout_filename = ''
@@ -12,7 +13,8 @@ module Cinch::Plugins
12
13
 
13
14
  attr_accessor :storage
14
15
 
15
- self.help = "Use .hangouts to see the info for any recent hangouts. You can also use .hangouts subscribe to sign up for notifications."
16
+ self.help = 'Use .hangouts to see the info for any recent hangouts. You ' +
17
+ 'can also use .hangouts subscribe to sign up for notifications'
16
18
 
17
19
  match /hangouts\z/, method: :list_hangouts
18
20
  match /hangouts subscribe/, method: :subscribe
@@ -20,72 +22,74 @@ module Cinch::Plugins
20
22
 
21
23
  listen_to :channel
22
24
 
23
- # This is the regex that captures hangout links in the following format:
24
- # https://plus.google.com/hangouts/_/fbae432b70a47bdf7786e53a16f364895c09d9f8
25
- #
26
- # The regex will need to be updated if the url scheme changes in the future.
27
- HANGOUTS_REGEX = /plus\.google\.com\/hangouts\/_\/([a-z0-9]{10,40})(\?|$)/
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
28
 
29
29
  def initialize(*args)
30
30
  super
31
- @@hangout_filename = config[:hangout_filename] || 'yaml/hangouts.yml'
32
- @@subscription_filename = config[:subscription_filename] || 'yaml/hangout_subscriptions.yml'
31
+ @@subscription_filename = config[:subscription_filename] ||
32
+ 'yaml/hangout_subscriptions.yml'
33
+ @@hangout_filename = config[:hangout_filename] ||
34
+ 'yaml/hangouts.yml'
33
35
 
34
- @expire_period = config[:expire_period] || 120
35
- @response_type = config[:response_type] || :notice
36
+ @expire = config[:expire_period] || 120
37
+ @response_type = config[:response_type] || :notice
36
38
  end
37
39
 
38
40
  def listen(m)
39
- if hangout_id = m.message[HANGOUTS_REGEX, 1]
40
- debug "#{hangout_id}"
41
- if hangout = Hangout.find_by_id(hangout_id)
42
- # If it's an old hangout capture a new expiration time
43
- hangout.time = Time.now
44
- hangout.save
45
- else
46
- hangout = Hangout.new(m.user.nick, hangout_id, Time.now)
47
- hangout.save
48
- Subscription.notify(hangout_id, @bot)
49
- end
41
+ hangout_id = m.message[HANGOUTS_REGEX, 1]
42
+ process_hangout(hangout_id, m) if hangout_id
43
+ end
44
+
45
+ def process_hangout(hangout_id, m)
46
+ if Hangout.find_by_id(hangout_id)
47
+ # If it's an old hangout capture a new expiration time
48
+ hangout.time = Time.now
49
+ hangout.save
50
+ else
51
+ hangout = Hangout.new(m.user.nick, hangout_id, Time.now)
52
+ hangout.save
53
+ Subscription.notify(hangout_id, @bot)
50
54
  end
51
55
  end
52
56
 
53
57
  def subscribe(m)
54
58
  nick = m.user.nick
55
59
  if Subscription.for_user(nick)
56
- msg = "You are already subscribed. "
60
+ msg = 'You are already subscribed. '
57
61
  else
58
62
  sub = Subscription.new(nick)
59
63
  sub.save
60
- msg = "You are now subscribed. I will let you know when a hangout is linked. "
64
+ msg = 'You are now subscribed.' +
65
+ 'I will let you know when a hangout is linked. '
61
66
  end
62
- m.user.notice msg + "To unsubscribe use `.hangouts unsubscribe`."
67
+ m.user.notice msg + 'To unsubscribe use `.hangouts unsubscribe`.'
63
68
  end
64
69
 
65
70
  def unsubscribe(m)
66
71
  nick = m.user.nick
67
72
  if Subscription.for_user(nick)
68
73
  Subscription.for_user(nick).delete
69
- msg = "You are now unsubscribed, and will no longer receive a messages. "
74
+ msg = 'You are now unsubscribed, and will no ' +
75
+ 'longer receive a messages. '
70
76
  else
71
- msg = "You are not subscribed. "
77
+ msg = 'You are not subscribed. '
72
78
  end
73
- m.user.notice msg + "To subscribe use `.hangouts subscribe`."
79
+ m.user.notice msg + 'To subscribe use `.hangouts subscribe`.'
74
80
  end
75
81
 
76
82
  def list_hangouts(m)
77
- Hangout.delete_expired(@expire_period)
83
+ Hangout.delete_expired(@expire)
78
84
  hangouts = Hangout.sorted
85
+ m.user.notice 'No hangouts have been linked recently!' if hangouts.empty?
79
86
 
80
- if hangouts.empty?
81
- m.user.notice "No hangouts have been linked recently!"
82
- else
83
- m.user.notice "These hangouts have been linked in the last #{@expire_period} minutes. " +
84
- "They may or may not still be going."
85
- hangouts.each do |hangout|
86
- m.user.notice "#{hangout.nick} started a hangout at #{Hangout.url(hangout.id)} " +
87
- "it was last linked #{hangout.time.ago.to_words}"
88
- end
87
+ m.user.notice 'These hangouts have been linked in the last ' +
88
+ "#{@expire} minutes. They may or may not still be going."
89
+ hangouts.each do |hangout|
90
+ m.user.notice "#{hangout.nick} started a hangout at " +
91
+ Hangout.url(hangout.id) +
92
+ " it was last linked #{hangout.time.ago.to_words}"
89
93
  end
90
94
  end
91
95
 
@@ -1,5 +1,7 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # Class to manage Hangout information
1
3
  class Hangout < Cinch::Plugins::Hangouts
2
- attr_accessor :nick, :id, :time
4
+ attr_accessor :nick, :id, :time, :hangout_filename
3
5
 
4
6
  def initialize(nick, id, time)
5
7
  @nick = nick
@@ -9,8 +11,8 @@ class Hangout < Cinch::Plugins::Hangouts
9
11
 
10
12
  def save
11
13
  storage = CinchStorage.new(@@hangout_filename)
12
- storage.data[:hangouts] ||= Hash.new
13
- storage.data[:hangouts][self.id] = self
14
+ storage.data[:hangouts] ||= {}
15
+ storage.data[:hangouts][id] = self
14
16
  storage.save
15
17
  end
16
18
 
@@ -33,8 +35,8 @@ class Hangout < Cinch::Plugins::Hangouts
33
35
 
34
36
  def self.sorted
35
37
  hangouts = listing.values
36
- hangouts.sort! { |x,y| y.time <=> x.time }
37
- return hangouts
38
+ hangouts.sort! { |x, y| y.time <=> x.time }
39
+ hangouts
38
40
  end
39
41
 
40
42
  def self.listing
@@ -52,7 +54,7 @@ class Hangout < Cinch::Plugins::Hangouts
52
54
  def self.read_file
53
55
  storage = CinchStorage.new(@@hangout_filename)
54
56
  unless storage.data[:hangouts]
55
- storage.data[:hangouts] = Hash.new
57
+ storage.data[:hangouts] = {}
56
58
  storage.save
57
59
  end
58
60
  storage
@@ -1,8 +1,10 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # Class to handle user subscriptions
1
3
  class Subscription < Cinch::Plugins::Hangouts
2
4
  attr_accessor :nick, :all_links
3
5
 
4
6
  def to_yaml
5
- { }
7
+ {}
6
8
  end
7
9
 
8
10
  def initialize(nick)
@@ -13,13 +15,13 @@ class Subscription < Cinch::Plugins::Hangouts
13
15
 
14
16
  def save
15
17
  subs = Subscription.storage
16
- subs.data[self.nick] = self
18
+ subs.data[nick] = self
17
19
  subs.save
18
20
  end
19
21
 
20
22
  def delete
21
23
  subs = Subscription.storage
22
- subs.data[self.nick] = nil
24
+ subs.data[nick] = nil
23
25
  subs.save
24
26
  end
25
27
 
@@ -38,7 +40,8 @@ class Subscription < Cinch::Plugins::Hangouts
38
40
  # Don't link the person who linked it.
39
41
  if nick != sub.nick
40
42
  user = Cinch::User.new(sub.nick, bot)
41
- respond(user, "#{nick} just linked a new hangout at: #{Hangout.url(hangout_id)}")
43
+ respond(user, "#{nick} just linked a new hangout at: " +
44
+ "#{Hangout.url(hangout_id)}")
42
45
  end
43
46
  end
44
47
  end
@@ -49,4 +52,3 @@ class Subscription < Cinch::Plugins::Hangouts
49
52
  CinchStorage.new(@@subscription_filename)
50
53
  end
51
54
  end
52
-
@@ -1,7 +1,9 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  module Cinch
2
3
  module Plugins
4
+ # Versioning Info
3
5
  class Hangouts
4
- VERSION = "1.0.1"
6
+ VERSION = '1.0.2'
5
7
  end
6
8
  end
7
9
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cinch-hangouts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-10-28 00:00:00.000000000 Z
12
+ date: 2013-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake