ably-rest 1.0.6 → 1.1.4.rc
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/README.md +23 -15
- data/ably-rest.gemspec +6 -6
- data/lib/submodules/ably-ruby/.editorconfig +14 -0
- data/lib/submodules/ably-ruby/.travis.yml +10 -8
- data/lib/submodules/ably-ruby/CHANGELOG.md +75 -3
- data/lib/submodules/ably-ruby/LICENSE +1 -3
- data/lib/submodules/ably-ruby/README.md +12 -7
- data/lib/submodules/ably-ruby/Rakefile +32 -0
- data/lib/submodules/ably-ruby/SPEC.md +1277 -835
- data/lib/submodules/ably-ruby/ably.gemspec +15 -10
- data/lib/submodules/ably-ruby/lib/ably/auth.rb +30 -4
- data/lib/submodules/ably-ruby/lib/ably/exceptions.rb +10 -4
- data/lib/submodules/ably-ruby/lib/ably/logger.rb +7 -1
- data/lib/submodules/ably-ruby/lib/ably/models/channel_state_change.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/models/connection_state_change.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/models/device_details.rb +87 -0
- data/lib/submodules/ably-ruby/lib/ably/models/device_push_details.rb +86 -0
- data/lib/submodules/ably-ruby/lib/ably/models/error_info.rb +23 -2
- data/lib/submodules/ably-ruby/lib/ably/models/idiomatic_ruby_wrapper.rb +4 -4
- data/lib/submodules/ably-ruby/lib/ably/models/protocol_message.rb +32 -2
- data/lib/submodules/ably-ruby/lib/ably/models/push_channel_subscription.rb +89 -0
- data/lib/submodules/ably-ruby/lib/ably/modules/conversions.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/modules/encodeable.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/modules/exception_codes.rb +128 -0
- data/lib/submodules/ably-ruby/lib/ably/modules/model_common.rb +15 -2
- data/lib/submodules/ably-ruby/lib/ably/modules/state_machine.rb +2 -2
- data/lib/submodules/ably-ruby/lib/ably/realtime.rb +1 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/auth.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel.rb +24 -102
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_manager.rb +2 -6
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_state_machine.rb +2 -2
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel/publisher.rb +74 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/channel/push_channel.rb +62 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/client.rb +91 -3
- data/lib/submodules/ably-ruby/lib/ably/realtime/client/incoming_message_dispatcher.rb +6 -2
- data/lib/submodules/ably-ruby/lib/ably/realtime/client/outgoing_message_dispatcher.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/realtime/connection.rb +34 -20
- data/lib/submodules/ably-ruby/lib/ably/realtime/connection/connection_manager.rb +25 -9
- data/lib/submodules/ably-ruby/lib/ably/realtime/connection/websocket_transport.rb +1 -1
- data/lib/submodules/ably-ruby/lib/ably/realtime/presence.rb +4 -4
- data/lib/submodules/ably-ruby/lib/ably/realtime/presence/members_map.rb +3 -3
- data/lib/submodules/ably-ruby/lib/ably/realtime/push.rb +40 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/push/admin.rb +61 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/push/channel_subscriptions.rb +108 -0
- data/lib/submodules/ably-ruby/lib/ably/realtime/push/device_registrations.rb +105 -0
- data/lib/submodules/ably-ruby/lib/ably/rest.rb +1 -0
- data/lib/submodules/ably-ruby/lib/ably/rest/channel.rb +53 -17
- data/lib/submodules/ably-ruby/lib/ably/rest/channel/push_channel.rb +62 -0
- data/lib/submodules/ably-ruby/lib/ably/rest/client.rb +162 -35
- data/lib/submodules/ably-ruby/lib/ably/rest/middleware/fail_if_unsupported_mime_type.rb +4 -1
- data/lib/submodules/ably-ruby/lib/ably/rest/middleware/parse_message_pack.rb +17 -1
- data/lib/submodules/ably-ruby/lib/ably/rest/presence.rb +1 -0
- data/lib/submodules/ably-ruby/lib/ably/rest/push.rb +42 -0
- data/lib/submodules/ably-ruby/lib/ably/rest/push/admin.rb +54 -0
- data/lib/submodules/ably-ruby/lib/ably/rest/push/channel_subscriptions.rb +121 -0
- data/lib/submodules/ably-ruby/lib/ably/rest/push/device_registrations.rb +103 -0
- data/lib/submodules/ably-ruby/lib/ably/version.rb +7 -2
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/auth_spec.rb +245 -17
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_history_spec.rb +26 -20
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_spec.rb +177 -59
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/client_spec.rb +153 -0
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_failures_spec.rb +72 -6
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_spec.rb +129 -18
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/message_spec.rb +36 -34
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb +201 -167
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/push_admin_spec.rb +736 -0
- data/lib/submodules/ably-ruby/spec/acceptance/realtime/push_spec.rb +27 -0
- data/lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb +41 -3
- data/lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb +2 -2
- data/lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb +79 -4
- data/lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb +6 -0
- data/lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb +129 -10
- data/lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb +158 -6
- data/lib/submodules/ably-ruby/spec/acceptance/rest/push_admin_spec.rb +952 -0
- data/lib/submodules/ably-ruby/spec/acceptance/rest/push_spec.rb +25 -0
- data/lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/run_parallel_tests +33 -0
- data/lib/submodules/ably-ruby/spec/spec_helper.rb +1 -1
- data/lib/submodules/ably-ruby/spec/support/debug_failure_helper.rb +9 -5
- data/lib/submodules/ably-ruby/spec/support/test_app.rb +2 -2
- data/lib/submodules/ably-ruby/spec/unit/logger_spec.rb +10 -3
- data/lib/submodules/ably-ruby/spec/unit/models/device_details_spec.rb +102 -0
- data/lib/submodules/ably-ruby/spec/unit/models/device_push_details_spec.rb +101 -0
- data/lib/submodules/ably-ruby/spec/unit/models/error_info_spec.rb +51 -3
- data/lib/submodules/ably-ruby/spec/unit/models/message_spec.rb +17 -2
- data/lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/models/push_channel_subscription_spec.rb +86 -0
- data/lib/submodules/ably-ruby/spec/unit/modules/enum_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/client_spec.rb +13 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/connection_spec.rb +1 -1
- data/lib/submodules/ably-ruby/spec/unit/realtime/push_channel_spec.rb +36 -0
- data/lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb +8 -1
- data/lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb +30 -0
- data/lib/submodules/ably-ruby/spec/unit/rest/push_channel_spec.rb +36 -0
- metadata +46 -21
@@ -547,7 +547,7 @@ describe Ably::Models::PresenceMessage do
|
|
547
547
|
clone = model.shallow_clone(id: 'newId', action: 1, timestamp: protocol_message_timestamp + 1000)
|
548
548
|
expect(clone.id).to match(/newId/)
|
549
549
|
expect(clone.connection_id).to eql(protocol_connection_id)
|
550
|
-
expect(as_since_epoch(clone.timestamp)).to
|
550
|
+
expect(as_since_epoch(clone.timestamp)).to be_within(5).of(protocol_message_timestamp + 1000)
|
551
551
|
expect(clone.action).to eq(1)
|
552
552
|
end
|
553
553
|
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
require 'shared/model_behaviour'
|
4
|
+
|
5
|
+
describe Ably::Models::PushChannelSubscription do
|
6
|
+
include Ably::Modules::Conversions
|
7
|
+
|
8
|
+
subject { Ably::Models::PushChannelSubscription }
|
9
|
+
|
10
|
+
%w(channel client_id device_id).each do |string_attribute|
|
11
|
+
describe "##{string_attribute} and ##{string_attribute}=" do
|
12
|
+
let(:empty_device_details) do
|
13
|
+
if string_attribute == 'device_id'
|
14
|
+
subject.new(channel: 'default', device_id: 'default')
|
15
|
+
else
|
16
|
+
subject.new(channel: 'default', client_id: 'default')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
let(:new_val) { random_str }
|
20
|
+
|
21
|
+
specify 'setter accepts a string value and getter returns the new value' do
|
22
|
+
expect(empty_device_details.public_send(string_attribute)).to eql('default')
|
23
|
+
empty_device_details.public_send("#{string_attribute}=", new_val)
|
24
|
+
expect(empty_device_details.public_send(string_attribute)).to eql(new_val)
|
25
|
+
end
|
26
|
+
|
27
|
+
specify 'setter accepts nil' do
|
28
|
+
empty_device_details.public_send("#{string_attribute}=", new_val)
|
29
|
+
expect(empty_device_details.public_send(string_attribute)).to eql(new_val)
|
30
|
+
empty_device_details.public_send("#{string_attribute}=", nil)
|
31
|
+
expect(empty_device_details.public_send(string_attribute)).to be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
specify 'rejects non string or nil values' do
|
35
|
+
expect { empty_device_details.public_send("#{string_attribute}=", {}) }.to raise_error(ArgumentError)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'camelCase constructor attributes' do
|
41
|
+
let(:client_id) { random_str }
|
42
|
+
let(:device_details) { subject.new(channel: 'foo', 'clientId' => client_id ) }
|
43
|
+
|
44
|
+
specify 'are rubyfied and exposed as underscore case' do
|
45
|
+
expect(device_details.client_id).to eql(client_id)
|
46
|
+
end
|
47
|
+
|
48
|
+
specify 'are generated when the object is serialised to JSON' do
|
49
|
+
expect(JSON.parse(device_details.to_json)["clientId"]).to eql(client_id)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
describe 'conversion method PushChannelSubscription' do
|
54
|
+
let(:channel) { 'foo' }
|
55
|
+
let(:device_id) { 'bar' }
|
56
|
+
|
57
|
+
it 'accepts a PushChannelSubscription object' do
|
58
|
+
push_channel_sub = PushChannelSubscription(channel: channel, device_id: device_id)
|
59
|
+
expect(push_channel_sub.channel).to eql('foo')
|
60
|
+
expect(push_channel_sub.client_id).to be_nil
|
61
|
+
expect(push_channel_sub.device_id).to eql('bar')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '#for_client_id constructor' do
|
66
|
+
context 'with a valid object' do
|
67
|
+
let(:channel) { 'foo' }
|
68
|
+
let(:client_id) { 'bob' }
|
69
|
+
|
70
|
+
it 'accepts a Hash object' do
|
71
|
+
push_channel_sub = Ably::Models::PushChannelSubscription.for_client_id(channel, client_id)
|
72
|
+
expect(push_channel_sub.channel).to eql('foo')
|
73
|
+
expect(push_channel_sub.client_id).to eql('bob')
|
74
|
+
expect(push_channel_sub.device_id).to be_nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'with an invalid valid object' do
|
79
|
+
let(:subscription) { { channel: 'foo' } }
|
80
|
+
|
81
|
+
it 'accepts a Hash object' do
|
82
|
+
expect { Ably::Models::PushChannelSubscription.for_device(subscription) }.to raise_error(ArgumentError)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -53,7 +53,7 @@ describe Ably::Modules::Enum, :api_private do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
it 'allows different type comparison 2' do
|
56
|
-
skip 'Unless we
|
56
|
+
skip 'Unless we monkeypatch Symbols, the == operator is never invoked'
|
57
57
|
expect([:value_zero].include?(subject.ValueZero)).to eql(true)
|
58
58
|
end
|
59
59
|
|
@@ -13,7 +13,7 @@ describe Ably::Realtime::Client do
|
|
13
13
|
let(:client_options) { { key: 'appid.keyuid:keysecret', auto_connect: false } }
|
14
14
|
|
15
15
|
it 'passes on the options to the initializer' do
|
16
|
-
rest_client = instance_double('Ably::Rest::Client', auth: instance_double('Ably::Auth'), options: client_options)
|
16
|
+
rest_client = instance_double('Ably::Rest::Client', auth: instance_double('Ably::Auth'), options: client_options, environment: 'production', use_tls?: true, custom_tls_port: nil)
|
17
17
|
expect(Ably::Rest::Client).to receive(:new).with(hash_including(client_options)).and_return(rest_client)
|
18
18
|
subject
|
19
19
|
end
|
@@ -28,6 +28,18 @@ describe Ably::Realtime::Client do
|
|
28
28
|
end
|
29
29
|
end
|
30
30
|
|
31
|
+
context 'push' do
|
32
|
+
let(:client_options) { { key: 'appid.keyuid:keysecret' } }
|
33
|
+
|
34
|
+
specify '#device is not supported and raises an exception' do
|
35
|
+
expect { subject.device }.to raise_error Ably::Exceptions::PushNotificationsNotSupported
|
36
|
+
end
|
37
|
+
|
38
|
+
specify '#push returns a Push object' do
|
39
|
+
expect(subject.push).to be_a(Ably::Realtime::Push)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
31
43
|
after(:all) do
|
32
44
|
sleep 1 # let realtime library shut down any open clients
|
33
45
|
end
|
@@ -2,7 +2,7 @@ require 'spec_helper'
|
|
2
2
|
require 'shared/protocol_msgbus_behaviour'
|
3
3
|
|
4
4
|
describe Ably::Realtime::Connection do
|
5
|
-
let(:client) { instance_double('Ably::Realtime::Client', logger: double('logger').as_null_object) }
|
5
|
+
let(:client) { instance_double('Ably::Realtime::Client', logger: double('logger').as_null_object, recover: nil, endpoint: double('endpoint', host: 'realtime.ably.io')) }
|
6
6
|
|
7
7
|
subject do
|
8
8
|
Ably::Realtime::Connection.new(client, {}).tap do |connection|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ably::Realtime::Channel::PushChannel do
|
4
|
+
subject { Ably::Realtime::Channel::PushChannel }
|
5
|
+
|
6
|
+
let(:channel_name) { 'unique' }
|
7
|
+
let(:client) { double('client').as_null_object }
|
8
|
+
let(:channel) { Ably::Realtime::Channel.new(client, channel_name) }
|
9
|
+
|
10
|
+
it 'is constructed with a channel' do
|
11
|
+
expect(subject.new(channel)).to be_a(Ably::Realtime::Channel::PushChannel)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'raises an exception if constructed with an invalid type' do
|
15
|
+
expect { subject.new(Hash.new) }.to raise_error(ArgumentError)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'exposes the channel as attribute #channel' do
|
19
|
+
expect(subject.new(channel).channel).to eql(channel)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'is available in the #push attribute of the channel' do
|
23
|
+
expect(channel.push).to be_a(Ably::Realtime::Channel::PushChannel)
|
24
|
+
expect(channel.push.channel).to eql(channel)
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'methods not implemented as push notifications' do
|
28
|
+
subject { Ably::Realtime::Channel::PushChannel.new(channel) }
|
29
|
+
|
30
|
+
%w(subscribe_device subscribe_client_id unsubscribe_device unsubscribe_client_id get_subscriptions).each do |method_name|
|
31
|
+
specify "##{method_name} raises an unsupported exception" do
|
32
|
+
expect { subject.public_send(method_name, 'foo') }.to raise_error(Ably::Exceptions::PushNotificationsNotSupported)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -2,7 +2,14 @@
|
|
2
2
|
require 'spec_helper'
|
3
3
|
|
4
4
|
describe Ably::Rest::Channel do
|
5
|
-
let(:client)
|
5
|
+
let(:client) do
|
6
|
+
instance_double(
|
7
|
+
'Ably::Rest::Client',
|
8
|
+
encoders: [],
|
9
|
+
post: instance_double('Faraday::Response', status: 201),
|
10
|
+
idempotent_rest_publishing: false,
|
11
|
+
)
|
12
|
+
end
|
6
13
|
let(:channel_name) { 'unique' }
|
7
14
|
|
8
15
|
subject { Ably::Rest::Channel.new(client, channel_name) }
|
@@ -20,6 +20,24 @@ describe Ably::Rest::Client do
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
context 'fallback_retry_timeout (#RSC15f)' do
|
24
|
+
context 'default' do
|
25
|
+
let(:client_options) { { key: 'appid.keyuid:keysecret' } }
|
26
|
+
|
27
|
+
it 'is set to 10 minutes' do
|
28
|
+
expect(subject.options.fetch(:fallback_retry_timeout)).to eql(10 * 60)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'when provided' do
|
33
|
+
let(:client_options) { { key: 'appid.keyuid:keysecret', fallback_retry_timeout: 30 } }
|
34
|
+
|
35
|
+
it 'configures a new timeout' do
|
36
|
+
expect(subject.options.fetch(:fallback_retry_timeout)).to eql(30)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
23
41
|
context ':use_token_auth' do
|
24
42
|
context 'set to false' do
|
25
43
|
context 'with a key and :tls => false' do
|
@@ -57,4 +75,16 @@ describe Ably::Rest::Client do
|
|
57
75
|
expect(subject.add_request_ids).to eql(true)
|
58
76
|
end
|
59
77
|
end
|
78
|
+
|
79
|
+
context 'push' do
|
80
|
+
let(:client_options) { { key: 'appid.keyuid:keysecret' } }
|
81
|
+
|
82
|
+
specify '#device is not supported and raises an exception' do
|
83
|
+
expect { subject.device }.to raise_error Ably::Exceptions::PushNotificationsNotSupported
|
84
|
+
end
|
85
|
+
|
86
|
+
specify '#push returns a Push object' do
|
87
|
+
expect(subject.push).to be_a(Ably::Rest::Push)
|
88
|
+
end
|
89
|
+
end
|
60
90
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Ably::Rest::Channel::PushChannel do
|
4
|
+
subject { Ably::Rest::Channel::PushChannel }
|
5
|
+
|
6
|
+
let(:channel_name) { 'unique' }
|
7
|
+
let(:client) { double('client').as_null_object }
|
8
|
+
let(:channel) { Ably::Rest::Channel.new(client, channel_name) }
|
9
|
+
|
10
|
+
it 'is constructed with a channel' do
|
11
|
+
expect(subject.new(channel)).to be_a(Ably::Rest::Channel::PushChannel)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'raises an exception if constructed with an invalid type' do
|
15
|
+
expect { subject.new(Hash.new) }.to raise_error(ArgumentError)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'exposes the channel as attribute #channel' do
|
19
|
+
expect(subject.new(channel).channel).to eql(channel)
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'is available in the #push attribute of the channel' do
|
23
|
+
expect(channel.push).to be_a(Ably::Rest::Channel::PushChannel)
|
24
|
+
expect(channel.push.channel).to eql(channel)
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'methods not implemented as push notifications' do
|
28
|
+
subject { Ably::Rest::Channel::PushChannel.new(channel) }
|
29
|
+
|
30
|
+
%w(subscribe_device subscribe_client_id unsubscribe_device unsubscribe_client_id get_subscriptions).each do |method_name|
|
31
|
+
specify "##{method_name} raises an unsupported exception" do
|
32
|
+
expect { subject.public_send(method_name, 'foo') }.to raise_error(Ably::Exceptions::PushNotificationsNotSupported)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ably-rest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.4.rc
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew O'Riordan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-12-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0
|
19
|
+
version: '1.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0
|
26
|
+
version: '1.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: typhoeus
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.4'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.4'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: json
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,33 +81,33 @@ dependencies:
|
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 2.0.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rake
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '13.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '13.0'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: bundler
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 2.2.1
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
108
|
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 2.2.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: redcarpet
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,28 +128,28 @@ dependencies:
|
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 3.
|
131
|
+
version: 3.10.0
|
132
132
|
type: :development
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 3.
|
138
|
+
version: 3.10.0
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: rspec-retry
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
143
|
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
|
-
version: '0.
|
145
|
+
version: '0.6'
|
146
146
|
type: :development
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
150
|
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
|
-
version: '0.
|
152
|
+
version: '0.6'
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: yard
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -241,6 +241,7 @@ files:
|
|
241
241
|
- ably-rest.gemspec
|
242
242
|
- lib/ably-rest.rb
|
243
243
|
- lib/ably-rest/modules/eventmachine_deferrable.rb
|
244
|
+
- lib/submodules/ably-ruby/.editorconfig
|
244
245
|
- lib/submodules/ably-ruby/.gitignore
|
245
246
|
- lib/submodules/ably-ruby/.gitmodules
|
246
247
|
- lib/submodules/ably-ruby/.rspec
|
@@ -261,6 +262,8 @@ files:
|
|
261
262
|
- lib/submodules/ably-ruby/lib/ably/models/cipher_params.rb
|
262
263
|
- lib/submodules/ably-ruby/lib/ably/models/connection_details.rb
|
263
264
|
- lib/submodules/ably-ruby/lib/ably/models/connection_state_change.rb
|
265
|
+
- lib/submodules/ably-ruby/lib/ably/models/device_details.rb
|
266
|
+
- lib/submodules/ably-ruby/lib/ably/models/device_push_details.rb
|
264
267
|
- lib/submodules/ably-ruby/lib/ably/models/error_info.rb
|
265
268
|
- lib/submodules/ably-ruby/lib/ably/models/http_paginated_response.rb
|
266
269
|
- lib/submodules/ably-ruby/lib/ably/models/idiomatic_ruby_wrapper.rb
|
@@ -274,6 +277,7 @@ files:
|
|
274
277
|
- lib/submodules/ably-ruby/lib/ably/models/paginated_result.rb
|
275
278
|
- lib/submodules/ably-ruby/lib/ably/models/presence_message.rb
|
276
279
|
- lib/submodules/ably-ruby/lib/ably/models/protocol_message.rb
|
280
|
+
- lib/submodules/ably-ruby/lib/ably/models/push_channel_subscription.rb
|
277
281
|
- lib/submodules/ably-ruby/lib/ably/models/stats.rb
|
278
282
|
- lib/submodules/ably-ruby/lib/ably/models/stats_types.rb
|
279
283
|
- lib/submodules/ably-ruby/lib/ably/models/token_details.rb
|
@@ -286,6 +290,7 @@ files:
|
|
286
290
|
- lib/submodules/ably-ruby/lib/ably/modules/enum.rb
|
287
291
|
- lib/submodules/ably-ruby/lib/ably/modules/event_emitter.rb
|
288
292
|
- lib/submodules/ably-ruby/lib/ably/modules/event_machine_helpers.rb
|
293
|
+
- lib/submodules/ably-ruby/lib/ably/modules/exception_codes.rb
|
289
294
|
- lib/submodules/ably-ruby/lib/ably/modules/http_helpers.rb
|
290
295
|
- lib/submodules/ably-ruby/lib/ably/modules/message_emitter.rb
|
291
296
|
- lib/submodules/ably-ruby/lib/ably/modules/message_pack.rb
|
@@ -301,6 +306,8 @@ files:
|
|
301
306
|
- lib/submodules/ably-ruby/lib/ably/realtime/channel.rb
|
302
307
|
- lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_manager.rb
|
303
308
|
- lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_state_machine.rb
|
309
|
+
- lib/submodules/ably-ruby/lib/ably/realtime/channel/publisher.rb
|
310
|
+
- lib/submodules/ably-ruby/lib/ably/realtime/channel/push_channel.rb
|
304
311
|
- lib/submodules/ably-ruby/lib/ably/realtime/channels.rb
|
305
312
|
- lib/submodules/ably-ruby/lib/ably/realtime/client.rb
|
306
313
|
- lib/submodules/ably-ruby/lib/ably/realtime/client/incoming_message_dispatcher.rb
|
@@ -314,8 +321,13 @@ files:
|
|
314
321
|
- lib/submodules/ably-ruby/lib/ably/realtime/presence/members_map.rb
|
315
322
|
- lib/submodules/ably-ruby/lib/ably/realtime/presence/presence_manager.rb
|
316
323
|
- lib/submodules/ably-ruby/lib/ably/realtime/presence/presence_state_machine.rb
|
324
|
+
- lib/submodules/ably-ruby/lib/ably/realtime/push.rb
|
325
|
+
- lib/submodules/ably-ruby/lib/ably/realtime/push/admin.rb
|
326
|
+
- lib/submodules/ably-ruby/lib/ably/realtime/push/channel_subscriptions.rb
|
327
|
+
- lib/submodules/ably-ruby/lib/ably/realtime/push/device_registrations.rb
|
317
328
|
- lib/submodules/ably-ruby/lib/ably/rest.rb
|
318
329
|
- lib/submodules/ably-ruby/lib/ably/rest/channel.rb
|
330
|
+
- lib/submodules/ably-ruby/lib/ably/rest/channel/push_channel.rb
|
319
331
|
- lib/submodules/ably-ruby/lib/ably/rest/channels.rb
|
320
332
|
- lib/submodules/ably-ruby/lib/ably/rest/client.rb
|
321
333
|
- lib/submodules/ably-ruby/lib/ably/rest/middleware/encoder.rb
|
@@ -326,6 +338,10 @@ files:
|
|
326
338
|
- lib/submodules/ably-ruby/lib/ably/rest/middleware/parse_json.rb
|
327
339
|
- lib/submodules/ably-ruby/lib/ably/rest/middleware/parse_message_pack.rb
|
328
340
|
- lib/submodules/ably-ruby/lib/ably/rest/presence.rb
|
341
|
+
- lib/submodules/ably-ruby/lib/ably/rest/push.rb
|
342
|
+
- lib/submodules/ably-ruby/lib/ably/rest/push/admin.rb
|
343
|
+
- lib/submodules/ably-ruby/lib/ably/rest/push/channel_subscriptions.rb
|
344
|
+
- lib/submodules/ably-ruby/lib/ably/rest/push/device_registrations.rb
|
329
345
|
- lib/submodules/ably-ruby/lib/ably/util/crypto.rb
|
330
346
|
- lib/submodules/ably-ruby/lib/ably/util/pub_sub.rb
|
331
347
|
- lib/submodules/ably-ruby/lib/ably/util/safe_deferrable.rb
|
@@ -340,6 +356,8 @@ files:
|
|
340
356
|
- lib/submodules/ably-ruby/spec/acceptance/realtime/message_spec.rb
|
341
357
|
- lib/submodules/ably-ruby/spec/acceptance/realtime/presence_history_spec.rb
|
342
358
|
- lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb
|
359
|
+
- lib/submodules/ably-ruby/spec/acceptance/realtime/push_admin_spec.rb
|
360
|
+
- lib/submodules/ably-ruby/spec/acceptance/realtime/push_spec.rb
|
343
361
|
- lib/submodules/ably-ruby/spec/acceptance/realtime/stats_spec.rb
|
344
362
|
- lib/submodules/ably-ruby/spec/acceptance/realtime/time_spec.rb
|
345
363
|
- lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb
|
@@ -350,9 +368,12 @@ files:
|
|
350
368
|
- lib/submodules/ably-ruby/spec/acceptance/rest/encoders_spec.rb
|
351
369
|
- lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb
|
352
370
|
- lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb
|
371
|
+
- lib/submodules/ably-ruby/spec/acceptance/rest/push_admin_spec.rb
|
372
|
+
- lib/submodules/ably-ruby/spec/acceptance/rest/push_spec.rb
|
353
373
|
- lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb
|
354
374
|
- lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb
|
355
375
|
- lib/submodules/ably-ruby/spec/rspec_config.rb
|
376
|
+
- lib/submodules/ably-ruby/spec/run_parallel_tests
|
356
377
|
- lib/submodules/ably-ruby/spec/shared/client_initializer_behaviour.rb
|
357
378
|
- lib/submodules/ably-ruby/spec/shared/model_behaviour.rb
|
358
379
|
- lib/submodules/ably-ruby/spec/shared/protocol_msgbus_behaviour.rb
|
@@ -376,6 +397,8 @@ files:
|
|
376
397
|
- lib/submodules/ably-ruby/spec/unit/models/cipher_params_spec.rb
|
377
398
|
- lib/submodules/ably-ruby/spec/unit/models/connection_details_spec.rb
|
378
399
|
- lib/submodules/ably-ruby/spec/unit/models/connection_state_change_spec.rb
|
400
|
+
- lib/submodules/ably-ruby/spec/unit/models/device_details_spec.rb
|
401
|
+
- lib/submodules/ably-ruby/spec/unit/models/device_push_details_spec.rb
|
379
402
|
- lib/submodules/ably-ruby/spec/unit/models/error_info_spec.rb
|
380
403
|
- lib/submodules/ably-ruby/spec/unit/models/http_paginated_result_spec.rb
|
381
404
|
- lib/submodules/ably-ruby/spec/unit/models/idiomatic_ruby_wrapper_spec.rb
|
@@ -387,6 +410,7 @@ files:
|
|
387
410
|
- lib/submodules/ably-ruby/spec/unit/models/paginated_result_spec.rb
|
388
411
|
- lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb
|
389
412
|
- lib/submodules/ably-ruby/spec/unit/models/protocol_message_spec.rb
|
413
|
+
- lib/submodules/ably-ruby/spec/unit/models/push_channel_subscription_spec.rb
|
390
414
|
- lib/submodules/ably-ruby/spec/unit/models/stats_spec.rb
|
391
415
|
- lib/submodules/ably-ruby/spec/unit/models/token_details_spec.rb
|
392
416
|
- lib/submodules/ably-ruby/spec/unit/models/token_request_spec.rb
|
@@ -401,12 +425,14 @@ files:
|
|
401
425
|
- lib/submodules/ably-ruby/spec/unit/realtime/connection_spec.rb
|
402
426
|
- lib/submodules/ably-ruby/spec/unit/realtime/incoming_message_dispatcher_spec.rb
|
403
427
|
- lib/submodules/ably-ruby/spec/unit/realtime/presence_spec.rb
|
428
|
+
- lib/submodules/ably-ruby/spec/unit/realtime/push_channel_spec.rb
|
404
429
|
- lib/submodules/ably-ruby/spec/unit/realtime/realtime_spec.rb
|
405
430
|
- lib/submodules/ably-ruby/spec/unit/realtime/safe_deferrable_spec.rb
|
406
431
|
- lib/submodules/ably-ruby/spec/unit/realtime/websocket_transport_spec.rb
|
407
432
|
- lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb
|
408
433
|
- lib/submodules/ably-ruby/spec/unit/rest/channels_spec.rb
|
409
434
|
- lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb
|
435
|
+
- lib/submodules/ably-ruby/spec/unit/rest/push_channel_spec.rb
|
410
436
|
- lib/submodules/ably-ruby/spec/unit/rest/rest_spec.rb
|
411
437
|
- lib/submodules/ably-ruby/spec/unit/util/crypto_spec.rb
|
412
438
|
- lib/submodules/ably-ruby/spec/unit/util/pub_sub_spec.rb
|
@@ -432,12 +458,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
432
458
|
version: '0'
|
433
459
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
434
460
|
requirements:
|
435
|
-
- - "
|
461
|
+
- - ">"
|
436
462
|
- !ruby/object:Gem::Version
|
437
|
-
version:
|
463
|
+
version: 1.3.1
|
438
464
|
requirements: []
|
439
|
-
|
440
|
-
rubygems_version: 2.7.6
|
465
|
+
rubygems_version: 3.0.3
|
441
466
|
signing_key:
|
442
467
|
specification_version: 4
|
443
468
|
summary: A Ruby REST only client library for ably.io realtime messaging
|