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.
- checksums.yaml +4 -4
- data/.pubnub.yml +32 -24
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/VERSION +1 -1
- data/fixtures/vcr_cassettes/examples/grant/1913.yml +1 -1
- data/fixtures/vcr_cassettes/examples/grant/1945.yml +355 -4
- data/fixtures/vcr_cassettes/lib/events/get_all_channels_metadata.yml +39 -0
- data/fixtures/vcr_cassettes/lib/events/get_all_uuid_metadata.yml +76 -0
- data/fixtures/vcr_cassettes/lib/events/{get_space_memberships.yml → get_channel_members.yml} +5 -6
- data/fixtures/vcr_cassettes/lib/events/get_channel_metadata.yml +37 -0
- data/fixtures/vcr_cassettes/lib/events/{get_members.yml → get_memberships.yml} +10 -11
- data/fixtures/vcr_cassettes/lib/events/get_uuid_metadata.yml +76 -0
- data/fixtures/vcr_cassettes/lib/events/grant-error.yml +2 -2
- data/fixtures/vcr_cassettes/lib/events/grant.yml +10 -11
- data/fixtures/vcr_cassettes/lib/events/remove_channel_members.yml +78 -0
- data/fixtures/vcr_cassettes/lib/events/{delete_space.yml → remove_channel_metadata.yml} +5 -6
- data/fixtures/vcr_cassettes/lib/events/{manage_memberships_remove.yml → remove_memberships.yml} +8 -9
- data/fixtures/vcr_cassettes/lib/events/remove_uuid_metadata.yml +76 -0
- data/fixtures/vcr_cassettes/lib/events/set_channel_members.yml +39 -0
- data/fixtures/vcr_cassettes/lib/events/set_channel_metadata.yml +39 -0
- data/fixtures/vcr_cassettes/lib/events/{manage_members_add.yml → set_memberships.yml} +8 -9
- data/fixtures/vcr_cassettes/lib/events/set_uuid_metadata.yml +78 -0
- data/fixtures/vcr_cassettes/lib/events/{subscribe-space-delete-async.yml → subscribe-channel-metadata-remove-sync.yml} +12 -14
- data/fixtures/vcr_cassettes/lib/events/subscribe-channel-metadata-set-async.yml +75 -0
- data/fixtures/vcr_cassettes/lib/events/{subscribe-member-remove-async.yml → subscribe-member-remove-sync.yml} +12 -14
- data/fixtures/vcr_cassettes/lib/events/subscribe-member-set-async.yml +75 -0
- data/fixtures/vcr_cassettes/lib/events/subscribe-membership-remove-async.yml +12 -14
- data/fixtures/vcr_cassettes/lib/events/{subscribe-user-update-async.yml → subscribe-membership-set-async.yml} +12 -14
- data/fixtures/vcr_cassettes/lib/events/{subscribe-user-delete-async.yml → subscribe-uuid-metadata-remove-sync.yml} +12 -14
- data/fixtures/vcr_cassettes/lib/events/subscribe-uuid-metadata-set-async.yml +75 -0
- data/lib/pubnub/client.rb +14 -14
- data/lib/pubnub/client/events.rb +4 -2
- data/lib/pubnub/constants.rb +19 -18
- data/lib/pubnub/event.rb +29 -15
- data/lib/pubnub/event/signature.rb +22 -7
- data/lib/pubnub/events/get_all_channels_metadata.rb +92 -0
- data/lib/pubnub/events/get_all_uuid_metadata.rb +92 -0
- data/lib/pubnub/events/get_channel_members.rb +100 -0
- data/lib/pubnub/events/{get_user.rb → get_channel_metadata.rb} +22 -15
- data/lib/pubnub/events/get_memberships.rb +100 -0
- data/lib/pubnub/events/{get_space.rb → get_uuid_metadata.rb} +22 -15
- data/lib/pubnub/events/grant.rb +9 -7
- data/lib/pubnub/events/remove_channel_members.rb +117 -0
- data/lib/pubnub/events/{delete_space.rb → remove_channel_metadata.rb} +12 -12
- data/lib/pubnub/events/remove_memberships.rb +117 -0
- data/lib/pubnub/events/{delete_user.rb → remove_uuid_metadata.rb} +12 -12
- data/lib/pubnub/events/set_channel_members.rb +120 -0
- data/lib/pubnub/events/{create_space.rb → set_channel_metadata.rb} +26 -16
- data/lib/pubnub/events/set_memberships.rb +120 -0
- data/lib/pubnub/events/{update_space.rb → set_uuid_metadata.rb} +27 -18
- data/lib/pubnub/pam.rb +2 -11
- data/lib/pubnub/subscribe_callback.rb +1 -3
- data/lib/pubnub/subscribe_event/formatter.rb +21 -17
- data/lib/pubnub/subscriber.rb +5 -6
- data/lib/pubnub/validators/get_all_channels_metadata.rb +29 -0
- data/lib/pubnub/validators/get_all_uuid_metadata.rb +29 -0
- data/lib/pubnub/validators/get_channel_members.rb +39 -0
- data/lib/pubnub/validators/get_channel_metadata.rb +39 -0
- data/lib/pubnub/validators/get_memberships.rb +39 -0
- data/lib/pubnub/validators/get_uuid_metadata.rb +39 -0
- data/lib/pubnub/validators/grant.rb +37 -2
- data/lib/pubnub/validators/remove_channel_members.rb +52 -0
- data/lib/pubnub/validators/remove_channel_metadata.rb +39 -0
- data/lib/pubnub/validators/remove_memberships.rb +52 -0
- data/lib/pubnub/validators/remove_uuid_metadata.rb +39 -0
- data/lib/pubnub/validators/set_channel_members.rb +78 -0
- data/lib/pubnub/validators/set_channel_metadata.rb +62 -0
- data/lib/pubnub/validators/set_memberships.rb +78 -0
- data/lib/pubnub/validators/set_uuid_metadata.rb +62 -0
- data/lib/pubnub/version.rb +1 -1
- data/spec/examples/grant_examples_spec.rb +2 -2
- data/spec/lib/events/channel_metadata_spec.rb +58 -0
- data/spec/lib/events/grant_spec.rb +3 -2
- data/spec/lib/events/membership_spec.rb +25 -22
- data/spec/lib/events/subscribe_spec.rb +58 -45
- data/spec/lib/events/uuid_metadata_spec.rb +56 -0
- data/spec/spec_helper.rb +1 -1
- metadata +55 -57
- data/fixtures/vcr_cassettes/lib/events/create_space.yml +0 -40
- data/fixtures/vcr_cassettes/lib/events/create_user.yml +0 -40
- data/fixtures/vcr_cassettes/lib/events/delete_user.yml +0 -38
- data/fixtures/vcr_cassettes/lib/events/get_space.yml +0 -38
- data/fixtures/vcr_cassettes/lib/events/get_spaces.yml +0 -40
- data/fixtures/vcr_cassettes/lib/events/get_user.yml +0 -38
- data/fixtures/vcr_cassettes/lib/events/get_users.yml +0 -40
- data/fixtures/vcr_cassettes/lib/events/manage_members_remove.yml +0 -83
- data/fixtures/vcr_cassettes/lib/events/manage_memberships_add.yml +0 -40
- data/fixtures/vcr_cassettes/lib/events/subscribe-member-add-async.yml +0 -77
- data/fixtures/vcr_cassettes/lib/events/subscribe-membership-add-async.yml +0 -77
- data/fixtures/vcr_cassettes/lib/events/subscribe-space-update-async.yml +0 -77
- data/fixtures/vcr_cassettes/lib/events/update_space.yml +0 -40
- data/fixtures/vcr_cassettes/lib/events/update_user.yml +0 -40
- data/lib/pubnub/events/create_user.rb +0 -84
- data/lib/pubnub/events/get_members.rb +0 -93
- data/lib/pubnub/events/get_space_memberships.rb +0 -93
- data/lib/pubnub/events/get_spaces.rb +0 -90
- data/lib/pubnub/events/get_users.rb +0 -90
- data/lib/pubnub/events/manage_members.rb +0 -105
- data/lib/pubnub/events/manage_memberships.rb +0 -105
- data/lib/pubnub/events/update_user.rb +0 -86
- data/lib/pubnub/validators/create_space.rb +0 -44
- data/lib/pubnub/validators/create_user.rb +0 -44
- data/lib/pubnub/validators/delete_space.rb +0 -32
- data/lib/pubnub/validators/delete_user.rb +0 -32
- data/lib/pubnub/validators/get_members.rb +0 -32
- data/lib/pubnub/validators/get_space.rb +0 -32
- data/lib/pubnub/validators/get_space_memberships.rb +0 -32
- data/lib/pubnub/validators/get_spaces.rb +0 -16
- data/lib/pubnub/validators/get_user.rb +0 -32
- data/lib/pubnub/validators/get_users.rb +0 -16
- data/lib/pubnub/validators/manage_members.rb +0 -45
- data/lib/pubnub/validators/manage_memberships.rb +0 -45
- data/lib/pubnub/validators/update_space.rb +0 -45
- data/lib/pubnub/validators/update_user.rb +0 -45
- data/spec/lib/events/space_spec.rb +0 -75
- data/spec/lib/events/user_spec.rb +0 -75
data/lib/pubnub/client/events.rb
CHANGED
@@ -7,8 +7,10 @@ module Pubnub
|
|
7
7
|
EVENTS = %w[publish subscribe presence leave history here_now audit grant delete_messages
|
8
8
|
revoke time heartbeat where_now set_state state channel_registration message_counts signal
|
9
9
|
add_channels_to_push list_push_provisions remove_channels_from_push remove_device_from_push
|
10
|
-
|
11
|
-
|
10
|
+
set_uuid_metadata set_channel_metadata remove_uuid_metadata remove_channel_metadata
|
11
|
+
get_uuid_metadata get_all_uuid_metadata get_channel_metadata get_all_channels_metadata
|
12
|
+
get_channel_members get_memberships set_channel_members set_memberships
|
13
|
+
remove_memberships remove_channel_members].freeze
|
12
14
|
|
13
15
|
EVENTS.each do |event_name|
|
14
16
|
define_method event_name do |options = {}, &block|
|
data/lib/pubnub/constants.rb
CHANGED
@@ -66,20 +66,20 @@ module Pubnub
|
|
66
66
|
OPERATION_REMOVE_CHANNELS_FROM_PUSH = :remove_channels_from_push
|
67
67
|
OPERATION_REMOVE_DEVICE_FROM_PUSH = :remove_device_from_push
|
68
68
|
OPERATION_SIGNAL = :signal
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
69
|
+
OPERATION_SET_UUID_METADATA = :set_uuid_metadata
|
70
|
+
OPERATION_GET_UUID_METADATA = :get_uuid_metadata
|
71
|
+
OPERATION_GET_ALL_UUID_METADATA = :get_all_uuid_metadata
|
72
|
+
OPERATION_REMOVE_UUID_METADATA = :remove_uuid_metadata
|
73
|
+
OPERATION_SET_CHANNEL_METADATA = :set_channel_metadata
|
74
|
+
OPERATION_GET_CHANNEL_METADATA = :get_channel_metadata
|
75
|
+
OPERATION_GET_ALL_CHANNELS_METADATA = :get_all_channels_metadata
|
76
|
+
OPERATION_REMOVE_CHANNEL_METADATA = :remove_channel_metadata
|
77
|
+
OPERATION_GET_CHANNEL_MEMBERS = :get_channel_members
|
78
|
+
OPERATION_SET_CHANNEL_MEMBERS = :set_channel_members
|
79
|
+
OPERATION_REMOVE_CHANNEL_MEMBERS = :remove_channel_members
|
80
|
+
OPERATION_GET_MEMBERSHIPS = :get_memberships
|
81
|
+
OPERATION_SET_MEMBERSHIPS = :set_memberships
|
82
|
+
OPERATION_REMOVE_MEMBERSHIPS = :remove_memberships
|
83
83
|
|
84
84
|
OPERATIONS = [
|
85
85
|
OPERATION_SUBSCRIBE, OPERATION_HEARTBEAT, OPERATION_PRESENCE, OPERATION_TIME, OPERATION_HISTORY,
|
@@ -87,10 +87,11 @@ module Pubnub
|
|
87
87
|
OPERATION_LIST_ALL_CHANNELS_IN_CHANNEL_GROUP, OPERATION_CHANNEL_GROUP_ADD, OPERATION_CHANNEL_GROUP_REMOVE,
|
88
88
|
OPERATION_AUDIT, OPERATION_GRANT, OPERATION_REVOKE, OPERATION_WHERE_NOW, OPERATION_MESSAGE_COUNTS,
|
89
89
|
OPERATION_ADD_CHANNELS_TO_PUSH, OPERATION_LIST_PUSH_PROVISIONS, OPERATION_REMOVE_CHANNELS_FROM_PUSH,
|
90
|
-
OPERATION_REMOVE_DEVICE_FROM_PUSH, OPERATION_SIGNAL,
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
OPERATION_REMOVE_DEVICE_FROM_PUSH, OPERATION_SIGNAL, OPERATION_SET_UUID_METADATA, OPERATION_GET_UUID_METADATA,
|
91
|
+
OPERATION_GET_ALL_UUID_METADATA, OPERATION_REMOVE_UUID_METADATA, OPERATION_SET_CHANNEL_METADATA,
|
92
|
+
OPERATION_GET_CHANNEL_METADATA, OPERATION_GET_ALL_CHANNELS_METADATA, OPERATION_REMOVE_CHANNEL_METADATA,
|
93
|
+
OPERATION_GET_CHANNEL_MEMBERS, OPERATION_SET_CHANNEL_MEMBERS, OPERATION_REMOVE_CHANNEL_MEMBERS,
|
94
|
+
OPERATION_GET_MEMBERSHIPS, OPERATION_SET_MEMBERSHIPS, OPERATION_REMOVE_MEMBERSHIPS
|
94
95
|
].freeze
|
95
96
|
|
96
97
|
# Announcements
|
data/lib/pubnub/event.rb
CHANGED
@@ -29,6 +29,7 @@ module Pubnub
|
|
29
29
|
set_timestamp
|
30
30
|
validate!
|
31
31
|
telemetry = @app.telemetry_for(@telemetry_name)
|
32
|
+
@compressed_body = nil
|
32
33
|
@current_telemetry = telemetry ? telemetry.round(3) : nil
|
33
34
|
Pubnub.logger.debug('Pubnub::Event') { "Initialized #{self.class}" }
|
34
35
|
end
|
@@ -46,24 +47,20 @@ module Pubnub
|
|
46
47
|
def send_request(compressed_body = '')
|
47
48
|
Pubnub.logger.debug('Pubnub::Event') { '#send_request called' }
|
48
49
|
|
50
|
+
@compressed_body = compressed_body
|
49
51
|
sender = request_dispatcher
|
50
52
|
Pubnub.logger.debug('Pubnub::Event') { '#send_request got sender' }
|
51
53
|
|
52
54
|
telemetry_time_start = ::Time.now.to_f
|
53
|
-
response = case
|
54
|
-
when
|
55
|
-
sender.
|
56
|
-
when
|
57
|
-
Pubnub::Constants::OPERATION_UPDATE_SPACE, Pubnub::Constants::OPERATION_UPDATE_USER
|
58
|
-
sender.patch(uri.to_s, body: compressed_body)
|
59
|
-
when Pubnub::Constants::OPERATION_CREATE_USER, Pubnub::Constants::OPERATION_CREATE_SPACE
|
55
|
+
response = case operation_http_method
|
56
|
+
when "get"
|
57
|
+
sender.get(uri.to_s)
|
58
|
+
when "post"
|
60
59
|
sender.post(uri.to_s, body: compressed_body)
|
60
|
+
when "patch"
|
61
|
+
sender.patch(uri.to_s, body: compressed_body)
|
61
62
|
else
|
62
|
-
|
63
|
-
sender.get(uri.to_s)
|
64
|
-
else
|
65
|
-
sender.post(uri.to_s, body: compressed_body)
|
66
|
-
end
|
63
|
+
sender.delete(uri.to_s)
|
67
64
|
end
|
68
65
|
|
69
66
|
begin
|
@@ -84,7 +81,7 @@ module Pubnub
|
|
84
81
|
return @uri if @uri
|
85
82
|
end
|
86
83
|
|
87
|
-
sa_signature = super_admin_signature unless parameters.include?(:signature)
|
84
|
+
sa_signature = super_admin_signature(operation_http_method, @compressed_body) unless parameters.include?(:signature)
|
88
85
|
|
89
86
|
uri = @ssl ? 'https://' : 'http://'
|
90
87
|
uri += @origin
|
@@ -105,6 +102,23 @@ module Pubnub
|
|
105
102
|
|
106
103
|
private
|
107
104
|
|
105
|
+
def operation_http_method
|
106
|
+
case @event
|
107
|
+
when Pubnub::Constants::OPERATION_DELETE, Pubnub::Constants::OPERATION_REMOVE_CHANNEL_METADATA, Pubnub::Constants::OPERATION_REMOVE_UUID_METADATA
|
108
|
+
"delete"
|
109
|
+
when Pubnub::Constants::OPERATION_SET_UUID_METADATA, Pubnub::Constants::OPERATION_SET_CHANNEL_METADATA,
|
110
|
+
Pubnub::Constants::OPERATION_SET_CHANNEL_MEMBERS, Pubnub::Constants::OPERATION_SET_MEMBERSHIPS,
|
111
|
+
Pubnub::Constants::OPERATION_REMOVE_CHANNEL_MEMBERS, Pubnub::Constants::OPERATION_REMOVE_MEMBERSHIPS
|
112
|
+
"patch"
|
113
|
+
else
|
114
|
+
if @compressed_body.nil? || @compressed_body.empty?
|
115
|
+
"get"
|
116
|
+
else
|
117
|
+
"post"
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
108
122
|
def secure_call(cb, arg)
|
109
123
|
cb.call arg
|
110
124
|
rescue StandardError => error
|
@@ -147,9 +161,9 @@ module Pubnub
|
|
147
161
|
publish_key subscribe_key timetoken
|
148
162
|
open_timeout read_timeout idle_timeout heartbeat
|
149
163
|
group action read write delete manage ttl presence start
|
150
|
-
end count reverse presence_callback store skip_validate
|
164
|
+
end count limit reverse presence_callback store skip_validate
|
151
165
|
state channel_group channel_groups compressed meta customs include_token
|
152
|
-
replicate with_presence cipher_key_selector include_meta]
|
166
|
+
replicate with_presence cipher_key_selector include_meta join update get]
|
153
167
|
|
154
168
|
options = options.each_with_object({}) { |option, obj| obj[option.first.to_sym] = option.last }
|
155
169
|
|
@@ -6,20 +6,35 @@ module Pubnub
|
|
6
6
|
module Signature
|
7
7
|
private
|
8
8
|
|
9
|
-
def super_admin_signature
|
9
|
+
def super_admin_signature(http_method, body)
|
10
10
|
return unless @app.env[:secret_key]
|
11
11
|
|
12
|
+
# Handle special case with publish operation signing when message sent as POST body.
|
13
|
+
http_method = if http_method.upcase == "POST" && current_operation == Pubnub::Constants::OPERATION_PUBLISH
|
14
|
+
"GET"
|
15
|
+
else
|
16
|
+
http_method.upcase
|
17
|
+
end
|
18
|
+
|
12
19
|
message = [
|
13
|
-
|
20
|
+
http_method.upcase,
|
14
21
|
@app.env[:publish_key],
|
15
22
|
path,
|
16
23
|
variables_for_signature.gsub(/[!~'()*]/) { |char| '%' + char.ord.to_s(16).upcase }, # Replace ! ~ * ' ( )
|
17
|
-
]
|
24
|
+
]
|
25
|
+
|
26
|
+
if %w[POST PATCH].include?(http_method)
|
27
|
+
message.push(body)
|
28
|
+
else
|
29
|
+
message.push('')
|
30
|
+
end
|
18
31
|
|
19
|
-
URI.encode_www_form_component(Base64.encode64(
|
32
|
+
signature = URI.encode_www_form_component(Base64.encode64(
|
20
33
|
OpenSSL::HMAC.digest(OpenSSL::Digest.new('sha256'),
|
21
|
-
@app.env[:secret_key].to_s, message)
|
22
|
-
).strip).gsub('
|
34
|
+
@app.env[:secret_key].to_s, message.join("\n"))
|
35
|
+
).strip.gsub(/\+/, '-').gsub(/\//, '_').gsub(/=+$/, ''))
|
36
|
+
|
37
|
+
"v2.#{signature}"
|
23
38
|
end
|
24
39
|
|
25
40
|
def variables_for_signature
|
@@ -29,7 +44,7 @@ module Pubnub
|
|
29
44
|
if %w[meta ortt].include?(k.to_s)
|
30
45
|
encoded_value = URI.encode_www_form_component(v.to_json).gsub('+', '%20')
|
31
46
|
"#{k}=#{encoded_value}"
|
32
|
-
elsif %w[t state filter-expr].include?(k.to_s)
|
47
|
+
elsif %w[t state filter-expr sort filter].include?(k.to_s)
|
33
48
|
"#{k}=#{v}"
|
34
49
|
else
|
35
50
|
"#{k}=#{URI.encode_www_form_component(v.to_s).gsub('+', '%20')}"
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# Toplevel Pubnub module.
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Pubnub
|
5
|
+
# Holds GetAllChannelsMetadata functionality
|
6
|
+
class GetAllChannelsMetadata < SingleEvent
|
7
|
+
include Concurrent::Async
|
8
|
+
include Pubnub::Validator::GetAllChannelsMetadata
|
9
|
+
|
10
|
+
def initialize(options, app)
|
11
|
+
@event = current_operation
|
12
|
+
@telemetry_name = :l_obj
|
13
|
+
@limit = [options[:limit], 100].min unless options[:limit].nil?
|
14
|
+
@sort = options[:sort].join(",") if options[:sort] && !options[:sort].empty?
|
15
|
+
@filter = options[:filter] if options[:filter] && !options[:filter].empty?
|
16
|
+
@start = options[:start] if options[:start] && !options[:start].empty?
|
17
|
+
@end = options[:end] if options[:start] && !options[:end].empty?
|
18
|
+
|
19
|
+
if options[:include]
|
20
|
+
@include_count = [0, '0', false].include?(options[:include][:count]) ? "0" : "1" unless options[:include][:count].nil?
|
21
|
+
@include = "custom" unless [0, '0', false].include?(options[:include][:custom])
|
22
|
+
end
|
23
|
+
|
24
|
+
# Collections by default return number of available entries.
|
25
|
+
@include_count = "1" if @include_count.nil?
|
26
|
+
|
27
|
+
super
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def current_operation
|
33
|
+
Pubnub::Constants::OPERATION_GET_ALL_CHANNELS_METADATA
|
34
|
+
end
|
35
|
+
|
36
|
+
def parameters(signature = false)
|
37
|
+
parameters = super(signature)
|
38
|
+
parameters[:limit] = @limit unless @limit.nil?
|
39
|
+
parameters[:sort] = @sort unless @sort.nil?
|
40
|
+
parameters[:filter] = @filter unless @filter.nil?
|
41
|
+
parameters[:start] = @start unless @start.nil?
|
42
|
+
parameters[:end] = @end if @end && !@start
|
43
|
+
parameters[:count] = @include_count unless @include_count.nil?
|
44
|
+
parameters[:include] = @include unless @include.to_s.empty?
|
45
|
+
|
46
|
+
parameters
|
47
|
+
end
|
48
|
+
|
49
|
+
def path
|
50
|
+
'/' + [
|
51
|
+
'v2',
|
52
|
+
'objects',
|
53
|
+
@subscribe_key,
|
54
|
+
'channels'
|
55
|
+
].join('/')
|
56
|
+
end
|
57
|
+
|
58
|
+
def valid_envelope(parsed_response, req_res_objects)
|
59
|
+
Pubnub::Envelope.new(
|
60
|
+
event: @event,
|
61
|
+
event_options: @given_options,
|
62
|
+
timetoken: nil,
|
63
|
+
|
64
|
+
result: {
|
65
|
+
code: req_res_objects[:response].code,
|
66
|
+
operation: current_operation,
|
67
|
+
client_request: req_res_objects[:request],
|
68
|
+
server_response: req_res_objects[:response],
|
69
|
+
data: parsed_response
|
70
|
+
},
|
71
|
+
|
72
|
+
status: {
|
73
|
+
code: req_res_objects[:response].code,
|
74
|
+
operation: current_operation,
|
75
|
+
client_request: req_res_objects[:request],
|
76
|
+
server_response: req_res_objects[:response],
|
77
|
+
data: nil,
|
78
|
+
category: Pubnub::Constants::STATUS_ACK,
|
79
|
+
error: false,
|
80
|
+
auto_retried: false,
|
81
|
+
|
82
|
+
current_timetoken: nil,
|
83
|
+
last_timetoken: nil,
|
84
|
+
subscribed_channels: nil,
|
85
|
+
subscribed_channel_groups: nil,
|
86
|
+
|
87
|
+
config: get_config
|
88
|
+
}
|
89
|
+
)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# Toplevel Pubnub module.
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Pubnub
|
5
|
+
# Holds GetAllUuidMetadata functionality
|
6
|
+
class GetAllUuidMetadata < SingleEvent
|
7
|
+
include Concurrent::Async
|
8
|
+
include Pubnub::Validator::GetAllUuidMetadata
|
9
|
+
|
10
|
+
def initialize(options, app)
|
11
|
+
@event = current_operation
|
12
|
+
@telemetry_name = :l_obj
|
13
|
+
@limit = [options[:limit], 100].min unless options[:limit].nil?
|
14
|
+
@sort = options[:sort].join(",") if options[:sort] && !options[:sort].empty?
|
15
|
+
@filter = options[:filter] if options[:filter] && !options[:filter].empty?
|
16
|
+
@start = options[:start] if options[:start] && !options[:start].empty?
|
17
|
+
@end = options[:end] if options[:start] && !options[:end].empty?
|
18
|
+
|
19
|
+
if options[:include]
|
20
|
+
@include_count = [0, '0', false].include?(options[:include][:count]) ? "0" : "1" unless options[:include][:count].nil?
|
21
|
+
@include = "custom" unless [0, '0', false].include?(options[:include][:custom])
|
22
|
+
end
|
23
|
+
|
24
|
+
# Collections by default return number of available entries.
|
25
|
+
@include_count = "1" if @include_count.nil?
|
26
|
+
|
27
|
+
super
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def current_operation
|
33
|
+
Pubnub::Constants::OPERATION_GET_ALL_UUID_METADATA
|
34
|
+
end
|
35
|
+
|
36
|
+
def parameters(signature = false)
|
37
|
+
parameters = super(signature)
|
38
|
+
parameters[:limit] = @limit unless @limit.nil?
|
39
|
+
parameters[:sort] = @sort unless @sort.nil?
|
40
|
+
parameters[:filter] = @filter unless @filter.nil?
|
41
|
+
parameters[:start] = @start unless @start.nil?
|
42
|
+
parameters[:end] = @end if @end && !@start
|
43
|
+
parameters[:count] = @include_count unless @include_count.nil?
|
44
|
+
parameters[:include] = @include unless @include.to_s.empty?
|
45
|
+
|
46
|
+
parameters
|
47
|
+
end
|
48
|
+
|
49
|
+
def path
|
50
|
+
'/' + [
|
51
|
+
'v2',
|
52
|
+
'objects',
|
53
|
+
@subscribe_key,
|
54
|
+
'uuids'
|
55
|
+
].join('/')
|
56
|
+
end
|
57
|
+
|
58
|
+
def valid_envelope(parsed_response, req_res_objects)
|
59
|
+
Pubnub::Envelope.new(
|
60
|
+
event: @event,
|
61
|
+
event_options: @given_options,
|
62
|
+
timetoken: nil,
|
63
|
+
|
64
|
+
result: {
|
65
|
+
code: req_res_objects[:response].code,
|
66
|
+
operation: current_operation,
|
67
|
+
client_request: req_res_objects[:request],
|
68
|
+
server_response: req_res_objects[:response],
|
69
|
+
data: parsed_response
|
70
|
+
},
|
71
|
+
|
72
|
+
status: {
|
73
|
+
code: req_res_objects[:response].code,
|
74
|
+
operation: current_operation,
|
75
|
+
client_request: req_res_objects[:request],
|
76
|
+
server_response: req_res_objects[:response],
|
77
|
+
data: nil,
|
78
|
+
category: Pubnub::Constants::STATUS_ACK,
|
79
|
+
error: false,
|
80
|
+
auto_retried: false,
|
81
|
+
|
82
|
+
current_timetoken: nil,
|
83
|
+
last_timetoken: nil,
|
84
|
+
subscribed_channels: nil,
|
85
|
+
subscribed_channel_groups: nil,
|
86
|
+
|
87
|
+
config: get_config
|
88
|
+
}
|
89
|
+
)
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
# Toplevel Pubnub module.
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
module Pubnub
|
5
|
+
# Holds GetChannelMembers functionality
|
6
|
+
class GetChannelMembers < SingleEvent
|
7
|
+
include Concurrent::Async
|
8
|
+
include Pubnub::Validator::GetChannelMembers
|
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
|
+
# Collections by default return number of available entries.
|
31
|
+
@include_count = "1" if @include_count.nil?
|
32
|
+
|
33
|
+
super
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def current_operation
|
39
|
+
Pubnub::Constants::OPERATION_GET_CHANNEL_MEMBERS
|
40
|
+
end
|
41
|
+
|
42
|
+
def parameters(signature = false)
|
43
|
+
parameters = super(signature)
|
44
|
+
parameters[:limit] = @limit unless @limit.nil?
|
45
|
+
parameters[:sort] = @sort unless @sort.nil?
|
46
|
+
parameters[:filter] = @filter unless @filter.nil?
|
47
|
+
parameters[:start] = @start unless @start.nil?
|
48
|
+
parameters[:end] = @end if @end && !@start
|
49
|
+
parameters[:count] = @include_count unless @include_count.nil?
|
50
|
+
parameters[:include] = @include.sort.join(",") if @include && !@include.empty?
|
51
|
+
|
52
|
+
parameters
|
53
|
+
end
|
54
|
+
|
55
|
+
def path
|
56
|
+
'/' + [
|
57
|
+
'v2',
|
58
|
+
'objects',
|
59
|
+
@subscribe_key,
|
60
|
+
'channels',
|
61
|
+
Formatter.channels_for_url(@channel),
|
62
|
+
'uuids'
|
63
|
+
].join('/')
|
64
|
+
end
|
65
|
+
|
66
|
+
def valid_envelope(parsed_response, req_res_objects)
|
67
|
+
Pubnub::Envelope.new(
|
68
|
+
event: @event,
|
69
|
+
event_options: @given_options,
|
70
|
+
timetoken: nil,
|
71
|
+
|
72
|
+
result: {
|
73
|
+
code: req_res_objects[:response].code,
|
74
|
+
operation: current_operation,
|
75
|
+
client_request: req_res_objects[:request],
|
76
|
+
server_response: req_res_objects[:response],
|
77
|
+
data: parsed_response
|
78
|
+
},
|
79
|
+
|
80
|
+
status: {
|
81
|
+
code: req_res_objects[:response].code,
|
82
|
+
operation: current_operation,
|
83
|
+
client_request: req_res_objects[:request],
|
84
|
+
server_response: req_res_objects[:response],
|
85
|
+
data: nil,
|
86
|
+
category: Pubnub::Constants::STATUS_ACK,
|
87
|
+
error: false,
|
88
|
+
auto_retried: false,
|
89
|
+
|
90
|
+
current_timetoken: nil,
|
91
|
+
last_timetoken: nil,
|
92
|
+
subscribed_channels: nil,
|
93
|
+
subscribed_channel_groups: nil,
|
94
|
+
|
95
|
+
config: get_config
|
96
|
+
}
|
97
|
+
)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|