pubnub 4.3.0 → 4.4.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 (118) hide show
  1. checksums.yaml +4 -4
  2. data/.pubnub.yml +32 -24
  3. data/CHANGELOG.md +5 -0
  4. data/Gemfile.lock +1 -1
  5. data/README.md +1 -1
  6. data/VERSION +1 -1
  7. data/fixtures/vcr_cassettes/examples/grant/1913.yml +1 -1
  8. data/fixtures/vcr_cassettes/examples/grant/1945.yml +355 -4
  9. data/fixtures/vcr_cassettes/lib/events/get_all_channels_metadata.yml +39 -0
  10. data/fixtures/vcr_cassettes/lib/events/get_all_uuid_metadata.yml +76 -0
  11. data/fixtures/vcr_cassettes/lib/events/{get_space_memberships.yml → get_channel_members.yml} +5 -6
  12. data/fixtures/vcr_cassettes/lib/events/get_channel_metadata.yml +37 -0
  13. data/fixtures/vcr_cassettes/lib/events/{get_members.yml → get_memberships.yml} +10 -11
  14. data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata.yml +76 -0
  15. data/fixtures/vcr_cassettes/lib/events/grant-error.yml +2 -2
  16. data/fixtures/vcr_cassettes/lib/events/grant.yml +10 -11
  17. data/fixtures/vcr_cassettes/lib/events/remove_channel_members.yml +78 -0
  18. data/fixtures/vcr_cassettes/lib/events/{delete_space.yml → remove_channel_metadata.yml} +5 -6
  19. data/fixtures/vcr_cassettes/lib/events/{manage_memberships_remove.yml → remove_memberships.yml} +8 -9
  20. data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata.yml +76 -0
  21. data/fixtures/vcr_cassettes/lib/events/set_channel_members.yml +39 -0
  22. data/fixtures/vcr_cassettes/lib/events/set_channel_metadata.yml +39 -0
  23. data/fixtures/vcr_cassettes/lib/events/{manage_members_add.yml → set_memberships.yml} +8 -9
  24. data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata.yml +78 -0
  25. data/fixtures/vcr_cassettes/lib/events/{subscribe-space-delete-async.yml → subscribe-channel-metadata-remove-sync.yml} +12 -14
  26. data/fixtures/vcr_cassettes/lib/events/subscribe-channel-metadata-set-async.yml +75 -0
  27. data/fixtures/vcr_cassettes/lib/events/{subscribe-member-remove-async.yml → subscribe-member-remove-sync.yml} +12 -14
  28. data/fixtures/vcr_cassettes/lib/events/subscribe-member-set-async.yml +75 -0
  29. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-remove-async.yml +12 -14
  30. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-update-async.yml → subscribe-membership-set-async.yml} +12 -14
  31. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-delete-async.yml → subscribe-uuid-metadata-remove-sync.yml} +12 -14
  32. data/fixtures/vcr_cassettes/lib/events/subscribe-uuid-metadata-set-async.yml +75 -0
  33. data/lib/pubnub/client.rb +14 -14
  34. data/lib/pubnub/client/events.rb +4 -2
  35. data/lib/pubnub/constants.rb +19 -18
  36. data/lib/pubnub/event.rb +29 -15
  37. data/lib/pubnub/event/signature.rb +22 -7
  38. data/lib/pubnub/events/get_all_channels_metadata.rb +92 -0
  39. data/lib/pubnub/events/get_all_uuid_metadata.rb +92 -0
  40. data/lib/pubnub/events/get_channel_members.rb +100 -0
  41. data/lib/pubnub/events/{get_user.rb → get_channel_metadata.rb} +22 -15
  42. data/lib/pubnub/events/get_memberships.rb +100 -0
  43. data/lib/pubnub/events/{get_space.rb → get_uuid_metadata.rb} +22 -15
  44. data/lib/pubnub/events/grant.rb +9 -7
  45. data/lib/pubnub/events/remove_channel_members.rb +117 -0
  46. data/lib/pubnub/events/{delete_space.rb → remove_channel_metadata.rb} +12 -12
  47. data/lib/pubnub/events/remove_memberships.rb +117 -0
  48. data/lib/pubnub/events/{delete_user.rb → remove_uuid_metadata.rb} +12 -12
  49. data/lib/pubnub/events/set_channel_members.rb +120 -0
  50. data/lib/pubnub/events/{create_space.rb → set_channel_metadata.rb} +26 -16
  51. data/lib/pubnub/events/set_memberships.rb +120 -0
  52. data/lib/pubnub/events/{update_space.rb → set_uuid_metadata.rb} +27 -18
  53. data/lib/pubnub/pam.rb +2 -11
  54. data/lib/pubnub/subscribe_callback.rb +1 -3
  55. data/lib/pubnub/subscribe_event/formatter.rb +21 -17
  56. data/lib/pubnub/subscriber.rb +5 -6
  57. data/lib/pubnub/validators/get_all_channels_metadata.rb +29 -0
  58. data/lib/pubnub/validators/get_all_uuid_metadata.rb +29 -0
  59. data/lib/pubnub/validators/get_channel_members.rb +39 -0
  60. data/lib/pubnub/validators/get_channel_metadata.rb +39 -0
  61. data/lib/pubnub/validators/get_memberships.rb +39 -0
  62. data/lib/pubnub/validators/get_uuid_metadata.rb +39 -0
  63. data/lib/pubnub/validators/grant.rb +37 -2
  64. data/lib/pubnub/validators/remove_channel_members.rb +52 -0
  65. data/lib/pubnub/validators/remove_channel_metadata.rb +39 -0
  66. data/lib/pubnub/validators/remove_memberships.rb +52 -0
  67. data/lib/pubnub/validators/remove_uuid_metadata.rb +39 -0
  68. data/lib/pubnub/validators/set_channel_members.rb +78 -0
  69. data/lib/pubnub/validators/set_channel_metadata.rb +62 -0
  70. data/lib/pubnub/validators/set_memberships.rb +78 -0
  71. data/lib/pubnub/validators/set_uuid_metadata.rb +62 -0
  72. data/lib/pubnub/version.rb +1 -1
  73. data/spec/examples/grant_examples_spec.rb +2 -2
  74. data/spec/lib/events/channel_metadata_spec.rb +58 -0
  75. data/spec/lib/events/grant_spec.rb +3 -2
  76. data/spec/lib/events/membership_spec.rb +25 -22
  77. data/spec/lib/events/subscribe_spec.rb +58 -45
  78. data/spec/lib/events/uuid_metadata_spec.rb +56 -0
  79. data/spec/spec_helper.rb +1 -1
  80. metadata +55 -57
  81. data/fixtures/vcr_cassettes/lib/events/create_space.yml +0 -40
  82. data/fixtures/vcr_cassettes/lib/events/create_user.yml +0 -40
  83. data/fixtures/vcr_cassettes/lib/events/delete_user.yml +0 -38
  84. data/fixtures/vcr_cassettes/lib/events/get_space.yml +0 -38
  85. data/fixtures/vcr_cassettes/lib/events/get_spaces.yml +0 -40
  86. data/fixtures/vcr_cassettes/lib/events/get_user.yml +0 -38
  87. data/fixtures/vcr_cassettes/lib/events/get_users.yml +0 -40
  88. data/fixtures/vcr_cassettes/lib/events/manage_members_remove.yml +0 -83
  89. data/fixtures/vcr_cassettes/lib/events/manage_memberships_add.yml +0 -40
  90. data/fixtures/vcr_cassettes/lib/events/subscribe-member-add-async.yml +0 -77
  91. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-add-async.yml +0 -77
  92. data/fixtures/vcr_cassettes/lib/events/subscribe-space-update-async.yml +0 -77
  93. data/fixtures/vcr_cassettes/lib/events/update_space.yml +0 -40
  94. data/fixtures/vcr_cassettes/lib/events/update_user.yml +0 -40
  95. data/lib/pubnub/events/create_user.rb +0 -84
  96. data/lib/pubnub/events/get_members.rb +0 -93
  97. data/lib/pubnub/events/get_space_memberships.rb +0 -93
  98. data/lib/pubnub/events/get_spaces.rb +0 -90
  99. data/lib/pubnub/events/get_users.rb +0 -90
  100. data/lib/pubnub/events/manage_members.rb +0 -105
  101. data/lib/pubnub/events/manage_memberships.rb +0 -105
  102. data/lib/pubnub/events/update_user.rb +0 -86
  103. data/lib/pubnub/validators/create_space.rb +0 -44
  104. data/lib/pubnub/validators/create_user.rb +0 -44
  105. data/lib/pubnub/validators/delete_space.rb +0 -32
  106. data/lib/pubnub/validators/delete_user.rb +0 -32
  107. data/lib/pubnub/validators/get_members.rb +0 -32
  108. data/lib/pubnub/validators/get_space.rb +0 -32
  109. data/lib/pubnub/validators/get_space_memberships.rb +0 -32
  110. data/lib/pubnub/validators/get_spaces.rb +0 -16
  111. data/lib/pubnub/validators/get_user.rb +0 -32
  112. data/lib/pubnub/validators/get_users.rb +0 -16
  113. data/lib/pubnub/validators/manage_members.rb +0 -45
  114. data/lib/pubnub/validators/manage_memberships.rb +0 -45
  115. data/lib/pubnub/validators/update_space.rb +0 -45
  116. data/lib/pubnub/validators/update_user.rb +0 -45
  117. data/spec/lib/events/space_spec.rb +0 -75
  118. data/spec/lib/events/user_spec.rb +0 -75
@@ -2,24 +2,33 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Pubnub
5
- # Holds UpdateSpace functionality
6
- class UpdateSpace < SingleEvent
5
+ # Holds SetUuidMetadata functionality
6
+ class SetUuidMetadata < SingleEvent
7
7
  include Concurrent::Async
8
- include Pubnub::Validator::UpdateSpace
8
+ include Pubnub::Validator::SetUuidMetadata
9
9
 
10
10
  def initialize(options, app)
11
- @event = :update_space
11
+ @event = current_operation
12
12
  @telemetry_name = :l_obj
13
- @space_id = options[:space_id]
14
- @data = options[:data]
15
- @include = options[:include]
13
+ @uuid = options[:uuid]
14
+
15
+ # Clean up user-provided metadata object from nils.
16
+ @metadata = options[:metadata].delete_if { |_k, v| v.blank? } unless options[:metadata].nil?
17
+
18
+ if options[:include]
19
+ @include = [0, '0', false].include?(options[:include][:custom]) ? "0" : "1" unless options[:include][:custom].nil?
20
+ end
21
+
22
+ # Single entity creation should return it's 'custom' field by default.
23
+ @include = "custom" if @include.nil?
24
+
16
25
  super
17
26
  end
18
27
 
19
28
  def fire
20
- Pubnub.logger.debug('Pubnub::UpdateSpace') { "Fired event #{self.class}" }
29
+ Pubnub.logger.debug('Pubnub::SetUuidMetadata') { "Fired event #{self.class}" }
21
30
 
22
- body = Formatter.format_message(@data, @cipher_key, false)
31
+ body = Formatter.format_message(@metadata, @cipher_key, false)
23
32
  response = send_request(body)
24
33
 
25
34
  envelopes = fire_callbacks(handle(response, uri))
@@ -30,22 +39,22 @@ module Pubnub
30
39
  private
31
40
 
32
41
  def current_operation
33
- Pubnub::Constants::OPERATION_UPDATE_SPACE
42
+ Pubnub::Constants::OPERATION_SET_UUID_METADATA
34
43
  end
35
44
 
36
- def parameters(*_args)
37
- parameters = super
38
- parameters[:include] = @include if @include
45
+ def parameters(signature = false)
46
+ parameters = super(signature)
47
+ parameters[:include] = @include
39
48
  parameters
40
49
  end
41
50
 
42
51
  def path
43
52
  '/' + [
44
- 'v1',
53
+ 'v2',
45
54
  'objects',
46
55
  @subscribe_key,
47
- 'spaces',
48
- @space_id
56
+ 'uuids',
57
+ Formatter.encode(@uuid)
49
58
  ].join('/')
50
59
  end
51
60
 
@@ -57,7 +66,7 @@ module Pubnub
57
66
 
58
67
  result: {
59
68
  code: req_res_objects[:response].code,
60
- operation: Pubnub::Constants::OPERATION_UPDATE_SPACE,
69
+ operation: current_operation,
61
70
  client_request: req_res_objects[:request],
62
71
  server_response: req_res_objects[:response],
63
72
  data: parsed_response
@@ -65,7 +74,7 @@ module Pubnub
65
74
 
66
75
  status: {
67
76
  code: req_res_objects[:response].code,
68
- operation: Pubnub::Constants::OPERATION_UPDATE_SPACE,
77
+ operation: current_operation,
69
78
  client_request: req_res_objects[:request],
70
79
  server_response: req_res_objects[:response],
71
80
  data: nil,
@@ -14,17 +14,7 @@ module Pubnub
14
14
  end
15
15
 
16
16
  def signature
17
- message = [
18
- @subscribe_key,
19
- @publish_key,
20
- path,
21
- variables_for_signature.gsub(/[!~'()*]/) { |char| '%' + char.ord.to_s(16).upcase }, # Replace ! ~ * ' ( )
22
- ].join("\n")
23
-
24
- Base64.urlsafe_encode64(
25
- OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'),
26
- @secret_key.to_s, message)
27
- ).strip
17
+ super_admin_signature("GET", nil)
28
18
  end
29
19
 
30
20
  def parameters(set_signature = false)
@@ -32,6 +22,7 @@ module Pubnub
32
22
  params['channel-group'] = @group.join(',') unless @group.blank?
33
23
  params[:timestamp] = @timestamp
34
24
  params[:channel] = @channel.join(',') unless @channel.first.blank?
25
+ params['target-uuid'] = @uuids.join(',') if !@uuids.nil? && !@uuids.first.blank?
35
26
  params[:signature] = signature unless set_signature
36
27
  params
37
28
  end
@@ -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
@@ -173,32 +173,36 @@ module Pubnub
173
173
  Pubnub::Constants::OPERATION_SIGNAL
174
174
  elsif message[:type] == 2
175
175
  case message[:payload]['type']
176
- when 'user'
176
+ when 'uuid'
177
177
  case message[:payload]['event']
178
- when 'create'
179
- Pubnub::Constants::OPERATION_CREATE_USER
180
- when 'update'
181
- Pubnub::Constants::OPERATION_UPDATE_USER
178
+ when 'set'
179
+ Pubnub::Constants::OPERATION_SET_UUID_METADATA
182
180
  when 'delete'
183
- Pubnub::Constants::OPERATION_DELETE_USER
181
+ Pubnub::Constants::OPERATION_REMOVE_UUID_METADATA
184
182
  else
185
- Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']}." }
186
- raise Exception, "Invalid event #{message[:payload]['event']}."
183
+ Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']} for uuid." }
184
+ raise Exception, "Invalid event #{message[:payload]['event']} for uuid."
187
185
  end
188
- when 'space'
186
+ when 'channel'
189
187
  case message[:payload]['event']
190
- when 'create'
191
- Pubnub::Constants::OPERATION_CREATE_SPACE
192
- when 'update'
193
- Pubnub::Constants::OPERATION_UPDATE_SPACE
188
+ when 'set'
189
+ Pubnub::Constants::OPERATION_SET_CHANNEL_METADATA
194
190
  when 'delete'
195
- Pubnub::Constants::OPERATION_DELETE_SPACE
191
+ Pubnub::Constants::OPERATION_REMOVE_CHANNEL_METADATA
196
192
  else
197
- Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']}." }
198
- raise Exception, "Invalid event #{message[:payload]['event']}."
193
+ Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']} for channel." }
194
+ raise Exception, "Invalid event #{message[:payload]['event']} for channel."
199
195
  end
200
196
  when 'membership'
201
- Pubnub::Constants::OPERATION_MANAGE_MEMBERSHIPS
197
+ case message[:payload]['event']
198
+ when 'set'
199
+ Pubnub::Constants::OPERATION_SET_MEMBERSHIPS
200
+ when 'delete'
201
+ Pubnub::Constants::OPERATION_REMOVE_MEMBERSHIPS
202
+ else
203
+ Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid event #{message[:payload]['event']} for membership." }
204
+ raise Exception, "Invalid event #{message[:payload]['event']} for membership."
205
+ end
202
206
  else
203
207
  Pubnub.logger.error('Pubnub::SubscribeEvent::Formatter') { "Invalid operation type #{message[:payload]['type']}." }
204
208
  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,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 @uuid.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