hiptail 0.0.3 → 0.0.4

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: 080df2b0b73328a9b0604413adfeefc8292fc9aa
4
- data.tar.gz: fd4008027616aeda25d04578e75f9c4f0bdd7109
3
+ metadata.gz: 8a5cef876ec5bde020a879af5e3224883fc9b826
4
+ data.tar.gz: c423addccd41c6e4d1c284b58c1ec8acef64cfae
5
5
  SHA512:
6
- metadata.gz: a84d101dcce6ac0ea5bda7b3bcda1c963a21792223dd086fed53020f1fb149b995301d8facbc6ae00a50a8d6edf7acd2827e81470d6634f6e5cda1fa3b532c5a
7
- data.tar.gz: 069b76c1859dd8981b6149487b8a581dfb7699d3fdaf2182d28c17ba8f5554d11a854bcaf9ae2087adac441dbb9497d9c9673d6666a2d6a0d562afa205e272ee
6
+ metadata.gz: 05c26c97f11772bc8ce91e12e3167c58efe3de227569ff312825fbbc9c9d4d98d3d6867fe445bec16765769a69d3d04650944234eb9b9622516b3f05f8551cc5
7
+ data.tar.gz: 2f0cb01b19d338fb46d96e7b90a09655c77dd567db4ef11160ef87eaa682139977b295a716ee1945e211f22c348100b83f440f2c580915003ac69e5b59b88b82
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.0.4
2
+ * Support 'avatar' capability.
3
+ * Handlers of Manager now accept priority and have ability to stop propagation.
4
+
1
5
  ## 0.0.3
2
6
  * Use :ascii_only flag of JSON.generate. (thx to kimoto)
3
7
 
@@ -51,80 +51,80 @@ module HipTail
51
51
  # @return [String] Hook ID
52
52
  # @yield [authority]
53
53
  # @yield [HipTail::Authority] authority
54
- def on_install(&block)
55
- register_hook :install, block
54
+ def on_install(*args, &block)
55
+ register_hook :install, args, block
56
56
  end
57
57
 
58
58
  # Registers hook on uninstallation.
59
59
  # @return [String] Hook ID
60
60
  # @yield [oauth_id]
61
61
  # @yield [String] oauth_id
62
- def on_uninstall(&block)
63
- register_hook :uninstall, block
62
+ def on_uninstall(*args, &block)
63
+ register_hook :uninstall, args, block
64
64
  end
65
65
 
66
66
  # Registers hook on events.
67
67
  # @return [String] Hook ID
68
68
  # @yield [event]
69
69
  # @yield [HipTail::Event] event
70
- def on_event(&block)
71
- register_hook :event, block
70
+ def on_event(*args, &block)
71
+ register_hook :event, args, block
72
72
  end
73
73
 
74
74
  # Registers hook on messaging events (room_message and room_notification).
75
75
  # @return [String] Hook ID
76
76
  # @yield [event]
77
77
  # @yield [HipTail::Event::RoomMessaging] event
78
- def on_room_messaging(&block)
79
- register_hook :room_messaging, block
78
+ def on_room_messaging(*args, &block)
79
+ register_hook :room_messaging, args, block
80
80
  end
81
81
 
82
82
  # Registers hook on room_message event.
83
83
  # @return [String] Hook ID
84
84
  # @yield [event]
85
85
  # @yield [HipTail::Event::RoomMessage] event
86
- def on_room_message(&block)
87
- register_hook :room_message, block
86
+ def on_room_message(*args, &block)
87
+ register_hook :room_message, args, block
88
88
  end
89
89
 
90
90
  # Registers hook on room_notification event.
91
91
  # @return [String] Hook ID
92
92
  # @yield [event]
93
93
  # @yield [HipTail::Event::RoomNotification] event
94
- def on_room_notification(&block)
95
- register_hook :room_notification, block
94
+ def on_room_notification(*args, &block)
95
+ register_hook :room_notification, args, block
96
96
  end
97
97
 
98
98
  # Registers hook on room_topic_change event.
99
99
  # @return [String] Hook ID
100
100
  # @yield [event]
101
101
  # @yield [HipTail::Event::RoomTopicChange] event
102
- def on_room_topic_change(&block)
103
- register_hook :room_topic_change, block
102
+ def on_room_topic_change(*args, &block)
103
+ register_hook :room_topic_change, args, block
104
104
  end
105
105
 
106
106
  # Registers hook on room visiting event (room_enter and room_exit).
107
107
  # @return [String] Hook ID
108
108
  # @yield [event]
109
109
  # @yield [HipTail::Event::RoomVisiting] event
110
- def on_room_visiting(&block)
111
- register_hook :room_visiting, block
110
+ def on_room_visiting(*args, &block)
111
+ register_hook :room_visiting, args, block
112
112
  end
113
113
 
114
114
  # Registers hook on room_enter event.
115
115
  # @return [String] Hook ID
116
116
  # @yield [event]
117
117
  # @yield [HipTail::Event::RoomEnter] event
118
- def on_room_enter(&block)
119
- register_hook :room_enter, block
118
+ def on_room_enter(*args, &block)
119
+ register_hook :room_enter, args, block
120
120
  end
121
121
 
122
122
  # Registers hook on room_exit event.
123
123
  # @return [String] Hook ID
124
124
  # @yield [event]
125
125
  # @yield [HipTail::Event::RoomExit] event
126
- def on_room_exit(&block)
127
- register_hook :room_exit, block
126
+ def on_room_exit(*args, &block)
127
+ register_hook :room_exit, args, block
128
128
  end
129
129
 
130
130
  # Handles installing request.
@@ -186,25 +186,28 @@ module HipTail
186
186
  # @param [Proc] block
187
187
  # @param [String] hook_id
188
188
  # @return [String] Hook ID
189
- def register_hook(hook_type, block, hook_id = nil)
190
- hook_id ||= block.object_id.to_s
191
- @hook[hook_type][hook_id] = block
192
- return hook_id
193
- end
194
-
195
- # Unregisters a hook.
196
- # @param [Symbol] hook_type
197
- # @param [String] hook_id
198
- # @return [Proc] Unregistered procedure
199
- def unregister_hook(hook_type, hook_id = nil)
200
- @hook[hook_type].delete(hook_id.to_s)
189
+ def register_hook(hook_type, args, block)
190
+ priority = args.size > 0 ? args.shift : 100
191
+ @hook[hook_type][priority] ||= []
192
+ @hook[hook_type][priority] << block
201
193
  end
202
194
 
203
195
  private
204
196
 
205
197
  def call_hooks(hook_type, *args)
206
- @hook[hook_type].values.each do |block|
207
- block.call(*args)
198
+ @hook[hook_type].keys.sort.each do |key|
199
+ @hook[hook_type][key].each do |block|
200
+ aborted = false
201
+ begin
202
+ r = block.call(*args)
203
+ rescue LocalJumpError => e
204
+ aborted = e.reason
205
+ raise e unless [:break, :next, :return].include?(aborted)
206
+ r = e.exit_value
207
+ end
208
+
209
+ break if aborted == :break
210
+ end
208
211
  end
209
212
  end
210
213
 
data/lib/hiptail/util.rb CHANGED
@@ -16,6 +16,7 @@ module HipTail
16
16
  # @option params [String] :vendor_url (same as :base_url) Vendor URL (optional)
17
17
  # @option params [String] :homepage_url (same as :base_url) Homepage (optional)
18
18
  # @option params [String] :sender_name (same as :name) Name of notification sender (optional)
19
+ # @option params [String] :avatar Url of avatar image (optional)
19
20
  # @option params [String] :allow_global (true) Allow global installation (optional)
20
21
  # @option params [String] :allow_room (true) Allow room installation (optional)
21
22
  # @option params [String] :message_filter Room message filter regexp (optional)
@@ -74,6 +75,10 @@ module HipTail
74
75
  end
75
76
  capability[:capabilities][:webhook] << message_webhook
76
77
 
78
+ if params[:avatar]
79
+ capability[:capabilities][:hipchatApiConsumer][:avatar] = params[:avatar]
80
+ end
81
+
77
82
  capability
78
83
  end
79
84
  module_function :create_capability
@@ -1,3 +1,3 @@
1
1
  module HipTail
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -79,6 +79,9 @@ module HipTail
79
79
  params[:installed_url] = base_url.merge('./' + params[:installed_path])
80
80
 
81
81
  capability = HipTail::Util::create_capability(params)
82
+ if block_given?
83
+ yield capability
84
+ end
82
85
  create_response(capability)
83
86
  end
84
87
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hiptail
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ITO Nobuaki
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-12 00:00:00.000000000 Z
11
+ date: 2016-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rack
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.2.2
123
+ rubygems_version: 2.4.5.1
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: HipChat Integration (Add-on) Framework