Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions fixtures/vcr_cassettes/examples/presence/0.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions fixtures/vcr_cassettes/examples/presence/1.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions fixtures/vcr_cassettes/examples/presence/2.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

46 changes: 46 additions & 0 deletions fixtures/vcr_cassettes/lib/events/heartbeat-unique.yml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions lib/pubnub/events/heartbeat.rb
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ def path
'sub-key',
@subscribe_key,
'channel',
Formatter.channels_for_url(@channel),
Formatter.channels_for_url(@channel.uniq),
'heartbeat'
].join('/')
end
Expand All @@ -37,7 +37,7 @@ def parameters(*_args)
parameters.delete(:state) if parameters[:state] == '%7B%7D'
end
parameters[:heartbeat] = @heartbeat
parameters['channel-group'] = @group.join(',') unless @group.blank?
parameters['channel-group'] = @group.uniq.join(',') unless @group.blank?
parameters
end

Expand Down
4 changes: 2 additions & 2 deletions lib/pubnub/subscribe_event.rb
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ def path
'v2',
'subscribe',
@subscribe_key,
Pubnub::Formatter.channels_for_url(@channel + @wildcard_channel),
Pubnub::Formatter.channels_for_url((@channel + @wildcard_channel).uniq),
0
].join('/').gsub(/\?/, '%3F')
end
Expand All @@ -151,7 +151,7 @@ def add_timetoken_to_params(params)
end

def add_group_to_params(params)
params['channel-group'] = @group.join(',') unless @group.empty?
params['channel-group'] = @group.uniq.join(',') unless @group.empty?
params
end

Expand Down
13 changes: 13 additions & 0 deletions spec/lib/events/heartbeat_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,19 @@
end
end

it "sends unique channels and channel groups even when duplicates are provided" do
VCR.use_cassette("lib/events/heartbeat-unique", record: :once) do
envelope = @pubnub.heartbeat(
channel: ['demo', 'demo', 'demo-b'],
channel_group: ['grp-a', 'grp-a'],
).value

expect(envelope.status[:client_request].to_s).to include('/channel/demo,demo-b/')
expect(envelope.status[:client_request].to_s).to include('channel-group=grp-a')
expect(envelope.status[:client_request].to_s).not_to include('channel-group=grp-a,grp-a')
end
end

it "forms valid ErrorEnvelope on error" do
VCR.use_cassette("lib/events/heartbeat-error", record: :once) do
envelope = @pubnub.heartbeat(
Expand Down