pubnub 4.2.6 → 4.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of pubnub might be problematic. Click here for more details.

Files changed (226) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.pubnub.yml +113 -56
  4. data/.travis.yml +4 -2
  5. data/CHANGELOG.md +39 -11
  6. data/Gemfile.lock +10 -1
  7. data/README.md +56 -17
  8. data/VERSION +1 -1
  9. data/fixtures/vcr_cassettes/examples/add_channels_to_push/001.yml +45 -0
  10. data/fixtures/vcr_cassettes/examples/add_channels_to_push/002.yml +45 -0
  11. data/fixtures/vcr_cassettes/examples/add_channels_to_push/003.yml +45 -0
  12. data/fixtures/vcr_cassettes/examples/add_channels_to_push/004.yml +45 -0
  13. data/fixtures/vcr_cassettes/examples/channel_members/001.yml +111 -0
  14. data/fixtures/vcr_cassettes/examples/channel_members/002.yml +111 -0
  15. data/fixtures/vcr_cassettes/examples/channel_members/003.yml +111 -0
  16. data/fixtures/vcr_cassettes/examples/channel_members/004.yml +147 -0
  17. data/fixtures/vcr_cassettes/examples/channel_members/005.yml +147 -0
  18. data/fixtures/vcr_cassettes/examples/channel_members/006.yml +147 -0
  19. data/fixtures/vcr_cassettes/examples/channel_metadata/001.yml +39 -0
  20. data/fixtures/vcr_cassettes/examples/channel_metadata/002.yml +39 -0
  21. data/fixtures/vcr_cassettes/examples/channel_metadata/003.yml +39 -0
  22. data/fixtures/vcr_cassettes/examples/channel_metadata/004.yml +73 -0
  23. data/fixtures/vcr_cassettes/examples/channel_metadata/005.yml +73 -0
  24. data/fixtures/vcr_cassettes/examples/channel_metadata/006.yml +73 -0
  25. data/fixtures/vcr_cassettes/examples/grant/1913.yml +1 -1
  26. data/fixtures/vcr_cassettes/examples/grant/1944.yml +8 -9
  27. data/fixtures/vcr_cassettes/examples/grant/1945.yml +359 -9
  28. data/fixtures/vcr_cassettes/examples/grant/1946.yml +8 -9
  29. data/fixtures/vcr_cassettes/examples/grant/1947.yml +8 -9
  30. data/fixtures/vcr_cassettes/examples/grant/1948.yml +8 -9
  31. data/fixtures/vcr_cassettes/examples/history/include_meta__encrypted.yml +7 -7
  32. data/fixtures/vcr_cassettes/examples/history/include_meta__encrypted_random_iv.yml +46 -0
  33. data/fixtures/vcr_cassettes/examples/history/include_token__encrypted.yml +6 -6
  34. data/fixtures/vcr_cassettes/examples/history/include_token__encrypted_random_iv.yml +46 -0
  35. data/fixtures/vcr_cassettes/examples/history/no_includes__encrypted.yml +6 -6
  36. data/fixtures/vcr_cassettes/examples/history/no_includes__encrypted_random_iv.yml +45 -0
  37. data/fixtures/vcr_cassettes/examples/list_push_provisions/001.yml +46 -0
  38. data/fixtures/vcr_cassettes/examples/list_push_provisions/002.yml +45 -0
  39. data/fixtures/vcr_cassettes/examples/list_push_provisions/003.yml +45 -0
  40. data/fixtures/vcr_cassettes/examples/memberships/001.yml +111 -0
  41. data/fixtures/vcr_cassettes/examples/memberships/002.yml +111 -0
  42. data/fixtures/vcr_cassettes/examples/memberships/003.yml +111 -0
  43. data/fixtures/vcr_cassettes/examples/memberships/004.yml +111 -0
  44. data/fixtures/vcr_cassettes/examples/memberships/005.yml +147 -0
  45. data/fixtures/vcr_cassettes/examples/memberships/006.yml +147 -0
  46. data/fixtures/vcr_cassettes/examples/memberships/007.yml +147 -0
  47. data/fixtures/vcr_cassettes/examples/memberships/008.yml +147 -0
  48. data/fixtures/vcr_cassettes/examples/remove_channels_from_push/001.yml +45 -0
  49. data/fixtures/vcr_cassettes/examples/remove_channels_from_push/002.yml +45 -0
  50. data/fixtures/vcr_cassettes/examples/remove_channels_from_push/003.yml +45 -0
  51. data/fixtures/vcr_cassettes/examples/remove_device_from_push/001.yml +45 -0
  52. data/fixtures/vcr_cassettes/examples/remove_device_from_push/002.yml +45 -0
  53. data/fixtures/vcr_cassettes/examples/remove_device_from_push/003.yml +45 -0
  54. data/fixtures/vcr_cassettes/examples/uuid_metadata/001.yml +39 -0
  55. data/fixtures/vcr_cassettes/examples/uuid_metadata/002.yml +39 -0
  56. data/fixtures/vcr_cassettes/examples/uuid_metadata/003.yml +39 -0
  57. data/fixtures/vcr_cassettes/examples/uuid_metadata/004.yml +39 -0
  58. data/fixtures/vcr_cassettes/examples/uuid_metadata/005.yml +73 -0
  59. data/fixtures/vcr_cassettes/examples/uuid_metadata/006.yml +73 -0
  60. data/fixtures/vcr_cassettes/examples/uuid_metadata/007.yml +73 -0
  61. data/fixtures/vcr_cassettes/examples/uuid_metadata/008.yml +73 -0
  62. data/fixtures/vcr_cassettes/lib/events/get_all_channels_metadata.yml +39 -0
  63. data/fixtures/vcr_cassettes/lib/events/get_all_uuid_metadata.yml +76 -0
  64. data/fixtures/vcr_cassettes/lib/events/get_channel_members.yml +37 -0
  65. data/fixtures/vcr_cassettes/lib/events/get_channel_metadata.yml +37 -0
  66. data/fixtures/vcr_cassettes/lib/events/get_memberships1.yml +37 -0
  67. data/fixtures/vcr_cassettes/lib/events/get_memberships2.yml +37 -0
  68. data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata1.yml +76 -0
  69. data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata2.yml +76 -0
  70. data/fixtures/vcr_cassettes/lib/events/grant-error.yml +2 -2
  71. data/fixtures/vcr_cassettes/lib/events/grant.yml +10 -11
  72. data/fixtures/vcr_cassettes/lib/events/remove_channel_members.yml +78 -0
  73. data/fixtures/vcr_cassettes/lib/events/{delete_space.yml → remove_channel_metadata.yml} +5 -6
  74. data/fixtures/vcr_cassettes/lib/events/{manage_memberships_remove.yml → remove_memberships1.yml} +8 -9
  75. data/fixtures/vcr_cassettes/lib/events/{manage_members_add.yml → remove_memberships2.yml} +8 -9
  76. data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata1.yml +76 -0
  77. data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata2.yml +76 -0
  78. data/fixtures/vcr_cassettes/lib/events/set_channel_members.yml +39 -0
  79. data/fixtures/vcr_cassettes/lib/events/set_channel_metadata.yml +39 -0
  80. data/fixtures/vcr_cassettes/lib/events/{manage_memberships_add.yml → set_memberships1.yml} +8 -9
  81. data/fixtures/vcr_cassettes/lib/events/set_memberships2.yml +39 -0
  82. data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata1.yml +78 -0
  83. data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata2.yml +78 -0
  84. data/fixtures/vcr_cassettes/lib/events/{subscribe-space-delete-async.yml → subscribe-channel-metadata-remove-sync.yml} +12 -14
  85. data/fixtures/vcr_cassettes/lib/events/subscribe-channel-metadata-set-async.yml +75 -0
  86. data/fixtures/vcr_cassettes/lib/events/{subscribe-member-remove-async.yml → subscribe-member-remove-sync.yml} +12 -14
  87. data/fixtures/vcr_cassettes/lib/events/subscribe-member-set-async.yml +75 -0
  88. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-remove-async.yml +12 -14
  89. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-update-async.yml → subscribe-membership-set-async.yml} +12 -14
  90. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-delete-async.yml → subscribe-uuid-metadata-remove-sync.yml} +12 -14
  91. data/fixtures/vcr_cassettes/lib/events/subscribe-uuid-metadata-set-async.yml +75 -0
  92. data/lib/pubnub/client.rb +22 -16
  93. data/lib/pubnub/client/events.rb +4 -2
  94. data/lib/pubnub/client/helpers.rb +1 -1
  95. data/lib/pubnub/configuration.rb +1 -0
  96. data/lib/pubnub/constants.rb +20 -18
  97. data/lib/pubnub/crypto.rb +22 -8
  98. data/lib/pubnub/event.rb +39 -17
  99. data/lib/pubnub/event/formatter.rb +4 -0
  100. data/lib/pubnub/event/signature.rb +22 -7
  101. data/lib/pubnub/events/add_channels_to_push.rb +29 -13
  102. data/lib/pubnub/events/get_all_channels_metadata.rb +104 -0
  103. data/lib/pubnub/events/get_all_uuid_metadata.rb +104 -0
  104. data/lib/pubnub/events/get_channel_members.rb +120 -0
  105. data/lib/pubnub/events/{update_space.rb → get_channel_metadata.rb} +27 -27
  106. data/lib/pubnub/events/get_memberships.rb +120 -0
  107. data/lib/pubnub/events/{create_space.rb → get_uuid_metadata.rb} +27 -25
  108. data/lib/pubnub/events/grant.rb +10 -1
  109. data/lib/pubnub/events/history.rb +2 -1
  110. data/lib/pubnub/events/list_push_provisions.rb +29 -12
  111. data/lib/pubnub/events/publish.rb +2 -2
  112. data/lib/pubnub/events/remove_channel_members.rb +137 -0
  113. data/lib/pubnub/events/{delete_space.rb → remove_channel_metadata.rb} +13 -13
  114. data/lib/pubnub/events/remove_channels_from_push.rb +29 -13
  115. data/lib/pubnub/events/remove_device_from_push.rb +30 -14
  116. data/lib/pubnub/events/remove_memberships.rb +137 -0
  117. data/lib/pubnub/events/{delete_user.rb → remove_uuid_metadata.rb} +13 -13
  118. data/lib/pubnub/events/set_channel_members.rb +140 -0
  119. data/lib/pubnub/events/{manage_members.rb → set_channel_metadata.rb} +32 -38
  120. data/lib/pubnub/events/set_memberships.rb +140 -0
  121. data/lib/pubnub/events/{create_user.rb → set_uuid_metadata.rb} +33 -17
  122. data/lib/pubnub/events/signal.rb +1 -1
  123. data/lib/pubnub/formatter.rb +31 -4
  124. data/lib/pubnub/pam.rb +2 -11
  125. data/lib/pubnub/subscribe_callback.rb +1 -3
  126. data/lib/pubnub/subscribe_event/formatter.rb +30 -19
  127. data/lib/pubnub/subscriber.rb +5 -6
  128. data/lib/pubnub/validators/add_channels_to_push.rb +52 -0
  129. data/lib/pubnub/validators/get_all_channels_metadata.rb +29 -0
  130. data/lib/pubnub/validators/get_all_uuid_metadata.rb +29 -0
  131. data/lib/pubnub/validators/get_channel_members.rb +39 -0
  132. data/lib/pubnub/validators/get_channel_metadata.rb +39 -0
  133. data/lib/pubnub/validators/get_memberships.rb +39 -0
  134. data/lib/pubnub/validators/get_uuid_metadata.rb +39 -0
  135. data/lib/pubnub/validators/grant.rb +37 -2
  136. data/lib/pubnub/validators/list_push_provisions.rb +43 -0
  137. data/lib/pubnub/validators/remove_channel_members.rb +52 -0
  138. data/lib/pubnub/validators/remove_channel_metadata.rb +39 -0
  139. data/lib/pubnub/validators/remove_channels_from_push.rb +52 -0
  140. data/lib/pubnub/validators/remove_device_from_push.rb +43 -0
  141. data/lib/pubnub/validators/remove_memberships.rb +52 -0
  142. data/lib/pubnub/validators/remove_uuid_metadata.rb +39 -0
  143. data/lib/pubnub/validators/set_channel_members.rb +78 -0
  144. data/lib/pubnub/validators/set_channel_metadata.rb +62 -0
  145. data/lib/pubnub/validators/set_memberships.rb +78 -0
  146. data/lib/pubnub/validators/set_uuid_metadata.rb +62 -0
  147. data/lib/pubnub/version.rb +1 -1
  148. data/spec/examples/add_channels_to_push_spec.rb +178 -0
  149. data/spec/examples/{grant_examples_spec.rb → grant_examples_1_spec.rb} +0 -8973
  150. data/spec/examples/grant_examples_2_spec.rb +9107 -0
  151. data/spec/examples/history_examples_spec.rb +87 -9
  152. data/spec/examples/list_push_provisions_spec.rb +164 -0
  153. data/spec/examples/presence_examples_spec.rb +222 -186
  154. data/spec/examples/publish_examples_spec.rb +864 -0
  155. data/spec/examples/remove_channel_members_examples_spec.rb +100 -0
  156. data/spec/examples/remove_channel_metadata_examples_spec.rb +89 -0
  157. data/spec/examples/remove_channels_from_push_spec.rb +164 -0
  158. data/spec/examples/remove_device_from_push_spec.rb +164 -0
  159. data/spec/examples/remove_memberships_examples_spec.rb +121 -0
  160. data/spec/examples/remove_uuid_metadata_examples_spec.rb +107 -0
  161. data/spec/examples/revoke_examples_1_spec.rb +27013 -0
  162. data/spec/examples/revoke_examples_2_spec.rb +27012 -0
  163. data/spec/examples/revoke_examples_3_spec.rb +17967 -0
  164. data/spec/examples/set_channel_members_examples_spec.rb +99 -0
  165. data/spec/examples/set_channel_metadata_examples_spec.rb +93 -0
  166. data/spec/examples/set_memberships_examples_spec.rb +122 -0
  167. data/spec/examples/set_uuid_metadata_examples_spec.rb +114 -0
  168. data/spec/examples/status_request_message_count_exceeded_spec.rb +4 -1
  169. data/spec/examples/subscribe_examples_1_spec.rb +26972 -0
  170. data/spec/examples/subscribe_examples_2_spec.rb +19575 -0
  171. data/spec/lib/connection_callback_spec.rb +4 -3
  172. data/spec/lib/event/formatter_spec.rb +22 -0
  173. data/spec/lib/events/channel_metadata_spec.rb +58 -0
  174. data/spec/lib/events/grant_spec.rb +3 -2
  175. data/spec/lib/events/membership_spec.rb +51 -21
  176. data/spec/lib/events/presence_delta_spec.rb +9 -6
  177. data/spec/lib/events/presence_spec.rb +13 -7
  178. data/spec/lib/events/subscribe_spec.rb +104 -65
  179. data/spec/lib/events/uuid_metadata_spec.rb +86 -0
  180. data/spec/lib/multiple_ciphers_spec.rb +16 -4
  181. data/spec/lib/subscribe_event/formatter_spec.rb +22 -0
  182. data/spec/lib/super_admin_spec.rb +8 -4
  183. data/spec/spec_helper.rb +24 -8
  184. metadata +153 -65
  185. data/fixtures/vcr_cassettes/lib/events/create_space.yml +0 -40
  186. data/fixtures/vcr_cassettes/lib/events/create_user.yml +0 -40
  187. data/fixtures/vcr_cassettes/lib/events/delete_user.yml +0 -38
  188. data/fixtures/vcr_cassettes/lib/events/get_members.yml +0 -38
  189. data/fixtures/vcr_cassettes/lib/events/get_space.yml +0 -38
  190. data/fixtures/vcr_cassettes/lib/events/get_space_memberships.yml +0 -38
  191. data/fixtures/vcr_cassettes/lib/events/get_spaces.yml +0 -40
  192. data/fixtures/vcr_cassettes/lib/events/get_user.yml +0 -38
  193. data/fixtures/vcr_cassettes/lib/events/get_users.yml +0 -40
  194. data/fixtures/vcr_cassettes/lib/events/manage_members_remove.yml +0 -83
  195. data/fixtures/vcr_cassettes/lib/events/subscribe-member-add-async.yml +0 -77
  196. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-add-async.yml +0 -77
  197. data/fixtures/vcr_cassettes/lib/events/subscribe-space-update-async.yml +0 -77
  198. data/fixtures/vcr_cassettes/lib/events/update_space.yml +0 -40
  199. data/fixtures/vcr_cassettes/lib/events/update_user.yml +0 -40
  200. data/lib/pubnub/events/get_members.rb +0 -93
  201. data/lib/pubnub/events/get_space.rb +0 -74
  202. data/lib/pubnub/events/get_space_memberships.rb +0 -93
  203. data/lib/pubnub/events/get_spaces.rb +0 -90
  204. data/lib/pubnub/events/get_user.rb +0 -74
  205. data/lib/pubnub/events/get_users.rb +0 -90
  206. data/lib/pubnub/events/manage_memberships.rb +0 -105
  207. data/lib/pubnub/events/update_user.rb +0 -86
  208. data/lib/pubnub/validators/create_space.rb +0 -44
  209. data/lib/pubnub/validators/create_user.rb +0 -44
  210. data/lib/pubnub/validators/delete_space.rb +0 -32
  211. data/lib/pubnub/validators/delete_user.rb +0 -32
  212. data/lib/pubnub/validators/get_members.rb +0 -32
  213. data/lib/pubnub/validators/get_space.rb +0 -32
  214. data/lib/pubnub/validators/get_space_memberships.rb +0 -32
  215. data/lib/pubnub/validators/get_spaces.rb +0 -16
  216. data/lib/pubnub/validators/get_user.rb +0 -32
  217. data/lib/pubnub/validators/get_users.rb +0 -16
  218. data/lib/pubnub/validators/manage_members.rb +0 -45
  219. data/lib/pubnub/validators/manage_memberships.rb +0 -45
  220. data/lib/pubnub/validators/push.rb +0 -43
  221. data/lib/pubnub/validators/update_space.rb +0 -45
  222. data/lib/pubnub/validators/update_user.rb +0 -45
  223. data/spec/examples/revoke_examples_spec.rb +0 -71950
  224. data/spec/examples/subscribe_examples_spec.rb +0 -45184
  225. data/spec/lib/events/space_spec.rb +0 -75
  226. data/spec/lib/events/user_spec.rb +0 -75
@@ -10,9 +10,7 @@ module Pubnub
10
10
  status: options[:status],
11
11
  presence: options[:presence],
12
12
  signal: options[:signal],
13
- user: options[:user],
14
- space: options[:space],
15
- membership: options[:membership]
13
+ object: options[:object]
16
14
  }
17
15
  validate!
18
16
  end
@@ -34,8 +34,10 @@ module Pubnub
34
34
 
35
35
  def decipher_payload(message)
36
36
  return message[:payload] if message[:channel].end_with?('-pnpres') || (@app.env[:cipher_key].nil? && @cipher_key.nil? && @cipher_key_selector.nil? && @env[:cipher_key_selector].nil?)
37
- cipher_key = compute_cipher_key(message.reject { |k, _v| k == :payload })
38
- crypto = Pubnub::Crypto.new(cipher_key)
37
+ data = message.reject { |k, _v| k == :payload }
38
+ cipher_key = compute_cipher_key(data)
39
+ random_iv = compute_random_iv(data)
40
+ crypto = Pubnub::Crypto.new(cipher_key, random_iv)
39
41
  JSON.parse(crypto.decrypt(message[:payload]), quirks_mode: true)
40
42
  rescue StandardError
41
43
  message[:payload]
@@ -148,6 +150,11 @@ module Pubnub
148
150
  end
149
151
 
150
152
  def format_envelopes(response, request)
153
+ if response.is_a?(StandardError)
154
+ # unexpected error response
155
+ raise response
156
+ end
157
+
151
158
  parsed_response, error = Pubnub::Formatter.parse_json(response.body)
152
159
 
153
160
  error = response if parsed_response && response.code.to_i != 200
@@ -168,32 +175,36 @@ module Pubnub
168
175
  Pubnub::Constants::OPERATION_SIGNAL
169
176
  elsif message[:type] == 2
170
177
  case message[:payload]['type']
171
- when 'user'
178
+ when 'uuid'
172
179
  case message[:payload]['event']
173
- when 'create'
174
- Pubnub::Constants::OPERATION_CREATE_USER
175
- when 'update'
176
- Pubnub::Constants::OPERATION_UPDATE_USER
180
+ when 'set'
181
+ Pubnub::Constants::OPERATION_SET_UUID_METADATA
177
182
  when 'delete'
178
- Pubnub::Constants::OPERATION_DELETE_USER
183
+ Pubnub::Constants::OPERATION_REMOVE_UUID_METADATA
179
184
  else
180
- Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']}." }
181
- raise Exception, "Invalid event #{message[:payload]['event']}."
185
+ Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']} for uuid." }
186
+ raise Exception, "Invalid event #{message[:payload]['event']} for uuid."
182
187
  end
183
- when 'space'
188
+ when 'channel'
184
189
  case message[:payload]['event']
185
- when 'create'
186
- Pubnub::Constants::OPERATION_CREATE_SPACE
187
- when 'update'
188
- Pubnub::Constants::OPERATION_UPDATE_SPACE
190
+ when 'set'
191
+ Pubnub::Constants::OPERATION_SET_CHANNEL_METADATA
189
192
  when 'delete'
190
- Pubnub::Constants::OPERATION_DELETE_SPACE
193
+ Pubnub::Constants::OPERATION_REMOVE_CHANNEL_METADATA
191
194
  else
192
- Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']}." }
193
- raise Exception, "Invalid event #{message[:payload]['event']}."
195
+ Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']} for channel." }
196
+ raise Exception, "Invalid event #{message[:payload]['event']} for channel."
194
197
  end
195
198
  when 'membership'
196
- Pubnub::Constants::OPERATION_MANAGE_MEMBERSHIPS
199
+ case message[:payload]['event']
200
+ when 'set'
201
+ Pubnub::Constants::OPERATION_SET_MEMBERSHIPS
202
+ when 'delete'
203
+ Pubnub::Constants::OPERATION_REMOVE_MEMBERSHIPS
204
+ else
205
+ Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']} for membership." }
206
+ raise Exception, "Invalid event #{message[:payload]['event']} for membership."
207
+ end
197
208
  else
198
209
  Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid operation type #{message[:payload]['type']}." }
199
210
  raise Exception, "Invalid operation type #{message[:payload]['type']}."
@@ -75,12 +75,11 @@ module Pubnub
75
75
  secure_call callbacks.callbacks[:signal], envelope
76
76
  when Pubnub::Constants::OPERATION_PRESENCE
77
77
  secure_call callbacks.callbacks[:presence], envelope
78
- when Pubnub::Constants::OPERATION_CREATE_USER, Pubnub::Constants::OPERATION_UPDATE_USER, Pubnub::Constants::OPERATION_DELETE_USER
79
- secure_call callbacks.callbacks[:user], envelope
80
- when Pubnub::Constants::OPERATION_CREATE_SPACE, Pubnub::Constants::OPERATION_UPDATE_SPACE, Pubnub::Constants::OPERATION_DELETE_SPACE
81
- secure_call callbacks.callbacks[:space], envelope
82
- when Pubnub::Constants::OPERATION_MANAGE_MEMBERS, Pubnub::Constants::OPERATION_MANAGE_MEMBERSHIPS
83
- secure_call callbacks.callbacks[:membership], envelope
78
+ when Pubnub::Constants::OPERATION_SET_UUID_METADATA, Pubnub::Constants::OPERATION_REMOVE_UUID_METADATA,
79
+ Pubnub::Constants::OPERATION_SET_CHANNEL_METADATA, Pubnub::Constants::OPERATION_REMOVE_CHANNEL_METADATA,
80
+ Pubnub::Constants::OPERATION_SET_CHANNEL_MEMBERS, Pubnub::Constants::OPERATION_REMOVE_CHANNEL_MEMBERS,
81
+ Pubnub::Constants::OPERATION_SET_MEMBERSHIPS, Pubnub::Constants::OPERATION_REMOVE_MEMBERSHIPS
82
+ secure_call callbacks.callbacks[:object], envelope
84
83
  else
85
84
  secure_call callbacks.callbacks[:status], envelope
86
85
  end
@@ -0,0 +1,52 @@
1
+ # Toplevel Pubnub module.
2
+ module Pubnub
3
+ # Validator module that holds all validators modules
4
+ module Validator
5
+ # Validator for AddChannelsToPush event
6
+ module AddChannelsToPush
7
+ include CommonValidator
8
+
9
+ def validate!
10
+ return if @skip_validate
11
+ validate_push_token!
12
+ validate_push_gateway!
13
+ validate_channel!
14
+ validate_topic! if @push_gateway.eql? 'apns2'
15
+ end
16
+
17
+ private
18
+
19
+ def validate_push_token!
20
+ return unless @push_token.nil? || @push_token.empty?
21
+ raise(
22
+ ArgumentError.new,
23
+ ':push_token is required for AddChannelsToPush event.'
24
+ )
25
+ end
26
+
27
+ def validate_push_gateway!
28
+ return unless @push_gateway.nil? || @push_gateway.empty?
29
+ raise(
30
+ ArgumentError.new,
31
+ ':push_gateway is required for AddChannelsToPush event.'
32
+ )
33
+ end
34
+
35
+ def validate_channel!
36
+ return unless @channel.nil? || @channel.empty?
37
+ raise(
38
+ ArgumentError.new,
39
+ ':channel is required for AddChannelsToPush event.'
40
+ )
41
+ end
42
+
43
+ def validate_topic!
44
+ return unless @topic.nil? || @topic.empty?
45
+ raise(
46
+ ArgumentError.new,
47
+ ':topic is required for AddChannelsToPush event.'
48
+ )
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,29 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Validator module that holds all validators modules
6
+ module Validator
7
+ # Validator for GetAllChannelsMetadata event
8
+ module GetAllChannelsMetadata
9
+ include CommonValidator
10
+
11
+ def validate!
12
+ return if @skip_validate
13
+
14
+ validate_subscribe_key!
15
+ end
16
+
17
+ private
18
+
19
+ def validate_subscribe_key!
20
+ return unless @subscribe_key.nil?
21
+
22
+ raise(
23
+ ArgumentError.new(object: self, message: ':subscribe_key is required for get all channels metadata event.'),
24
+ ':subscribe_key is required for get all channels metadata event.'
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Validator module that holds all validators modules
6
+ module Validator
7
+ # Validator for GetAllUuidMetadata event
8
+ module GetAllUuidMetadata
9
+ include CommonValidator
10
+
11
+ def validate!
12
+ return if @skip_validate
13
+
14
+ validate_subscribe_key!
15
+ end
16
+
17
+ private
18
+
19
+ def validate_subscribe_key!
20
+ return unless @subscribe_key.nil?
21
+
22
+ raise(
23
+ ArgumentError.new(object: self, message: ':subscribe_key is required for get all uuid metadata event.'),
24
+ ':subscribe_key is required for get all uuid metadata event.'
25
+ )
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,39 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Validator module that holds all validators modules
6
+ module Validator
7
+ # Validator for GetChannelMembers event
8
+ module GetChannelMembers
9
+ include CommonValidator
10
+
11
+ def validate!
12
+ return if @skip_validate
13
+
14
+ validate_subscribe_key!
15
+ validate_channel!
16
+ end
17
+
18
+ private
19
+
20
+ def validate_subscribe_key!
21
+ return unless @subscribe_key.nil?
22
+
23
+ raise(
24
+ ArgumentError.new(object: self, message: ':subscribe_key is required for get channel members event.'),
25
+ ':subscribe_key is required for get channel members event.'
26
+ )
27
+ end
28
+
29
+ def validate_channel!
30
+ return unless @channel.nil? || @channel.empty?
31
+
32
+ raise(
33
+ ArgumentError.new(object: self, message: ':channel is required for get channel members event.'),
34
+ ':channel is required for get channel members event.'
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Validator module that holds all validators modules
6
+ module Validator
7
+ # Validator for GetChannelMetadata event
8
+ module GetChannelMetadata
9
+ include CommonValidator
10
+
11
+ def validate!
12
+ return if @skip_validate
13
+
14
+ validate_subscribe_key!
15
+ validate_channel!
16
+ end
17
+
18
+ private
19
+
20
+ def validate_subscribe_key!
21
+ return unless @subscribe_key.nil?
22
+
23
+ raise(
24
+ ArgumentError.new(object: self, message: ':subscribe_key is required for get channel metadata event.'),
25
+ ':subscribe_key is required for get channel metadata event.'
26
+ )
27
+ end
28
+
29
+ def validate_channel!
30
+ return unless @channel.nil? || @channel.empty?
31
+
32
+ raise(
33
+ ArgumentError.new(object: self, message: ':channel is required for get channel metadata event.'),
34
+ ':channel is required for get channel metadata event.'
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Validator module that holds all validators modules
6
+ module Validator
7
+ # Validator for GetMemberships event
8
+ module GetMemberships
9
+ include CommonValidator
10
+
11
+ def validate!
12
+ return if @skip_validate
13
+
14
+ validate_subscribe_key!
15
+ validate_uuid!
16
+ end
17
+
18
+ private
19
+
20
+ def validate_subscribe_key!
21
+ return unless @subscribe_key.nil?
22
+
23
+ raise(
24
+ ArgumentError.new(object: self, message: ':subscribe_key is required for get memberships event.'),
25
+ ':subscribe_key is required for get memberships event.'
26
+ )
27
+ end
28
+
29
+ def validate_uuid!
30
+ return unless @uuid.nil? || @uuid.empty?
31
+
32
+ raise(
33
+ ArgumentError.new(object: self, message: ':uuid is required for get memberships event.'),
34
+ ':uuid is required for get memberships event.'
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Validator module that holds all validators modules
6
+ module Validator
7
+ # Validator for GetUuidMetadata event
8
+ module GetUuidMetadata
9
+ include CommonValidator
10
+
11
+ def validate!
12
+ return if @skip_validate
13
+
14
+ validate_subscribe_key!
15
+ validate_uuid!
16
+ end
17
+
18
+ private
19
+
20
+ def validate_subscribe_key!
21
+ return unless @subscribe_key.nil?
22
+
23
+ raise(
24
+ ArgumentError.new(object: self, message: ':subscribe_key is required for get uuid metadata event.'),
25
+ ':subscribe_key is required for get uuid metadata event.'
26
+ )
27
+ end
28
+
29
+ def validate_uuid!
30
+ return unless @uuid.nil? || @uuid.empty?
31
+
32
+ raise(
33
+ ArgumentError.new(object: self, message: ':uuid is required for get uuid metadata event.'),
34
+ ':uuid is required for get uuid metadata event.'
35
+ )
36
+ end
37
+ end
38
+ end
39
+ end
@@ -8,18 +8,53 @@ module Pubnub
8
8
 
9
9
  def validate!
10
10
  return if @skip_validate
11
+
12
+ validate_keys!
11
13
  validate_ttl!
14
+ validate_uuids!
12
15
  end
13
16
 
14
17
  private
15
18
 
19
+ def validate_keys!
20
+ raise(
21
+ ArgumentError.new(object: self, message: ':subscribe_key is required for grant event.'),
22
+ ':subscribe_key is required for grant event.'
23
+ ) if @subscribe_key.nil? || @subscribe_key.empty?
24
+
25
+ raise(
26
+ ArgumentError.new(object: self, message: ':publish_key is required for grant event.'),
27
+ ':publish_key is required for grant event.'
28
+ ) if @publish_key.nil? || @publish_key.empty?
29
+ end
30
+
16
31
  def validate_ttl!
17
32
  return unless !@ttl.nil? && !@ttl.is_a?(Integer)
33
+
18
34
  raise(
19
- ArgumentError.new,
20
- ':ttl has to be kind of Integer'
35
+ ArgumentError.new(object: self, message: ':ttl has to be kind of Integer for grant event.'),
36
+ ':ttl has to be kind of Integer for grant event.'
21
37
  )
22
38
  end
39
+
40
+ def validate_uuids!
41
+ return if @uuids.nil?
42
+
43
+ raise(
44
+ ArgumentError.new(object: self, message: ':uuid should not be empty for grant event.'),
45
+ ':uuid should not be empty for grant event.'
46
+ ) if @uuid.empty?
47
+
48
+ raise(
49
+ ArgumentError.new(object: self, message: ':auth_key required for grant event on uuids.'),
50
+ ':uuid should not be empty for grant event on uuids.'
51
+ ) if @auth_key.nil? || @auth_key.blank?
52
+
53
+ raise(
54
+ ArgumentError.new(object: self, message: ':uuid can\'t be used along with channel/channel_groups for grant event.'),
55
+ ':uuid can\'t be used along with channel/channel_groups for grant event.'
56
+ ) if !@channels.nil? || !@channel_groups.nil?
57
+ end
23
58
  end
24
59
  end
25
60
  end
@@ -0,0 +1,43 @@
1
+ # Toplevel Pubnub module.
2
+ module Pubnub
3
+ # Validator module that holds all validators modules
4
+ module Validator
5
+ # Validator for ListPushProvisions event
6
+ module ListPushProvisions
7
+ include CommonValidator
8
+
9
+ def validate!
10
+ return if @skip_validate
11
+ validate_push_token!
12
+ validate_push_gateway!
13
+ validate_topic! if @push_gateway.eql? 'apns2'
14
+ end
15
+
16
+ private
17
+
18
+ def validate_push_token!
19
+ return unless @push_token.nil? || @push_token.empty?
20
+ raise(
21
+ ArgumentError.new,
22
+ ':push_token is required for ListPushProvisions event.'
23
+ )
24
+ end
25
+
26
+ def validate_push_gateway!
27
+ return unless @push_gateway.nil? || @push_gateway.empty?
28
+ raise(
29
+ ArgumentError.new,
30
+ ':push_gateway is required for ListPushProvisions event.'
31
+ )
32
+ end
33
+
34
+ def validate_topic!
35
+ return unless @topic.nil? || @topic.empty?
36
+ raise(
37
+ ArgumentError.new,
38
+ ':topic is required for ListPushProvisions event.'
39
+ )
40
+ end
41
+ end
42
+ end
43
+ end