pubnub 4.2.5 → 4.5.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 (183) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.pubnub.yml +168 -117
  4. data/.travis.yml +13 -9
  5. data/CHANGELOG.md +31 -8
  6. data/Gemfile.lock +67 -64
  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/grant/1913.yml +1 -1
  14. data/fixtures/vcr_cassettes/examples/grant/1944.yml +8 -9
  15. data/fixtures/vcr_cassettes/examples/grant/1945.yml +359 -9
  16. data/fixtures/vcr_cassettes/examples/grant/1946.yml +8 -9
  17. data/fixtures/vcr_cassettes/examples/grant/1947.yml +8 -9
  18. data/fixtures/vcr_cassettes/examples/grant/1948.yml +8 -9
  19. data/fixtures/vcr_cassettes/examples/history/100.yml +46 -0
  20. data/fixtures/vcr_cassettes/examples/history/include_meta__encrypted.yml +46 -0
  21. data/fixtures/vcr_cassettes/examples/history/include_token__encrypted.yml +45 -0
  22. data/fixtures/vcr_cassettes/examples/history/no_includes__encrypted.yml +45 -0
  23. data/fixtures/vcr_cassettes/examples/list_push_provisions/001.yml +46 -0
  24. data/fixtures/vcr_cassettes/examples/list_push_provisions/002.yml +45 -0
  25. data/fixtures/vcr_cassettes/examples/list_push_provisions/003.yml +45 -0
  26. data/fixtures/vcr_cassettes/examples/remove_channels_from_push/001.yml +45 -0
  27. data/fixtures/vcr_cassettes/examples/remove_channels_from_push/002.yml +45 -0
  28. data/fixtures/vcr_cassettes/examples/remove_channels_from_push/003.yml +45 -0
  29. data/fixtures/vcr_cassettes/examples/remove_device_from_push/001.yml +45 -0
  30. data/fixtures/vcr_cassettes/examples/remove_device_from_push/002.yml +45 -0
  31. data/fixtures/vcr_cassettes/examples/remove_device_from_push/003.yml +45 -0
  32. data/fixtures/vcr_cassettes/lib/events/get_all_channels_metadata.yml +39 -0
  33. data/fixtures/vcr_cassettes/lib/events/get_all_uuid_metadata.yml +76 -0
  34. data/fixtures/vcr_cassettes/lib/events/get_channel_members.yml +37 -0
  35. data/fixtures/vcr_cassettes/lib/events/get_channel_metadata.yml +37 -0
  36. data/fixtures/vcr_cassettes/lib/events/get_memberships1.yml +37 -0
  37. data/fixtures/vcr_cassettes/lib/events/get_memberships2.yml +37 -0
  38. data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata1.yml +76 -0
  39. data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata2.yml +76 -0
  40. data/fixtures/vcr_cassettes/lib/events/grant-error.yml +2 -2
  41. data/fixtures/vcr_cassettes/lib/events/grant.yml +10 -11
  42. data/fixtures/vcr_cassettes/lib/events/remove_channel_members.yml +78 -0
  43. data/fixtures/vcr_cassettes/lib/events/{delete_space.yml → remove_channel_metadata.yml} +5 -6
  44. data/fixtures/vcr_cassettes/lib/events/{manage_memberships_remove.yml → remove_memberships1.yml} +8 -9
  45. data/fixtures/vcr_cassettes/lib/events/{manage_members_add.yml → remove_memberships2.yml} +8 -9
  46. data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata1.yml +76 -0
  47. data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata2.yml +76 -0
  48. data/fixtures/vcr_cassettes/lib/events/set_channel_members.yml +39 -0
  49. data/fixtures/vcr_cassettes/lib/events/set_channel_metadata.yml +39 -0
  50. data/fixtures/vcr_cassettes/lib/events/{manage_memberships_add.yml → set_memberships1.yml} +8 -9
  51. data/fixtures/vcr_cassettes/lib/events/set_memberships2.yml +39 -0
  52. data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata1.yml +78 -0
  53. data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata2.yml +78 -0
  54. data/fixtures/vcr_cassettes/lib/events/{subscribe-space-delete-async.yml → subscribe-channel-metadata-remove-sync.yml} +12 -14
  55. data/fixtures/vcr_cassettes/lib/events/subscribe-channel-metadata-set-async.yml +75 -0
  56. data/fixtures/vcr_cassettes/lib/events/{subscribe-member-remove-async.yml → subscribe-member-remove-sync.yml} +12 -14
  57. data/fixtures/vcr_cassettes/lib/events/subscribe-member-set-async.yml +75 -0
  58. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-remove-async.yml +12 -14
  59. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-update-async.yml → subscribe-membership-set-async.yml} +12 -14
  60. data/fixtures/vcr_cassettes/lib/events/{subscribe-user-delete-async.yml → subscribe-uuid-metadata-remove-sync.yml} +12 -14
  61. data/fixtures/vcr_cassettes/lib/events/subscribe-uuid-metadata-set-async.yml +75 -0
  62. data/lib/pubnub/client.rb +18 -15
  63. data/lib/pubnub/client/events.rb +4 -2
  64. data/lib/pubnub/client/paged_history.rb +1 -1
  65. data/lib/pubnub/constants.rb +19 -18
  66. data/lib/pubnub/event.rb +32 -16
  67. data/lib/pubnub/event/formatter.rb +4 -0
  68. data/lib/pubnub/event/signature.rb +22 -7
  69. data/lib/pubnub/events/add_channels_to_push.rb +29 -13
  70. data/lib/pubnub/events/get_all_channels_metadata.rb +104 -0
  71. data/lib/pubnub/events/get_all_uuid_metadata.rb +104 -0
  72. data/lib/pubnub/events/get_channel_members.rb +120 -0
  73. data/lib/pubnub/events/{update_space.rb → get_channel_metadata.rb} +27 -27
  74. data/lib/pubnub/events/get_memberships.rb +120 -0
  75. data/lib/pubnub/events/{create_space.rb → get_uuid_metadata.rb} +27 -25
  76. data/lib/pubnub/events/grant.rb +10 -1
  77. data/lib/pubnub/events/history.rb +17 -2
  78. data/lib/pubnub/events/list_push_provisions.rb +29 -12
  79. data/lib/pubnub/events/remove_channel_members.rb +137 -0
  80. data/lib/pubnub/events/{delete_space.rb → remove_channel_metadata.rb} +12 -12
  81. data/lib/pubnub/events/remove_channels_from_push.rb +29 -13
  82. data/lib/pubnub/events/remove_device_from_push.rb +30 -14
  83. data/lib/pubnub/events/remove_memberships.rb +137 -0
  84. data/lib/pubnub/events/{delete_user.rb → remove_uuid_metadata.rb} +12 -12
  85. data/lib/pubnub/events/set_channel_members.rb +140 -0
  86. data/lib/pubnub/events/{manage_members.rb → set_channel_metadata.rb} +32 -38
  87. data/lib/pubnub/events/set_memberships.rb +140 -0
  88. data/lib/pubnub/events/{create_user.rb → set_uuid_metadata.rb} +33 -17
  89. data/lib/pubnub/formatter.rb +30 -3
  90. data/lib/pubnub/pam.rb +2 -11
  91. data/lib/pubnub/subscribe_callback.rb +1 -3
  92. data/lib/pubnub/subscribe_event/formatter.rb +26 -17
  93. data/lib/pubnub/subscriber.rb +5 -6
  94. data/lib/pubnub/validators/add_channels_to_push.rb +52 -0
  95. data/lib/pubnub/validators/get_all_channels_metadata.rb +29 -0
  96. data/lib/pubnub/validators/get_all_uuid_metadata.rb +29 -0
  97. data/lib/pubnub/validators/get_channel_members.rb +39 -0
  98. data/lib/pubnub/validators/get_channel_metadata.rb +39 -0
  99. data/lib/pubnub/validators/get_memberships.rb +39 -0
  100. data/lib/pubnub/validators/get_uuid_metadata.rb +39 -0
  101. data/lib/pubnub/validators/grant.rb +37 -2
  102. data/lib/pubnub/validators/list_push_provisions.rb +43 -0
  103. data/lib/pubnub/validators/remove_channel_members.rb +52 -0
  104. data/lib/pubnub/validators/remove_channel_metadata.rb +39 -0
  105. data/lib/pubnub/validators/remove_channels_from_push.rb +52 -0
  106. data/lib/pubnub/validators/remove_device_from_push.rb +43 -0
  107. data/lib/pubnub/validators/remove_memberships.rb +52 -0
  108. data/lib/pubnub/validators/remove_uuid_metadata.rb +39 -0
  109. data/lib/pubnub/validators/set_channel_members.rb +78 -0
  110. data/lib/pubnub/validators/set_channel_metadata.rb +62 -0
  111. data/lib/pubnub/validators/set_memberships.rb +78 -0
  112. data/lib/pubnub/validators/set_uuid_metadata.rb +62 -0
  113. data/lib/pubnub/version.rb +1 -1
  114. data/pubnub.gemspec +1 -1
  115. data/spec/examples/add_channels_to_push_spec.rb +178 -0
  116. data/spec/examples/{grant_examples_spec.rb → grant_examples_1_spec.rb} +0 -8973
  117. data/spec/examples/grant_examples_2_spec.rb +9107 -0
  118. data/spec/examples/history_examples_spec.rb +85 -0
  119. data/spec/examples/list_push_provisions_spec.rb +164 -0
  120. data/spec/examples/presence_examples_spec.rb +222 -186
  121. data/spec/examples/remove_channels_from_push_spec.rb +164 -0
  122. data/spec/examples/remove_device_from_push_spec.rb +164 -0
  123. data/spec/examples/revoke_examples_1_spec.rb +27013 -0
  124. data/spec/examples/revoke_examples_2_spec.rb +27012 -0
  125. data/spec/examples/revoke_examples_3_spec.rb +17967 -0
  126. data/spec/examples/status_request_message_count_exceeded_spec.rb +4 -1
  127. data/spec/examples/subscribe_examples_1_spec.rb +26972 -0
  128. data/spec/examples/subscribe_examples_2_spec.rb +19575 -0
  129. data/spec/lib/connection_callback_spec.rb +4 -3
  130. data/spec/lib/event/formatter_spec.rb +22 -0
  131. data/spec/lib/events/channel_metadata_spec.rb +58 -0
  132. data/spec/lib/events/grant_spec.rb +3 -2
  133. data/spec/lib/events/membership_spec.rb +51 -21
  134. data/spec/lib/events/presence_delta_spec.rb +9 -6
  135. data/spec/lib/events/presence_spec.rb +13 -7
  136. data/spec/lib/events/subscribe_spec.rb +102 -65
  137. data/spec/lib/events/uuid_metadata_spec.rb +86 -0
  138. data/spec/lib/subscribe_event/formatter_spec.rb +22 -0
  139. data/spec/lib/super_admin_spec.rb +8 -4
  140. data/spec/spec_helper.rb +24 -8
  141. metadata +124 -79
  142. data/fixtures/vcr_cassettes/lib/events/create_space.yml +0 -40
  143. data/fixtures/vcr_cassettes/lib/events/create_user.yml +0 -40
  144. data/fixtures/vcr_cassettes/lib/events/delete_user.yml +0 -38
  145. data/fixtures/vcr_cassettes/lib/events/get_members.yml +0 -38
  146. data/fixtures/vcr_cassettes/lib/events/get_space.yml +0 -38
  147. data/fixtures/vcr_cassettes/lib/events/get_space_memberships.yml +0 -38
  148. data/fixtures/vcr_cassettes/lib/events/get_spaces.yml +0 -40
  149. data/fixtures/vcr_cassettes/lib/events/get_user.yml +0 -38
  150. data/fixtures/vcr_cassettes/lib/events/get_users.yml +0 -40
  151. data/fixtures/vcr_cassettes/lib/events/manage_members_remove.yml +0 -83
  152. data/fixtures/vcr_cassettes/lib/events/subscribe-member-add-async.yml +0 -77
  153. data/fixtures/vcr_cassettes/lib/events/subscribe-membership-add-async.yml +0 -77
  154. data/fixtures/vcr_cassettes/lib/events/subscribe-space-update-async.yml +0 -77
  155. data/fixtures/vcr_cassettes/lib/events/update_space.yml +0 -40
  156. data/fixtures/vcr_cassettes/lib/events/update_user.yml +0 -40
  157. data/lib/pubnub/events/get_members.rb +0 -93
  158. data/lib/pubnub/events/get_space.rb +0 -74
  159. data/lib/pubnub/events/get_space_memberships.rb +0 -93
  160. data/lib/pubnub/events/get_spaces.rb +0 -90
  161. data/lib/pubnub/events/get_user.rb +0 -74
  162. data/lib/pubnub/events/get_users.rb +0 -90
  163. data/lib/pubnub/events/manage_memberships.rb +0 -105
  164. data/lib/pubnub/events/update_user.rb +0 -86
  165. data/lib/pubnub/validators/create_space.rb +0 -44
  166. data/lib/pubnub/validators/create_user.rb +0 -44
  167. data/lib/pubnub/validators/delete_space.rb +0 -32
  168. data/lib/pubnub/validators/delete_user.rb +0 -32
  169. data/lib/pubnub/validators/get_members.rb +0 -32
  170. data/lib/pubnub/validators/get_space.rb +0 -32
  171. data/lib/pubnub/validators/get_space_memberships.rb +0 -32
  172. data/lib/pubnub/validators/get_spaces.rb +0 -16
  173. data/lib/pubnub/validators/get_user.rb +0 -32
  174. data/lib/pubnub/validators/get_users.rb +0 -16
  175. data/lib/pubnub/validators/manage_members.rb +0 -45
  176. data/lib/pubnub/validators/manage_memberships.rb +0 -45
  177. data/lib/pubnub/validators/push.rb +0 -43
  178. data/lib/pubnub/validators/update_space.rb +0 -45
  179. data/lib/pubnub/validators/update_user.rb +0 -45
  180. data/spec/examples/revoke_examples_spec.rb +0 -71950
  181. data/spec/examples/subscribe_examples_spec.rb +0 -45184
  182. data/spec/lib/events/space_spec.rb +0 -75
  183. data/spec/lib/events/user_spec.rb +0 -75
@@ -6,8 +6,9 @@ module Pubnub
6
6
  include Pubnub::Validator::Grant
7
7
 
8
8
  def initialize(options, app)
9
- @event = :grant
9
+ @event = current_operation
10
10
  super
11
+ @uuids = Formatter::format_uuid(options[:uuids]) unless options[:uuids].nil?
11
12
  @ttl ||= Pubnub::Constants::DEFAULT_TTL
12
13
  end
13
14
 
@@ -21,11 +22,19 @@ module Pubnub
21
22
  write = [0, '0', false].include?(@write) ? 0 : 1
22
23
  read = [0, '0', false].include?(@read) ? 0 : 1
23
24
  manage = [0, '0', false].include?(@manage) ? 0 : 1 # unless @group.blank?
25
+ delete = [0, '0', false].include?(@delete) ? 0 : 1 unless @delete.nil?
26
+ get = [0, '0', false].include?(@get) ? 0 : 1 unless @get.nil?
27
+ update = [0, '0', false].include?(@update) ? 0 : 1 unless @update.nil?
28
+ join = [0, '0', false].include?(@join) ? 0 : 1 unless @join.nil?
24
29
 
25
30
  { timestamp: @timestamp,
26
31
  w: write,
27
32
  r: read,
28
33
  m: manage,
34
+ d: delete,
35
+ g: get,
36
+ u: update,
37
+ j: join,
29
38
  ttl: @ttl }.delete_if { |_k, v| v.nil? }.merge(super(signature))
30
39
  end
31
40
 
@@ -21,8 +21,12 @@ module Pubnub
21
21
  message['timetoken'] if @include_token
22
22
  end
23
23
 
24
+ def meta(message)
25
+ message['meta'] if @include_meta
26
+ end
27
+
24
28
  def message(message)
25
- if @include_token
29
+ if @include_token || @include_meta
26
30
  message['message']
27
31
  else
28
32
  message
@@ -53,16 +57,27 @@ module Pubnub
53
57
  params[:count] = @count if @count
54
58
  params[:reverse] = 'true' if @reverse
55
59
  params[:include_token] = 'true' if @include_token
60
+ params[:include_meta] = 'true' if @include_meta
56
61
  params
57
62
  end
58
63
 
64
+ def decrypt_history(message, crypto)
65
+ if @include_token || @include_meta
66
+ message['message'] = JSON.parse(crypto.decrypt(message['message']), quirks_mode: true)
67
+
68
+ message
69
+ else
70
+ JSON.parse(crypto.decrypt(message), quirks_mode: true)
71
+ end
72
+ end
73
+
59
74
  def valid_envelope(parsed_response, req_res_objects)
60
75
  messages = parsed_response[0]
61
76
 
62
77
  if (@cipher_key || @app.env[:cipher_key] || @cipher_key_selector || @app.env[:cipher_key_selector]) && messages
63
78
  cipher_key = compute_cipher_key(parsed_response)
64
79
  crypto = Crypto.new(cipher_key)
65
- messages = messages.map { |message| JSON.parse(crypto.decrypt(message), quirks_mode: true) }
80
+ messages = messages.map { |message| decrypt_history(message, crypto) }
66
81
  end
67
82
 
68
83
  start = parsed_response[1]
@@ -3,12 +3,14 @@ module Pubnub
3
3
  # Push related event
4
4
  class ListPushProvisions < SingleEvent
5
5
  include Concurrent::Async
6
- include Pubnub::Validator::Push
6
+ include Pubnub::Validator::ListPushProvisions
7
7
 
8
8
  def initialize(options, app)
9
- super
10
9
  @event = current_operation
11
- @params = @given_options
10
+ @telemetry_name = :l_push
11
+ super
12
+ # `environment` should
13
+ @environment ||= 'development' if @push_gateway.eql? 'apns2'
12
14
  end
13
15
 
14
16
  private
@@ -24,19 +26,33 @@ module Pubnub
24
26
  end
25
27
 
26
28
  def path
27
- '/' + [
28
- 'v1',
29
- 'push',
30
- 'sub-key',
31
- @subscribe_key,
32
- 'devices',
33
- @params.fetch(:push_token)
34
- ].join('/')
29
+ if @push_gateway.eql? 'apns2'
30
+ '/' + [
31
+ 'v2',
32
+ 'push',
33
+ 'sub-key',
34
+ @subscribe_key,
35
+ 'devices-apns2',
36
+ @push_token
37
+ ].join('/')
38
+ else
39
+ '/' + [
40
+ 'v1',
41
+ 'push',
42
+ 'sub-key',
43
+ @subscribe_key,
44
+ 'devices',
45
+ @push_token
46
+ ].join('/')
47
+ end
35
48
  end
36
49
 
37
50
  def parameters(*_args)
38
51
  params = super
39
- params.merge!(@params.select { |p, _| required_params.include?(p) })
52
+ # Only include `type` if gateway is other than apns2
53
+ params[:type] = @push_gateway unless @push_gateway.eql? 'apns2'
54
+ params[:environment] = @environment if @push_gateway.eql? 'apns2'
55
+ params[:topic] = @topic if @push_gateway.eql? 'apns2'
40
56
  params
41
57
  end
42
58
 
@@ -47,6 +63,7 @@ module Pubnub
47
63
  timetoken: nil,
48
64
  status: {
49
65
  code: req_res_objects[:response].code,
66
+ operation: current_operation,
50
67
  client_request: req_res_objects[:request],
51
68
  server_response: req_res_objects[:response],
52
69
 
@@ -0,0 +1,137 @@
1
+ # Toplevel Pubnub module.
2
+ # frozen_string_literal: true
3
+
4
+ module Pubnub
5
+ # Holds RemoveChannelMembers functionality
6
+ class RemoveChannelMembers < SingleEvent
7
+ include Concurrent::Async
8
+ include Pubnub::Validator::RemoveChannelMembers
9
+
10
+ def initialize(options, app)
11
+ @event = current_operation
12
+ @telemetry_name = :l_obj
13
+ @channel = options[:channel]
14
+ @limit = [options[:limit], 100].min unless options[:limit].nil?
15
+ @sort = options[:sort].join(",") if options[:sort] && !options[:sort].empty?
16
+ @filter = options[:filter] if options[:filter] && !options[:filter].empty?
17
+ @start = options[:start] if options[:start] && !options[:start].empty?
18
+ @end = options[:end] if options[:start] && !options[:end].empty?
19
+
20
+ if options[:include]
21
+ include = options[:include]
22
+ @include_count = [0, '0', false].include?(include[:count]) ? "0" : "1" unless include[:count].nil?
23
+ @include_custom = "custom" if !include[:custom].nil? && ![0, '0', false].include?(include[:custom])
24
+ @include_uuid_metadata = "uuid" if !include[:uuid_metadata].nil? && ![0, '0', false].include?(include[:uuid_metadata])
25
+ @include_uuid_custom = "uuid.custom" if !include[:uuid_custom].nil? && ![0, '0', false].include?(include[:uuid_custom])
26
+
27
+ @include = [@include_custom, @include_uuid_metadata, @include_uuid_custom].reject { |flag| flag.to_s.empty? }
28
+ end
29
+
30
+ @uuids = options[:uuids] if options[:uuids] && !options[:uuids].empty?
31
+
32
+ # Collections by default return number of available entries.
33
+ @include_count = "1" if @include_count.nil?
34
+
35
+ super
36
+ end
37
+
38
+ def fire
39
+ Pubnub.logger.debug('Pubnub::RemoveChannelMembers') { "Fired event #{self.class}" }
40
+
41
+ members = @uuids.map do |member|
42
+ { uuid: { id: member } }
43
+ end
44
+
45
+ body = Formatter.format_message({ delete: members }, @cipher_key, false)
46
+ response = send_request(body)
47
+
48
+ envelopes = fire_callbacks(handle(response, uri))
49
+ finalize_event(envelopes)
50
+ envelopes
51
+ end
52
+
53
+ private
54
+
55
+ def current_operation
56
+ Pubnub::Constants::OPERATION_REMOVE_CHANNEL_MEMBERS
57
+ end
58
+
59
+ def parameters(signature = false)
60
+ parameters = super(signature)
61
+ parameters[:limit] = @limit unless @limit.nil?
62
+ parameters[:sort] = @sort unless @sort.nil?
63
+ parameters[:filter] = @filter unless @filter.nil?
64
+ parameters[:start] = @start unless @start.nil?
65
+ parameters[:end] = @end if @end && !@start
66
+ parameters[:count] = @include_count unless @include_count.nil?
67
+ parameters[:include] = @include.sort.join(",") if @include && !@include.empty?
68
+
69
+ parameters
70
+ end
71
+
72
+ def path
73
+ '/' + [
74
+ 'v2',
75
+ 'objects',
76
+ @subscribe_key,
77
+ 'channels',
78
+ Formatter.channels_for_url(@channel),
79
+ 'uuids'
80
+ ].join('/')
81
+ end
82
+
83
+ def valid_envelope(parsed_response, req_res_objects)
84
+ members = parsed_response['data'].map { |channel_member|
85
+ member = Hash.new
86
+ channel_member.each{ |k,v| member[k.to_sym] = v }
87
+
88
+ unless member[:uuid].nil?
89
+ uuid_metadata = Hash.new
90
+ member[:uuid].each{ |k,v| uuid_metadata[k.to_sym] = v }
91
+ uuid_metadata[:updated] = Date._parse(uuid_metadata[:updated]) unless uuid_metadata[:updated].nil?
92
+ member[:uuid] = uuid_metadata
93
+ end
94
+ member[:updated] = Date._parse(member[:updated]) unless member[:updated].nil?
95
+
96
+ member
97
+ }
98
+
99
+ Pubnub::Envelope.new(
100
+ event: @event,
101
+ event_options: @given_options,
102
+ timetoken: nil,
103
+
104
+ result: {
105
+ code: req_res_objects[:response].code,
106
+ operation: current_operation,
107
+ client_request: req_res_objects[:request],
108
+ server_response: req_res_objects[:response],
109
+ data: {
110
+ members: members,
111
+ totalCount: parsed_response['totalCount'],
112
+ next: parsed_response['next'],
113
+ prev: parsed_response['prev']
114
+ }
115
+ },
116
+
117
+ status: {
118
+ code: req_res_objects[:response].code,
119
+ operation: current_operation,
120
+ client_request: req_res_objects[:request],
121
+ server_response: req_res_objects[:response],
122
+ data: nil,
123
+ category: Pubnub::Constants::STATUS_ACK,
124
+ error: false,
125
+ auto_retried: false,
126
+
127
+ current_timetoken: nil,
128
+ last_timetoken: nil,
129
+ subscribed_channels: nil,
130
+ subscribed_channel_groups: nil,
131
+
132
+ config: get_config
133
+ }
134
+ )
135
+ end
136
+ end
137
+ end
@@ -2,20 +2,20 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Pubnub
5
- # Holds DeleteSpace functionality
6
- class DeleteSpace < SingleEvent
5
+ # Holds RemoveChannelMetadata functionality
6
+ class RemoveChannelMetadata < SingleEvent
7
7
  include Concurrent::Async
8
- include Pubnub::Validator::DeleteSpace
8
+ include Pubnub::Validator::RemoveChannelMetadata
9
9
 
10
10
  def initialize(options, app)
11
- @event = :delete_space
11
+ @event = :remove_channel_metadata
12
12
  @telemetry_name = :l_obj
13
- @space_id = options[:space_id]
13
+ @channel = options[:channel]
14
14
  super
15
15
  end
16
16
 
17
17
  def fire
18
- Pubnub.logger.debug('Pubnub::DeleteSpace') { "Fired event #{self.class}" }
18
+ Pubnub.logger.debug('Pubnub::RemoveChannelMetadata') { "Fired event #{self.class}" }
19
19
 
20
20
  body = Formatter.format_message(@data, @cipher_key, false)
21
21
  response = send_request(body)
@@ -28,16 +28,16 @@ module Pubnub
28
28
  private
29
29
 
30
30
  def current_operation
31
- Pubnub::Constants::OPERATION_DELETE_SPACE
31
+ Pubnub::Constants::OPERATION_REMOVE_CHANNEL_METADATA
32
32
  end
33
33
 
34
34
  def path
35
35
  '/' + [
36
- 'v1',
36
+ 'v2',
37
37
  'objects',
38
38
  @subscribe_key,
39
- 'spaces',
40
- @space_id
39
+ 'channels',
40
+ Formatter.channels_for_url(@channel)
41
41
  ].join('/')
42
42
  end
43
43
 
@@ -49,7 +49,7 @@ module Pubnub
49
49
 
50
50
  result: {
51
51
  code: req_res_objects[:response].code,
52
- operation: Pubnub::Constants::OPERATION_DELETE_SPACE,
52
+ operation: current_operation,
53
53
  client_request: req_res_objects[:request],
54
54
  server_response: req_res_objects[:response],
55
55
  data: parsed_response
@@ -57,7 +57,7 @@ module Pubnub
57
57
 
58
58
  status: {
59
59
  code: req_res_objects[:response].code,
60
- operation: Pubnub::Constants::OPERATION_DELETE_SPACE,
60
+ operation: current_operation,
61
61
  client_request: req_res_objects[:request],
62
62
  server_response: req_res_objects[:response],
63
63
  data: nil,
@@ -3,13 +3,14 @@ module Pubnub
3
3
  # Push related event
4
4
  class RemoveChannelsFromPush < SingleEvent
5
5
  include Concurrent::Async
6
- include Pubnub::Validator::Push
6
+ include Pubnub::Validator::RemoveChannelsFromPush
7
7
 
8
8
  def initialize(options, app)
9
- super
10
9
  @event = current_operation
11
- @params = @given_options
12
- @auth_key = options[:auth_key]
10
+ @telemetry_name = :l_push
11
+ super
12
+ # `environment` should
13
+ @environment ||= 'development' if @push_gateway.eql? 'apns2'
13
14
  end
14
15
 
15
16
  private
@@ -25,19 +26,33 @@ module Pubnub
25
26
  end
26
27
 
27
28
  def path
28
- '/' + [
29
- 'v1',
30
- 'push',
31
- 'sub-key',
32
- @subscribe_key,
33
- 'devices',
34
- @params.fetch(:push_token)
35
- ].join('/')
29
+ if @push_gateway.eql? 'apns2'
30
+ '/' + [
31
+ 'v2',
32
+ 'push',
33
+ 'sub-key',
34
+ @subscribe_key,
35
+ 'devices-apns2',
36
+ @push_token
37
+ ].join('/')
38
+ else
39
+ '/' + [
40
+ 'v1',
41
+ 'push',
42
+ 'sub-key',
43
+ @subscribe_key,
44
+ 'devices',
45
+ @push_token
46
+ ].join('/')
47
+ end
36
48
  end
37
49
 
38
50
  def parameters(*_args)
39
51
  params = super
40
- params.merge!(@params.select { |p, _| required_params.include?(p) })
52
+ params[:remove] = Formatter.channels_for_url(@channel, false)
53
+ params[:type] = @push_gateway unless @push_gateway.eql? 'apns2'
54
+ params[:environment] = @environment if @push_gateway.eql? 'apns2'
55
+ params[:topic] = @topic if @push_gateway.eql? 'apns2'
41
56
  params
42
57
  end
43
58
 
@@ -48,6 +63,7 @@ module Pubnub
48
63
  timetoken: nil,
49
64
  status: {
50
65
  code: req_res_objects[:response].code,
66
+ operation: current_operation,
51
67
  client_request: req_res_objects[:request],
52
68
  server_response: req_res_objects[:response],
53
69
 
@@ -3,12 +3,14 @@ module Pubnub
3
3
  # Push related event
4
4
  class RemoveDeviceFromPush < SingleEvent
5
5
  include Concurrent::Async
6
- include Pubnub::Validator::Push
6
+ include Pubnub::Validator::RemoveDeviceFromPush
7
7
 
8
8
  def initialize(options, app)
9
- super
10
9
  @event = current_operation
11
- @params = @given_options
10
+ @telemetry_name = :l_push
11
+ super
12
+ # `environment` should
13
+ @environment ||= 'development' if @push_gateway.eql? 'apns2'
12
14
  end
13
15
 
14
16
  private
@@ -24,21 +26,34 @@ module Pubnub
24
26
  end
25
27
 
26
28
  def path
27
- '/' + [
28
- 'v1',
29
- 'push',
30
- 'sub-key',
31
- @subscribe_key,
32
- 'devices',
33
- @params.fetch(:push_token),
34
- 'remove'
35
- ].join('/')
29
+ if @push_gateway.eql? 'apns2'
30
+ '/' + [
31
+ 'v2',
32
+ 'push',
33
+ 'sub-key',
34
+ @subscribe_key,
35
+ 'devices-apns2',
36
+ @push_token,
37
+ 'remove'
38
+ ].join('/')
39
+ else
40
+ '/' + [
41
+ 'v1',
42
+ 'push',
43
+ 'sub-key',
44
+ @subscribe_key,
45
+ 'devices',
46
+ @push_token,
47
+ 'remove'
48
+ ].join('/')
49
+ end
36
50
  end
37
51
 
38
52
  def parameters(*_args)
39
53
  params = super
40
- params.merge!(@params.select { |p, _| required_params.include?(p) })
41
- params[:uuid] = @params[:uuid] if @params.key?(:uuid)
54
+ params[:type] = @push_gateway unless @push_gateway.eql? 'apns2'
55
+ params[:environment] = @environment if @push_gateway.eql? 'apns2'
56
+ params[:topic] = @topic if @push_gateway.eql? 'apns2'
42
57
  params
43
58
  end
44
59
 
@@ -49,6 +64,7 @@ module Pubnub
49
64
  timetoken: nil,
50
65
  status: {
51
66
  code: req_res_objects[:response].code,
67
+ operation: current_operation,
52
68
  client_request: req_res_objects[:request],
53
69
  server_response: req_res_objects[:response],
54
70