hiptail 0.0.3 → 0.0.4

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.
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