ably 0.8.7 → 0.8.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -3
  3. data/ably.gemspec +1 -1
  4. data/lib/ably/auth.rb +12 -3
  5. data/lib/ably/logger.rb +3 -1
  6. data/lib/ably/models/connection_details.rb +2 -1
  7. data/lib/ably/models/idiomatic_ruby_wrapper.rb +1 -1
  8. data/lib/ably/models/message.rb +4 -2
  9. data/lib/ably/models/message_encoders/cipher.rb +2 -2
  10. data/lib/ably/models/paginated_result.rb +27 -1
  11. data/lib/ably/models/presence_message.rb +3 -1
  12. data/lib/ably/models/{stat.rb → stats.rb} +5 -3
  13. data/lib/ably/modules/async_wrapper.rb +1 -1
  14. data/lib/ably/modules/channels_collection.rb +11 -1
  15. data/lib/ably/modules/enum.rb +18 -2
  16. data/lib/ably/modules/event_emitter.rb +3 -3
  17. data/lib/ably/modules/safe_deferrable.rb +1 -1
  18. data/lib/ably/modules/safe_yield.rb +2 -2
  19. data/lib/ably/modules/state_emitter.rb +8 -8
  20. data/lib/ably/modules/statesman_monkey_patch.rb +2 -2
  21. data/lib/ably/modules/uses_state_machine.rb +4 -2
  22. data/lib/ably/realtime.rb +1 -0
  23. data/lib/ably/realtime/auth.rb +6 -2
  24. data/lib/ably/realtime/channel.rb +6 -4
  25. data/lib/ably/realtime/channel/channel_manager.rb +7 -1
  26. data/lib/ably/realtime/client.rb +7 -12
  27. data/lib/ably/realtime/client/incoming_message_dispatcher.rb +9 -2
  28. data/lib/ably/realtime/client/outgoing_message_dispatcher.rb +7 -1
  29. data/lib/ably/realtime/connection.rb +19 -8
  30. data/lib/ably/realtime/connection/connection_manager.rb +16 -9
  31. data/lib/ably/realtime/connection/websocket_transport.rb +12 -3
  32. data/lib/ably/realtime/presence.rb +6 -6
  33. data/lib/ably/realtime/presence/members_map.rb +21 -7
  34. data/lib/ably/rest/channel.rb +8 -8
  35. data/lib/ably/rest/client.rb +1 -1
  36. data/lib/ably/rest/middleware/exceptions.rb +3 -1
  37. data/lib/ably/rest/presence.rb +4 -4
  38. data/lib/ably/version.rb +1 -1
  39. data/spec/acceptance/realtime/channel_history_spec.rb +4 -4
  40. data/spec/acceptance/realtime/connection_failures_spec.rb +2 -4
  41. data/spec/acceptance/realtime/connection_spec.rb +46 -8
  42. data/spec/acceptance/realtime/presence_spec.rb +49 -34
  43. data/spec/acceptance/rest/auth_spec.rb +1 -1
  44. data/spec/acceptance/rest/base_spec.rb +1 -1
  45. data/spec/shared/safe_deferrable_behaviour.rb +4 -4
  46. data/spec/unit/models/message_encoders/cipher_spec.rb +1 -1
  47. data/spec/unit/models/token_details_spec.rb +20 -18
  48. data/spec/unit/modules/event_emitter_spec.rb +2 -2
  49. data/spec/unit/modules/state_emitter_spec.rb +6 -6
  50. data/spec/unit/realtime/channel_spec.rb +4 -4
  51. data/spec/unit/realtime/connection_spec.rb +1 -1
  52. data/spec/unit/realtime/presence_spec.rb +5 -5
  53. metadata +5 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bddcc0bf82f649840942920da7506c0bedba4c89
4
- data.tar.gz: 9a920e4bb42e6770442d25d17f8f276eb82452c6
3
+ metadata.gz: 8b659327cc341068fce6404895940be1547529f7
4
+ data.tar.gz: 1cefe9e6c6ea0a874b71f37834088d85efd76307
5
5
  SHA512:
6
- metadata.gz: dd4b8b79859f80cffff7f6087dc73ba56f1bbaf61a4364b8586b61b1d1fec90c7d1c239bfb87d4524f30d6567bb298d1206996583bc2278a9ba328d412b3a5f5
7
- data.tar.gz: 2e886e10cb4d543e57420ae6d29e872608b0f5fb864374399f392959fc0033a9c9c5add42cafd266ee6e64514284fa5381e95c50ab17b4b986ce97db575539b4
6
+ metadata.gz: ca4059010c9811beb36753c2cc346c74fed4ac94a20caa45d3a62ec3d4abf5ba32dc90d0687c0f7a88bd642224e843a78dcc1a4537215d3d9a24b7adbb31c84c
7
+ data.tar.gz: a24b1ecf027d74490030d49bffafff647c4d9066b70ce603f7b82f1e987679817931267857e5087b3a0d84d197e6d058136417aa2b98c44fb7f64da109821a14
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.8.8](https://github.com/ably/ably-ruby/tree/v0.8.8)
4
+
5
+ [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.7...v0.8.8)
6
+
7
+ **Closed issues:**
8
+
9
+ - Support :key in ClientOptions and deprecate :api\_key [\#73](https://github.com/ably/ably-ruby/issues/73)
10
+
11
+ ## [v0.8.7](https://github.com/ably/ably-ruby/tree/v0.8.7) (2015-12-31)
12
+
13
+ [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.6...v0.8.7)
14
+
3
15
  ## [v0.8.6](https://github.com/ably/ably-ruby/tree/v0.8.6) (2015-12-02)
4
16
 
5
17
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.5...v0.8.6)
@@ -13,6 +25,7 @@
13
25
  - 0.8 final spec \(98% compliance\) [\#66](https://github.com/ably/ably-ruby/pull/66) ([mattheworiordan](https://github.com/mattheworiordan))
14
26
 
15
27
  ## [v0.8.5](https://github.com/ably/ably-ruby/tree/v0.8.5) (2015-10-08)
28
+
16
29
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.4...v0.8.5)
17
30
 
18
31
  **Implemented enhancements:**
@@ -22,7 +35,9 @@
22
35
  **Fixed bugs:**
23
36
 
24
37
  - Switch arity of auth methods [\#61](https://github.com/ably/ably-ruby/issues/61)
38
+
25
39
  - Add test: Message published, connection dropped, then restores to point before last message was published [\#56](https://github.com/ably/ably-ruby/issues/56)
40
+
26
41
  - Documentation for constructor is incorrect [\#49](https://github.com/ably/ably-ruby/issues/49)
27
42
 
28
43
  **Merged pull requests:**
@@ -30,30 +45,41 @@
30
45
  - Ensure connections are always closed in tests [\#63](https://github.com/ably/ably-ruby/pull/63) ([mattheworiordan](https://github.com/mattheworiordan))
31
46
 
32
47
  ## [v0.8.4](https://github.com/ably/ably-ruby/tree/v0.8.4) (2015-09-08)
48
+
33
49
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.3...v0.8.4)
34
50
 
35
51
  **Implemented enhancements:**
36
52
 
37
53
  - Add compatibility support for default Crypto params [\#53](https://github.com/ably/ably-ruby/issues/53)
54
+
38
55
  - EventEmitter on connection [\#52](https://github.com/ably/ably-ruby/issues/52)
56
+
39
57
  - Add test for connectionId attribute for a message sent over REST [\#50](https://github.com/ably/ably-ruby/issues/50)
40
58
 
41
59
  **Merged pull requests:**
42
60
 
43
61
  - Spec update to fix a number of issues [\#60](https://github.com/ably/ably-ruby/pull/60) ([mattheworiordan](https://github.com/mattheworiordan))
62
+
44
63
  - Allow clientId to be provided on init if using externally created token [\#58](https://github.com/ably/ably-ruby/pull/58) ([SimonWoolf](https://github.com/SimonWoolf))
45
64
 
46
65
  ## [v0.8.3](https://github.com/ably/ably-ruby/tree/v0.8.3) (2015-08-19)
66
+
47
67
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.2...v0.8.3)
48
68
 
49
69
  **Implemented enhancements:**
50
70
 
51
71
  - Implement :queue\_messages option [\#36](https://github.com/ably/ably-ruby/issues/36)
72
+
52
73
  - Check that a non 200-299 status code for REST requests uses fallback hosts [\#35](https://github.com/ably/ably-ruby/issues/35)
74
+
53
75
  - Move stats fixtures into ably-common [\#34](https://github.com/ably/ably-ruby/issues/34)
76
+
54
77
  - Add tests for messages with no data or name fields [\#21](https://github.com/ably/ably-ruby/issues/21)
78
+
55
79
  - Namespace MsgPack as MsgPack5 because compliance is not merged in [\#12](https://github.com/ably/ably-ruby/issues/12)
80
+
56
81
  - Add test coverage for receiving messages more than once i.e. historical messages resent somehow on reconnect [\#11](https://github.com/ably/ably-ruby/issues/11)
82
+
57
83
  - Add async methods for Authentication in the realtime library [\#8](https://github.com/ably/ably-ruby/issues/8)
58
84
 
59
85
  **Fixed bugs:**
@@ -63,28 +89,37 @@
63
89
  **Closed issues:**
64
90
 
65
91
  - Scope default token params in arguments [\#55](https://github.com/ably/ably-ruby/issues/55)
92
+
66
93
  - Channel options can be reset when accessing a channel with \#get [\#46](https://github.com/ably/ably-ruby/issues/46)
67
94
 
68
95
  **Merged pull requests:**
69
96
 
70
97
  - Separate token params for auth [\#57](https://github.com/ably/ably-ruby/pull/57) ([mattheworiordan](https://github.com/mattheworiordan))
98
+
71
99
  - Ensure files are required in a consistent order [\#51](https://github.com/ably/ably-ruby/pull/51) ([SimonWoolf](https://github.com/SimonWoolf))
72
100
 
73
101
  ## [v0.8.2](https://github.com/ably/ably-ruby/tree/v0.8.2) (2015-05-20)
102
+
74
103
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.1...v0.8.2)
75
104
 
76
105
  **Implemented enhancements:**
77
106
 
78
107
  - Ensure Array object can be used in place of Hash for payload [\#44](https://github.com/ably/ably-ruby/issues/44)
108
+
79
109
  - Change connect\_automatically option to auto\_connect for consistency [\#42](https://github.com/ably/ably-ruby/issues/42)
110
+
80
111
  - Rename PaginatedResource to PaginatedResult for consistency [\#40](https://github.com/ably/ably-ruby/issues/40)
112
+
81
113
  - EventEmitter should use `emit` not `trigger` to be consistent with other libs [\#31](https://github.com/ably/ably-ruby/issues/31)
114
+
82
115
  - Add exceptions when data attribute for messages/presence is not String, Binary or JSON data [\#4](https://github.com/ably/ably-ruby/issues/4)
116
+
83
117
  - Auth Callback and Auth URL should support tokens as well as token requests [\#2](https://github.com/ably/ably-ruby/issues/2)
84
118
 
85
119
  **Closed issues:**
86
120
 
87
121
  - Realtime Presence\#get does not wait by default [\#47](https://github.com/ably/ably-ruby/issues/47)
122
+
88
123
  - No implicit attach when accessing channel.presence [\#45](https://github.com/ably/ably-ruby/issues/45)
89
124
 
90
125
  **Merged pull requests:**
@@ -92,9 +127,11 @@
92
127
  - Reject invalid payload type [\#48](https://github.com/ably/ably-ruby/pull/48) ([mattheworiordan](https://github.com/mattheworiordan))
93
128
 
94
129
  ## [v0.8.1](https://github.com/ably/ably-ruby/tree/v0.8.1) (2015-04-23)
130
+
95
131
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.0...v0.8.1)
96
132
 
97
133
  ## [v0.8.0](https://github.com/ably/ably-ruby/tree/v0.8.0) (2015-04-23)
134
+
98
135
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.6...v0.8.0)
99
136
 
100
137
  **Merged pull requests:**
@@ -102,15 +139,18 @@
102
139
  - Token naming refactor [\#29](https://github.com/ably/ably-ruby/pull/29) ([mattheworiordan](https://github.com/mattheworiordan))
103
140
 
104
141
  ## [v0.7.6](https://github.com/ably/ably-ruby/tree/v0.7.6) (2015-04-17)
142
+
105
143
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.5...v0.7.6)
106
144
 
107
145
  **Implemented enhancements:**
108
146
 
109
147
  - Rename Stat to Stats for consistency [\#32](https://github.com/ably/ably-ruby/issues/32)
148
+
110
149
  - Stats objects [\#24](https://github.com/ably/ably-ruby/issues/24)
150
+
111
151
  - Need a test to handle errors in callbacks [\#13](https://github.com/ably/ably-ruby/issues/13)
152
+
112
153
  - Allow token ID or API key in the client constructor [\#5](https://github.com/ably/ably-ruby/issues/5)
113
- - Typed stats similar to Java library + zero default for empty stats [\#25](https://github.com/ably/ably-ruby/pull/25) ([mattheworiordan](https://github.com/mattheworiordan))
114
154
 
115
155
  **Fixed bugs:**
116
156
 
@@ -123,14 +163,19 @@
123
163
  **Merged pull requests:**
124
164
 
125
165
  - Test encoded presence fixture data for \#get & \#history [\#28](https://github.com/ably/ably-ruby/pull/28) ([mattheworiordan](https://github.com/mattheworiordan))
166
+
126
167
  - Add coveralls.io coverage reporting [\#27](https://github.com/ably/ably-ruby/pull/27) ([mattheworiordan](https://github.com/mattheworiordan))
168
+
127
169
  - New paginated resource [\#26](https://github.com/ably/ably-ruby/pull/26) ([mattheworiordan](https://github.com/mattheworiordan))
128
- - History since attach [\#22](https://github.com/ably/ably-ruby/pull/22) ([mattheworiordan](https://github.com/mattheworiordan))
170
+
171
+ - Typed stats similar to Java library + zero default for empty stats [\#25](https://github.com/ably/ably-ruby/pull/25) ([mattheworiordan](https://github.com/mattheworiordan))
129
172
 
130
173
  ## [v0.7.5](https://github.com/ably/ably-ruby/tree/v0.7.5) (2015-03-21)
174
+
131
175
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.4...v0.7.5)
132
176
 
133
177
  ## [v0.7.4](https://github.com/ably/ably-ruby/tree/v0.7.4) (2015-03-21)
178
+
134
179
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.2...v0.7.4)
135
180
 
136
181
  **Merged pull requests:**
@@ -138,6 +183,7 @@
138
183
  - Presence Member Map [\#14](https://github.com/ably/ably-ruby/pull/14) ([mattheworiordan](https://github.com/mattheworiordan))
139
184
 
140
185
  ## [v0.7.2](https://github.com/ably/ably-ruby/tree/v0.7.2) (2015-02-10)
186
+
141
187
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.1...v0.7.2)
142
188
 
143
189
  **Implemented enhancements:**
@@ -147,12 +193,15 @@
147
193
  **Merged pull requests:**
148
194
 
149
195
  - Update README to include various missing snippets for core features [\#9](https://github.com/ably/ably-ruby/pull/9) ([kouno](https://github.com/kouno))
196
+
150
197
  - Fix connection retry frequency [\#7](https://github.com/ably/ably-ruby/pull/7) ([kouno](https://github.com/kouno))
151
198
 
152
199
  ## [v0.7.1](https://github.com/ably/ably-ruby/tree/v0.7.1) (2015-01-18)
200
+
153
201
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.0...v0.7.1)
154
202
 
155
203
  ## [v0.7.0](https://github.com/ably/ably-ruby/tree/v0.7.0) (2015-01-12)
204
+
156
205
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.6.2...v0.7.0)
157
206
 
158
207
  **Closed issues:**
@@ -160,30 +209,39 @@
160
209
  - JSON encoder should only append utf-8 before a cipher encoder is applied [\#1](https://github.com/ably/ably-ruby/issues/1)
161
210
 
162
211
  ## [v0.6.2](https://github.com/ably/ably-ruby/tree/v0.6.2) (2014-12-10)
212
+
163
213
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.2.0...v0.6.2)
164
214
 
165
215
  ## [v0.2.0](https://github.com/ably/ably-ruby/tree/v0.2.0) (2014-12-09)
216
+
166
217
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.6...v0.2.0)
167
218
 
168
219
  ## [v0.1.6](https://github.com/ably/ably-ruby/tree/v0.1.6) (2014-10-31)
220
+
169
221
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.5...v0.1.6)
170
222
 
171
223
  ## [v0.1.5](https://github.com/ably/ably-ruby/tree/v0.1.5) (2014-10-23)
224
+
172
225
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.4...v0.1.5)
173
226
 
174
227
  ## [v0.1.4](https://github.com/ably/ably-ruby/tree/v0.1.4) (2014-09-27)
228
+
175
229
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.3...v0.1.4)
176
230
 
177
231
  ## [v0.1.3](https://github.com/ably/ably-ruby/tree/v0.1.3) (2014-09-26)
232
+
178
233
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.2...v0.1.3)
179
234
 
180
235
  ## [v0.1.2](https://github.com/ably/ably-ruby/tree/v0.1.2) (2014-09-25)
236
+
181
237
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.1...v0.1.2)
182
238
 
183
239
  ## [v0.1.1](https://github.com/ably/ably-ruby/tree/v0.1.1) (2014-09-23)
240
+
184
241
  [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.1.0...v0.1.1)
185
242
 
186
243
  ## [v0.1.0](https://github.com/ably/ably-ruby/tree/v0.1.0) (2014-09-23)
187
244
 
188
245
 
189
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
246
+
247
+ \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
23
23
  spec.add_runtime_dependency 'statesman', '~> 1.0.0'
24
24
  spec.add_runtime_dependency 'faraday', '~> 0.9'
25
25
  spec.add_runtime_dependency 'json'
26
- spec.add_runtime_dependency 'websocket-driver', '~> 0.3'
26
+ spec.add_runtime_dependency 'websocket-driver', '~> 0.6'
27
27
  spec.add_runtime_dependency 'msgpack', '>= 0.6.2'
28
28
  spec.add_runtime_dependency 'addressable', '>= 2.0.0'
29
29
 
@@ -54,6 +54,10 @@ module Ably
54
54
  raise ArgumentError, 'Expected token_params to be a Hash'
55
55
  end
56
56
 
57
+ # Ensure instance variables are defined
58
+ @client_id = nil
59
+ @client_id_validated = nil
60
+
57
61
  ensure_valid_auth_attributes auth_options
58
62
 
59
63
  @client = client
@@ -401,8 +405,13 @@ module Ably
401
405
  end
402
406
 
403
407
  private
404
- attr_reader :client
405
- attr_reader :token_option
408
+ def client
409
+ @client
410
+ end
411
+
412
+ def token_option
413
+ @token_option
414
+ end
406
415
 
407
416
  def ensure_valid_auth_attributes(attributes)
408
417
  if attributes[:timestamp]
@@ -453,7 +462,7 @@ module Ably
453
462
  end
454
463
 
455
464
  def split_api_key_into_key_and_secret!(options)
456
- api_key_parts = options[:key].to_s.match(/(?<name>[\w_-]+\.[\w_-]+):(?<secret>[\w_-]+)/)
465
+ api_key_parts = options[:key].to_s.match(/(?<name>[\w-]+\.[\w-]+):(?<secret>[\w-]+)/)
457
466
  raise ArgumentError, 'key is invalid' unless api_key_parts
458
467
 
459
468
  options[:key_name] = api_key_parts[:name].encode(Encoding::UTF_8)
@@ -37,7 +37,9 @@ module Ably
37
37
  def_delegators :logger, :fatal, :error, :warn, :info, :debug
38
38
 
39
39
  private
40
- attr_reader :client
40
+ def client
41
+ @client
42
+ end
41
43
 
42
44
  def color(color_value, string)
43
45
  "\033[#{color_value}m#{string}\033[0m"
@@ -28,6 +28,7 @@ module Ably::Models
28
28
  # @option attributes [Integer] :max_frame_size maximum size for a single frame of data sent to Ably. This restriction applies to a {Ably::Models::ProtocolMessage} sent over a realtime connection, or the total body size for a REST request
29
29
  # @option attributes [Integer] :max_inbound_rate maximum allowable number of requests per second from a client
30
30
  # @option attributes [Integer] :connection_state_ttl duration in seconds that Ably will persist the connection state when a Realtime client is abruptly disconnected
31
+ # @option attributes [String] :server_id unique identifier of the Ably server where the connection is established
31
32
  #
32
33
  def initialize(attributes = {})
33
34
  @hash_object = IdiomaticRubyWrapper(attributes.clone)
@@ -35,7 +36,7 @@ module Ably::Models
35
36
  hash.freeze
36
37
  end
37
38
 
38
- %w(client_id connection_key max_message_size max_frame_size max_inbound_rate connection_state_ttl).each do |attribute|
39
+ %w(client_id connection_key max_message_size max_frame_size max_inbound_rate connection_state_ttl server_id).each do |attribute|
39
40
  define_method attribute do
40
41
  hash[attribute.to_sym]
41
42
  end
@@ -150,7 +150,7 @@ module Ably::Models
150
150
  # wrapper.as_json({ 'mixedCase': true, 'snakeCase': 1 })
151
151
  def as_json(*args)
152
152
  hash.each_with_object({}) do |key_val, new_hash|
153
- key, val = key_val
153
+ key = key_val[0]
154
154
  mixed_case_key = convert_to_mixed_case(key)
155
155
  wrapped_val = self[key]
156
156
  wrapped_val = wrapped_val.as_json(args) if wrapped_val.kind_of?(IdiomaticRubyWrapper)
@@ -62,7 +62,7 @@ module Ably::Models
62
62
  ensure_utf_8 :encoding, encoding, allow_nil: true
63
63
  end
64
64
 
65
- %w( name client_id encoding connection_id ).each do |attribute|
65
+ %w( name client_id encoding ).each do |attribute|
66
66
  define_method attribute do
67
67
  hash[attribute.to_sym]
68
68
  end
@@ -120,7 +120,9 @@ module Ably::Models
120
120
  end
121
121
 
122
122
  private
123
- attr_reader :raw_hash_object
123
+ def raw_hash_object
124
+ @raw_hash_object
125
+ end
124
126
 
125
127
  def protocol_message_index
126
128
  protocol_message.messages.map(&:object_id).index(self.object_id)
@@ -73,11 +73,11 @@ module Ably::Models::MessageEncoders
73
73
  end
74
74
 
75
75
  def cipher_algorithm(message)
76
- current_encoding_part(message).to_s[/^#{ENCODING_ID}\+([\w_-]+)$/, 1]
76
+ current_encoding_part(message).to_s[/^#{ENCODING_ID}\+([\w-]+)$/, 1]
77
77
  end
78
78
 
79
79
  def already_encrypted?(message)
80
- message.fetch(:encoding, '').to_s.match(%r{(^|/)#{ENCODING_ID}\+([\w_-]+)($|/)})
80
+ message.fetch(:encoding, '').to_s.match(%r{(^|/)#{ENCODING_ID}\+([\w-]+)($|/)})
81
81
  end
82
82
  end
83
83
  end
@@ -95,7 +95,33 @@ module Ably::Models
95
95
  end
96
96
 
97
97
  private
98
- attr_reader :http_response, :base_url, :client, :coerce_into, :raw_body, :each_block, :make_async
98
+ def http_response
99
+ @http_response
100
+ end
101
+
102
+ def base_url
103
+ @base_url
104
+ end
105
+
106
+ def client
107
+ @client
108
+ end
109
+
110
+ def coerce_into
111
+ @coerce_into
112
+ end
113
+
114
+ def raw_body
115
+ @raw_body
116
+ end
117
+
118
+ def each_block
119
+ @each_block
120
+ end
121
+
122
+ def make_async
123
+ @make_async
124
+ end
99
125
 
100
126
  def coerce_items_into(items, type_string)
101
127
  items.map do |item|
@@ -143,7 +143,9 @@ module Ably::Models
143
143
  end
144
144
 
145
145
  private
146
- attr_reader :raw_hash_object
146
+ def raw_hash_object
147
+ @raw_hash_object
148
+ end
147
149
 
148
150
  def protocol_message_index
149
151
  protocol_message.presence.index(self)
@@ -82,7 +82,7 @@ module Ably::Models
82
82
  def from_interval_id(interval_id)
83
83
  raise ArgumentError, 'Interval ID must be a string' unless interval_id.kind_of?(String)
84
84
 
85
- format = INTERVAL_FORMAT_STRING.find { |format| expected_length(format) == interval_id.length }
85
+ format = INTERVAL_FORMAT_STRING.find { |fmt| expected_length(fmt) == interval_id.length }
86
86
  raise ArgumentError, 'Interval ID is an invalid length' unless format
87
87
 
88
88
  Time.strptime("#{interval_id} +0000", "#{format} %z").utc
@@ -99,7 +99,7 @@ module Ably::Models
99
99
  def granularity_from_interval_id(interval_id)
100
100
  raise ArgumentError, 'Interval ID must be a string' unless interval_id.kind_of?(String)
101
101
 
102
- format = INTERVAL_FORMAT_STRING.find { |format| expected_length(format) == interval_id.length }
102
+ format = INTERVAL_FORMAT_STRING.find { |fmt| expected_length(fmt) == interval_id.length }
103
103
  raise ArgumentError, 'Interval ID is an invalid length' unless format
104
104
 
105
105
  GRANULARITY[INTERVAL_FORMAT_STRING.index(format)]
@@ -195,7 +195,9 @@ module Ably::Models
195
195
  end
196
196
 
197
197
  private
198
- attr_reader :raw_hash_object
198
+ def raw_hash_object
199
+ @raw_hash_object
200
+ end
199
201
 
200
202
  def set_hash_object(hash)
201
203
  @hash_object = IdiomaticRubyWrapper(hash.clone.freeze)
@@ -42,7 +42,7 @@ module Ably::Modules
42
42
  raise ArgumentError, 'Block required' unless block_given?
43
43
 
44
44
  Ably::Util::SafeDeferrable.new(logger).tap do |deferrable|
45
- deferrable.callback &success_callback if success_callback
45
+ deferrable.callback(&success_callback) if success_callback
46
46
 
47
47
  operation_with_exception_handling = proc do
48
48
  begin
@@ -70,6 +70,16 @@ module Ably::Modules
70
70
  end
71
71
 
72
72
  private
73
- attr_reader :client, :channel_klass, :channels
73
+ def client
74
+ @client
75
+ end
76
+
77
+ def channel_klass
78
+ @channel_klass
79
+ end
80
+
81
+ def channels
82
+ @channels
83
+ end
74
84
  end
75
85
  end