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
@@ -1,40 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: patch
5
- uri: http://ps.pndsn.com/v1/objects/demo/users/mg?auth=ruby-test-auth&include=custom&pnsdk=PubNub-Ruby/4.2.0&uuid=ruby-test-uuid
6
- body:
7
- encoding: UTF-8
8
- string: '{"id":"mg","name":"magnum_1","custom":{"XXX":"YYYY"}}'
9
- headers:
10
- User-Agent:
11
- - HTTPClient/1.0 (2.8.3, ruby 2.6.3 (2019-04-16))
12
- Accept:
13
- - "*/*"
14
- Date:
15
- - Fri, 25 Oct 2019 20:36:54 GMT
16
- Content-Type:
17
- - application/x-www-form-urlencoded
18
- response:
19
- status:
20
- code: 200
21
- message: OK
22
- headers:
23
- Date:
24
- - Fri, 25 Oct 2019 20:36:57 GMT
25
- Content-Type:
26
- - application/json
27
- Content-Length:
28
- - '228'
29
- Connection:
30
- - keep-alive
31
- Access-Control-Allow-Origin:
32
- - "*"
33
- Access-Control-Allow-Credentials:
34
- - 'true'
35
- body:
36
- encoding: UTF-8
37
- string: '{"status":200,"data":{"id":"mg","name":"magnum_1","externalId":null,"profileUrl":null,"email":null,"custom":{"XXX":"YYYY"},"created":"2019-10-25T20:36:57.254813Z","updated":"2019-10-25T20:36:57.561462Z","eTag":"AYD0rZeD55aIMA"}}'
38
- http_version:
39
- recorded_at: Fri, 25 Oct 2019 20:36:54 GMT
40
- recorded_with: VCR 5.0.0
@@ -1,84 +0,0 @@
1
- # Toplevel Pubnub module.
2
- # frozen_string_literal: true
3
-
4
- module Pubnub
5
- # Holds CreateUser functionality
6
- class CreateUser < SingleEvent
7
- include Concurrent::Async
8
- include Pubnub::Validator::CreateUser
9
-
10
- def initialize(options, app)
11
- @event = :create_user
12
- @telemetry_name = :l_obj
13
- @data = options[:data]
14
- @include = options[:include]
15
- super
16
- end
17
-
18
- def fire
19
- Pubnub.logger.debug('Pubnub::CreateUser') { "Fired event #{self.class}" }
20
-
21
- body = Formatter.format_message(@data, @cipher_key, false)
22
- response = send_request(body)
23
-
24
- envelopes = fire_callbacks(handle(response, uri))
25
- finalize_event(envelopes)
26
- envelopes
27
- end
28
-
29
- private
30
-
31
- def current_operation
32
- Pubnub::Constants::OPERATION_CREATE_USER
33
- end
34
-
35
- def parameters(*_args)
36
- parameters = super
37
- parameters[:include] = @include if @include
38
- parameters
39
- end
40
-
41
- def path
42
- '/' + [
43
- 'v1',
44
- 'objects',
45
- @subscribe_key,
46
- 'users'
47
- ].join('/')
48
- end
49
-
50
- def valid_envelope(parsed_response, req_res_objects)
51
- Pubnub::Envelope.new(
52
- event: @event,
53
- event_options: @given_options,
54
- timetoken: nil,
55
-
56
- result: {
57
- code: req_res_objects[:response].code,
58
- operation: Pubnub::Constants::OPERATION_CREATE_USER,
59
- client_request: req_res_objects[:request],
60
- server_response: req_res_objects[:response],
61
- data: parsed_response
62
- },
63
-
64
- status: {
65
- code: req_res_objects[:response].code,
66
- operation: Pubnub::Constants::OPERATION_CREATE_USER,
67
- client_request: req_res_objects[:request],
68
- server_response: req_res_objects[:response],
69
- data: nil,
70
- category: Pubnub::Constants::STATUS_ACK,
71
- error: false,
72
- auto_retried: false,
73
-
74
- current_timetoken: nil,
75
- last_timetoken: nil,
76
- subscribed_channels: nil,
77
- subscribed_channel_groups: nil,
78
-
79
- config: get_config
80
- }
81
- )
82
- end
83
- end
84
- end
@@ -1,93 +0,0 @@
1
- # Toplevel Pubnub module.
2
- # frozen_string_literal: true
3
-
4
- module Pubnub
5
- # Holds GetMembers functionality
6
- class GetMembers < SingleEvent
7
- include Concurrent::Async
8
- include Pubnub::Validator::GetMembers
9
- @max_limit = 100
10
-
11
- def initialize(options, app)
12
- @event = :get_members
13
- @telemetry_name = :l_obj
14
- @start = options[:start]
15
- @end = if options[:end].nil?
16
- @max_limit
17
- else
18
- @end = options[:end]
19
- end
20
- @limit = options[:limit]
21
- @count = if options[:count].nil?
22
- false
23
- else
24
- options[:count]
25
- end
26
- @include = options[:include]
27
- @space_id = options[:space_id]
28
- super
29
- end
30
-
31
- private
32
-
33
- def current_operation
34
- Pubnub::Constants::OPERATION_GET_MEMBERS
35
- end
36
-
37
- def parameters(*_args)
38
- parameters = super
39
- parameters[:start] = @start if @start
40
- parameters[:end] = @end if @end && !@start
41
- parameters[:count] = @count if @count
42
- parameters[:limit] = @limit if @limit && @limit != @max_limit
43
- parameters[:include] = @include if @include
44
-
45
- parameters
46
- end
47
-
48
- def path
49
- '/' + [
50
- 'v1',
51
- 'objects',
52
- @subscribe_key,
53
- 'spaces',
54
- @space_id,
55
- 'users'
56
- ].join('/')
57
- end
58
-
59
- def valid_envelope(parsed_response, req_res_objects)
60
- Pubnub::Envelope.new(
61
- event: @event,
62
- event_options: @given_options,
63
- timetoken: nil,
64
-
65
- result: {
66
- code: req_res_objects[:response].code,
67
- operation: Pubnub::Constants::OPERATION_GET_MEMBERS,
68
- client_request: req_res_objects[:request],
69
- server_response: req_res_objects[:response],
70
- data: parsed_response
71
- },
72
-
73
- status: {
74
- code: req_res_objects[:response].code,
75
- operation: Pubnub::Constants::OPERATION_GET_MEMBERS,
76
- client_request: req_res_objects[:request],
77
- server_response: req_res_objects[:response],
78
- data: nil,
79
- category: Pubnub::Constants::STATUS_ACK,
80
- error: false,
81
- auto_retried: false,
82
-
83
- current_timetoken: nil,
84
- last_timetoken: nil,
85
- subscribed_channels: nil,
86
- subscribed_channel_groups: nil,
87
-
88
- config: get_config
89
- }
90
- )
91
- end
92
- end
93
- end
@@ -1,93 +0,0 @@
1
- # Toplevel Pubnub module.
2
- # frozen_string_literal: true
3
-
4
- module Pubnub
5
- # Holds GetSpaceMemberships functionality
6
- class GetSpaceMemberships < SingleEvent
7
- include Concurrent::Async
8
- include Pubnub::Validator::GetSpaceMemberships
9
- @max_limit = 100
10
-
11
- def initialize(options, app)
12
- @event = :get_space_memberships
13
- @telemetry_name = :l_obj
14
- @start = options[:start]
15
- @end = if options[:end].nil?
16
- @max_limit
17
- else
18
- @end = options[:end]
19
- end
20
- @limit = options[:limit]
21
- @count = if options[:count].nil?
22
- false
23
- else
24
- options[:count]
25
- end
26
- @include = options[:include]
27
- @user_id = options[:user_id]
28
- super
29
- end
30
-
31
- private
32
-
33
- def current_operation
34
- Pubnub::Constants::OPERATION_GET_SPACE_MEMBERSHIPS
35
- end
36
-
37
- def parameters(*_args)
38
- parameters = super
39
- parameters[:start] = @start if @start
40
- parameters[:end] = @end if @end && !@start
41
- parameters[:count] = @count if @count
42
- parameters[:limit] = @limit if @limit && @limit != @max_limit
43
- parameters[:include] = @include if @include
44
-
45
- parameters
46
- end
47
-
48
- def path
49
- '/' + [
50
- 'v1',
51
- 'objects',
52
- @subscribe_key,
53
- 'users',
54
- @user_id,
55
- 'spaces'
56
- ].join('/')
57
- end
58
-
59
- def valid_envelope(parsed_response, req_res_objects)
60
- Pubnub::Envelope.new(
61
- event: @event,
62
- event_options: @given_options,
63
- timetoken: nil,
64
-
65
- result: {
66
- code: req_res_objects[:response].code,
67
- operation: Pubnub::Constants::OPERATION_GET_SPACE_MEMBERSHIPS,
68
- client_request: req_res_objects[:request],
69
- server_response: req_res_objects[:response],
70
- data: parsed_response
71
- },
72
-
73
- status: {
74
- code: req_res_objects[:response].code,
75
- operation: Pubnub::Constants::OPERATION_GET_SPACE_MEMBERSHIPS,
76
- client_request: req_res_objects[:request],
77
- server_response: req_res_objects[:response],
78
- data: nil,
79
- category: Pubnub::Constants::STATUS_ACK,
80
- error: false,
81
- auto_retried: false,
82
-
83
- current_timetoken: nil,
84
- last_timetoken: nil,
85
- subscribed_channels: nil,
86
- subscribed_channel_groups: nil,
87
-
88
- config: get_config
89
- }
90
- )
91
- end
92
- end
93
- end
@@ -1,90 +0,0 @@
1
- # Toplevel Pubnub module.
2
- # frozen_string_literal: true
3
-
4
- module Pubnub
5
- # Holds GetSpaces functionality
6
- class GetSpaces < SingleEvent
7
- include Concurrent::Async
8
- include Pubnub::Validator::GetSpaces
9
- @max_limit = 100
10
-
11
- def initialize(options, app)
12
- @event = :get_spaces
13
- @telemetry_name = :l_obj
14
- @start = options[:start]
15
- @end = if options[:end].nil?
16
- @max_limit
17
- else
18
- @end = options[:end]
19
- end
20
- @limit = options[:limit]
21
- @count = if options[:count].nil?
22
- false
23
- else
24
- options[:count]
25
- end
26
- @include = options[:include]
27
- super
28
- end
29
-
30
- private
31
-
32
- def current_operation
33
- Pubnub::Constants::OPERATION_GET_SPACES
34
- end
35
-
36
- def parameters(*_args)
37
- parameters = super
38
- parameters[:start] = @start if @start
39
- parameters[:end] = @end if @end && !@start
40
- parameters[:count] = @count if @count
41
- parameters[:limit] = @limit if @limit && @limit != @max_limit
42
- parameters[:include] = @include if @include
43
-
44
- parameters
45
- end
46
-
47
- def path
48
- '/' + [
49
- 'v1',
50
- 'objects',
51
- @subscribe_key,
52
- 'spaces'
53
- ].join('/')
54
- end
55
-
56
- def valid_envelope(parsed_response, req_res_objects)
57
- Pubnub::Envelope.new(
58
- event: @event,
59
- event_options: @given_options,
60
- timetoken: nil,
61
-
62
- result: {
63
- code: req_res_objects[:response].code,
64
- operation: Pubnub::Constants::OPERATION_GET_SPACES,
65
- client_request: req_res_objects[:request],
66
- server_response: req_res_objects[:response],
67
- data: parsed_response
68
- },
69
-
70
- status: {
71
- code: req_res_objects[:response].code,
72
- operation: Pubnub::Constants::OPERATION_GET_SPACES,
73
- client_request: req_res_objects[:request],
74
- server_response: req_res_objects[:response],
75
- data: nil,
76
- category: Pubnub::Constants::STATUS_ACK,
77
- error: false,
78
- auto_retried: false,
79
-
80
- current_timetoken: nil,
81
- last_timetoken: nil,
82
- subscribed_channels: nil,
83
- subscribed_channel_groups: nil,
84
-
85
- config: get_config
86
- }
87
- )
88
- end
89
- end
90
- end
@@ -1,90 +0,0 @@
1
- # Toplevel Pubnub module.
2
- # frozen_string_literal: true
3
-
4
- module Pubnub
5
- # Holds GetUsers functionality
6
- class GetUsers < SingleEvent
7
- include Concurrent::Async
8
- include Pubnub::Validator::GetUsers
9
- @max_limit = 100
10
-
11
- def initialize(options, app)
12
- @event = :get_users
13
- @telemetry_name = :l_obj
14
- @start = options[:start]
15
- @end = if options[:end].nil?
16
- @max_limit
17
- else
18
- @end = options[:end]
19
- end
20
- @limit = options[:limit]
21
- @count = if options[:count].nil?
22
- false
23
- else
24
- options[:count]
25
- end
26
- @include = options[:include]
27
- super
28
- end
29
-
30
- private
31
-
32
- def current_operation
33
- Pubnub::Constants::OPERATION_GET_USERS
34
- end
35
-
36
- def parameters(*_args)
37
- parameters = super
38
- parameters[:start] = @start if @start
39
- parameters[:end] = @end if @end && !@start
40
- parameters[:count] = @count if @count
41
- parameters[:limit] = @limit if @limit && @limit != @max_limit
42
- parameters[:include] = @include if @include
43
-
44
- parameters
45
- end
46
-
47
- def path
48
- '/' + [
49
- 'v1',
50
- 'objects',
51
- @subscribe_key,
52
- 'users'
53
- ].join('/')
54
- end
55
-
56
- def valid_envelope(parsed_response, req_res_objects)
57
- Pubnub::Envelope.new(
58
- event: @event,
59
- event_options: @given_options,
60
- timetoken: nil,
61
-
62
- result: {
63
- code: req_res_objects[:response].code,
64
- operation: Pubnub::Constants::OPERATION_GET_USERS,
65
- client_request: req_res_objects[:request],
66
- server_response: req_res_objects[:response],
67
- data: parsed_response
68
- },
69
-
70
- status: {
71
- code: req_res_objects[:response].code,
72
- operation: Pubnub::Constants::OPERATION_GET_USERS,
73
- client_request: req_res_objects[:request],
74
- server_response: req_res_objects[:response],
75
- data: nil,
76
- category: Pubnub::Constants::STATUS_ACK,
77
- error: false,
78
- auto_retried: false,
79
-
80
- current_timetoken: nil,
81
- last_timetoken: nil,
82
- subscribed_channels: nil,
83
- subscribed_channel_groups: nil,
84
-
85
- config: get_config
86
- }
87
- )
88
- end
89
- end
90
- end