ably-rest 0.8.2 → 0.8.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +1 -43
  3. data/SPEC.md +707 -580
  4. data/lib/submodules/ably-ruby/.travis.yml +1 -0
  5. data/lib/submodules/ably-ruby/CHANGELOG.md +143 -3
  6. data/lib/submodules/ably-ruby/README.md +1 -1
  7. data/lib/submodules/ably-ruby/SPEC.md +842 -520
  8. data/lib/submodules/ably-ruby/ably.gemspec +1 -1
  9. data/lib/submodules/ably-ruby/lib/ably/auth.rb +114 -87
  10. data/lib/submodules/ably-ruby/lib/ably/exceptions.rb +40 -14
  11. data/lib/submodules/ably-ruby/lib/ably/models/message.rb +3 -5
  12. data/lib/submodules/ably-ruby/lib/ably/models/paginated_result.rb +3 -12
  13. data/lib/submodules/ably-ruby/lib/ably/models/presence_message.rb +8 -2
  14. data/lib/submodules/ably-ruby/lib/ably/models/protocol_message.rb +15 -3
  15. data/lib/submodules/ably-ruby/lib/ably/models/stat.rb +1 -1
  16. data/lib/submodules/ably-ruby/lib/ably/models/token_details.rb +1 -1
  17. data/lib/submodules/ably-ruby/lib/ably/modules/channels_collection.rb +7 -1
  18. data/lib/submodules/ably-ruby/lib/ably/modules/conversions.rb +1 -1
  19. data/lib/submodules/ably-ruby/lib/ably/modules/encodeable.rb +6 -3
  20. data/lib/submodules/ably-ruby/lib/ably/modules/message_pack.rb +2 -2
  21. data/lib/submodules/ably-ruby/lib/ably/modules/model_common.rb +1 -1
  22. data/lib/submodules/ably-ruby/lib/ably/modules/state_machine.rb +2 -2
  23. data/lib/submodules/ably-ruby/lib/ably/realtime.rb +1 -0
  24. data/lib/submodules/ably-ruby/lib/ably/realtime/auth.rb +191 -0
  25. data/lib/submodules/ably-ruby/lib/ably/realtime/channel.rb +97 -25
  26. data/lib/submodules/ably-ruby/lib/ably/realtime/channel/channel_manager.rb +11 -3
  27. data/lib/submodules/ably-ruby/lib/ably/realtime/client.rb +22 -6
  28. data/lib/submodules/ably-ruby/lib/ably/realtime/connection.rb +73 -40
  29. data/lib/submodules/ably-ruby/lib/ably/realtime/connection/connection_manager.rb +48 -33
  30. data/lib/submodules/ably-ruby/lib/ably/realtime/presence.rb +17 -3
  31. data/lib/submodules/ably-ruby/lib/ably/rest/channel.rb +43 -16
  32. data/lib/submodules/ably-ruby/lib/ably/rest/client.rb +57 -26
  33. data/lib/submodules/ably-ruby/lib/ably/rest/middleware/exceptions.rb +3 -1
  34. data/lib/submodules/ably-ruby/lib/ably/rest/middleware/fail_if_unsupported_mime_type.rb +4 -2
  35. data/lib/submodules/ably-ruby/lib/ably/rest/presence.rb +1 -0
  36. data/lib/submodules/ably-ruby/lib/ably/version.rb +1 -1
  37. data/lib/submodules/ably-ruby/spec/acceptance/realtime/auth_spec.rb +242 -0
  38. data/lib/submodules/ably-ruby/spec/acceptance/realtime/channel_spec.rb +277 -5
  39. data/lib/submodules/ably-ruby/spec/acceptance/realtime/channels_spec.rb +64 -0
  40. data/lib/submodules/ably-ruby/spec/acceptance/realtime/client_spec.rb +26 -5
  41. data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_failures_spec.rb +23 -6
  42. data/lib/submodules/ably-ruby/spec/acceptance/realtime/connection_spec.rb +167 -16
  43. data/lib/submodules/ably-ruby/spec/acceptance/realtime/message_spec.rb +9 -8
  44. data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_history_spec.rb +1 -0
  45. data/lib/submodules/ably-ruby/spec/acceptance/realtime/presence_spec.rb +121 -10
  46. data/lib/submodules/ably-ruby/spec/acceptance/realtime/stats_spec.rb +13 -1
  47. data/lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb +161 -79
  48. data/lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb +3 -3
  49. data/lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb +142 -15
  50. data/lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb +23 -0
  51. data/lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb +180 -18
  52. data/lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb +8 -8
  53. data/lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb +136 -25
  54. data/lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb +60 -4
  55. data/lib/submodules/ably-ruby/spec/shared/client_initializer_behaviour.rb +54 -3
  56. data/lib/submodules/ably-ruby/spec/unit/auth_spec.rb +7 -6
  57. data/lib/submodules/ably-ruby/spec/unit/models/message_spec.rb +1 -9
  58. data/lib/submodules/ably-ruby/spec/unit/models/paginated_result_spec.rb +1 -18
  59. data/lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb +1 -1
  60. data/lib/submodules/ably-ruby/spec/unit/models/protocol_message_spec.rb +21 -1
  61. data/lib/submodules/ably-ruby/spec/unit/realtime/channel_spec.rb +10 -3
  62. data/lib/submodules/ably-ruby/spec/unit/realtime/channels_spec.rb +27 -8
  63. data/lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb +0 -8
  64. data/lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb +7 -7
  65. metadata +5 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ef2fa15604f31aba5f195c27fc770e8286e751ba
4
- data.tar.gz: 6726fb25c2fd8fecfd120b763838105d213f0d9c
3
+ metadata.gz: 6dc33fd0a8246405f3b3db4aa1adfa03711a6ccc
4
+ data.tar.gz: 0de772597367cd55d99437a0bbb34302086c1ee8
5
5
  SHA512:
6
- metadata.gz: b5450fca1fe779000c26bce9360c70d3fce19369e7d06d75cb701613e16848922b3db3f8653a5e54748ff7142d03b8da5aab0908a2105832b3d5f951855aedb6
7
- data.tar.gz: f762c928f040729a63c535c3a6ea17a0fa6af63877b1d7d7e0451c6fb55db66a2b40dcdf4d8110cb2defdcf8093921ce053b73b70a5295a6b0fc5c3f1fbbd9f3
6
+ metadata.gz: 72696b8f25b34f36552978221b44f4f75bdc2772743b43d13686aabe4ed41932e88bc5e93b4b095d3abdc743d72b7d6f1cfba199f14ff7f618d9407bd9cdabd3
7
+ data.tar.gz: 4252aa2885f5e75ba6ad219aa4af7edef9989f4ba122972ab6e8b9d9d1b5e08794286819d6f26fa54746b0988a6725307c566b191be6a207e15a96f03a7eefb6
@@ -1,45 +1,3 @@
1
1
  # Change Log
2
2
 
3
- **Merged pull requests:**
4
-
5
- - Ensure files are required in a consistent order [\#51](https://github.com/ably/ably-ruby/pull/51) ([SimonWoolf](https://github.com/SimonWoolf))
6
-
7
- ## [v0.8.2](https://github.com/ably/ably-ruby/tree/v0.8.2) (2015-05-20)
8
-
9
- [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.1...v0.8.2)
10
-
11
- **Implemented enhancements:**
12
-
13
- - Ensure Array object can be used in place of Hash for payload [\#44](https://github.com/ably/ably-ruby/issues/44)
14
-
15
- - Change connect\_automatically option to auto\_connect for consistency [\#42](https://github.com/ably/ably-ruby/issues/42)
16
-
17
- - Rename PaginatedResource to PaginatedResult for consistency [\#40](https://github.com/ably/ably-ruby/issues/40)
18
-
19
- - EventEmitter should use `emit` not `trigger` to be consistent with other libs [\#31](https://github.com/ably/ably-ruby/issues/31)
20
-
21
- - Add exceptions when data attribute for messages/presence is not String, Binary or JSON data [\#4](https://github.com/ably/ably-ruby/issues/4)
22
-
23
- - Auth Callback and Auth URL should support tokens as well as token requests [\#2](https://github.com/ably/ably-ruby/issues/2)
24
-
25
- **Closed issues:**
26
-
27
- - Realtime Presence\#get does not wait by default [\#47](https://github.com/ably/ably-ruby/issues/47)
28
-
29
- - No implicit attach when accessing channel.presence [\#45](https://github.com/ably/ably-ruby/issues/45)
30
-
31
- **Merged pull requests:**
32
-
33
- - Reject invalid payload type [\#48](https://github.com/ably/ably-ruby/pull/48) ([mattheworiordan](https://github.com/mattheworiordan))
34
-
35
- ## [v0.8.1](https://github.com/ably/ably-ruby/tree/v0.8.1) (2015-04-23)
36
-
37
- [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.8.0...v0.8.1)
38
-
39
- ## [v0.8.0](https://github.com/ably/ably-ruby/tree/v0.8.0) (2015-04-23)
40
-
41
- [Initial implementation of client library specification 0.8](http://docs.ably.io/client-lib-development-guide/features/)
42
-
43
- [Full Changelog](https://github.com/ably/ably-ruby/compare/v0.7.6...v0.8.0)
44
-
45
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
3
+ See https://github.com/ably/ably-ruby/blob/master/CHANGELOG.md
data/SPEC.md CHANGED
@@ -1,1078 +1,1205 @@
1
- # Ably REST Client Library 0.8.1 Specification
1
+ # Ably REST Client Library 0.8.3 Specification
2
2
 
3
3
  ### Ably::Auth
4
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb))_
4
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/auth_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb))_
5
5
  * using JSON and MsgPack protocol
6
- * [has immutable options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L54)
6
+ * [has immutable options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L60)
7
7
  * #request_token
8
- * [returns a valid requested token in the expected format with valid issued and expires attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L69)
9
- * with option :client_id
10
- * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L101)
11
- * with option :capability
12
- * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L101)
13
- * with option :nonce
14
- * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L101)
15
- * with option :timestamp
16
- * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L101)
17
- * with option :ttl
18
- * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L101)
8
+ * [creates a TokenRequest automatically and sends it to Ably to obtain a token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L75)
9
+ * [returns a valid TokenDetails object in the expected format with valid issued and expires attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L84)
10
+ * with token_param :client_id
11
+ * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L117)
12
+ * with token_param :capability
13
+ * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L117)
14
+ * with token_param :nonce
15
+ * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L117)
16
+ * with token_param :timestamp
17
+ * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L117)
18
+ * with token_param :ttl
19
+ * [overrides default and uses camelCase notation for attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L117)
19
20
  * with :key option
20
- * [key_name is used in request and signing uses key_secret](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L130)
21
+ * [key_name is used in request and signing uses key_secret](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L147)
21
22
  * with :key_name & :key_secret options
22
- * [key_name is used in request and signing uses key_secret](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L159)
23
+ * [key_name is used in request and signing uses key_secret](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L177)
23
24
  * with :query_time option
24
- * [queries the server for the time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L167)
25
+ * [queries the server for the time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L185)
25
26
  * without :query_time option
26
- * [does not query the server for the time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L176)
27
+ * [does not query the server for the time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L194)
27
28
  * with :auth_url option
28
29
  * when response from :auth_url is a valid token request
29
- * [requests a token from :auth_url using an HTTP GET request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L224)
30
- * [returns a valid token generated from the token request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L229)
30
+ * [requests a token from :auth_url using an HTTP GET request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L242)
31
+ * [returns a valid token generated from the token request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L247)
31
32
  * with :query_params
32
- * [requests a token from :auth_url with the :query_params](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L236)
33
+ * [requests a token from :auth_url with the :query_params](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L254)
33
34
  * with :headers
34
- * [requests a token from :auth_url with the HTTP headers set](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L244)
35
+ * [requests a token from :auth_url with the HTTP headers set](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L262)
35
36
  * with POST
36
- * [requests a token from :auth_url using an HTTP POST instead of the default GET](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L252)
37
+ * [requests a token from :auth_url using an HTTP POST instead of the default GET](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L270)
37
38
  * when response from :auth_url is a token details object
38
- * [returns TokenDetails created from the token JSON](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L277)
39
+ * [returns TokenDetails created from the token JSON](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L295)
39
40
  * when response from :auth_url is text/plain content type and a token string
40
- * [returns TokenDetails created from the token JSON](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L294)
41
+ * [returns TokenDetails created from the token JSON](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L313)
41
42
  * when response is invalid
42
43
  * 500
43
- * [raises ServerError](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L307)
44
+ * [raises ServerError](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L327)
44
45
  * XML
45
- * [raises InvalidResponseBody](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L318)
46
+ * [raises InvalidResponseBody](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L338)
46
47
  * with a Proc for the :auth_callback option
47
48
  * that returns a TokenRequest
48
- * [calls the Proc when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L337)
49
- * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L342)
49
+ * [calls the Proc with token_params when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L361)
50
+ * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L365)
50
51
  * that returns a TokenDetails JSON object
51
- * [calls the Proc when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L371)
52
- * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L376)
52
+ * [calls the Proc when authenticating to obtain the request token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L394)
53
+ * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L399)
53
54
  * that returns a TokenDetails object
54
- * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L397)
55
+ * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L420)
55
56
  * that returns a Token string
56
- * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L413)
57
- * with client_id
58
- * [returns a token with the client_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L445)
57
+ * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L436)
58
+ * with auth_option :client_id
59
+ * [returns a token with the client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L467)
60
+ * with token_param :client_id
61
+ * [returns a token with the client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L476)
59
62
  * before #authorise has been called
60
- * [has no current_token_details](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L452)
63
+ * [has no current_token_details](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L483)
61
64
  * #authorise
62
- * [updates the persisted auth options that are then used for subsequent authorise requests](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L499)
65
+ * [updates the persisted auth options that are then used for subsequent authorise requests](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L533)
63
66
  * when called for the first time since the client has been instantiated
64
- * [passes all options to #request_token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L463)
65
- * [returns a valid token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L468)
66
- * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L472)
67
+ * [passes all auth_options and token_params to #request_token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L497)
68
+ * [returns a valid token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L502)
69
+ * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L506)
67
70
  * with previous authorisation
68
- * [does not request a token if current_token_details has not expired](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L483)
69
- * [requests a new token if token is expired](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L488)
70
- * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L494)
71
+ * [does not request a token if current_token_details has not expired](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L517)
72
+ * [requests a new token if token is expired](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L522)
73
+ * [issues a new token if option :force => true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L528)
71
74
  * with a Proc for the :auth_callback option
72
- * [calls the Proc](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L515)
73
- * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L519)
75
+ * [calls the Proc](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L549)
76
+ * [uses the token request returned from the callback when requesting a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L553)
74
77
  * for every subsequent #request_token
75
78
  * without a :auth_callback Proc
76
- * [calls the originally provided block](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L525)
79
+ * [calls the originally provided block](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L559)
77
80
  * with a provided block
78
- * [does not call the originally provided Proc and calls the new #request_token :auth_callback Proc](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L532)
81
+ * [does not call the originally provided Proc and calls the new #request_token :auth_callback Proc](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L566)
79
82
  * #create_token_request
80
- * [uses the key name from the client](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L548)
81
- * [uses the default TTL](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L552)
82
- * [uses the default capability](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L556)
83
+ * [returns a TokenRequest object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L583)
84
+ * [returns a TokenRequest that can be passed to a client that can use it for authentication without an API key](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L587)
85
+ * [uses the key name from the client](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L594)
86
+ * [uses the default TTL](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L598)
87
+ * [uses the default capability](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L611)
88
+ * with a :ttl option below the Token expiry buffer that ensures tokens are renewed 15s before they expire as they are considered expired
89
+ * [uses the Token expiry buffer default + 10s to allow for a token request in flight](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L605)
83
90
  * the nonce
84
- * [is unique for every request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L561)
85
- * [is at least 16 characters](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L566)
86
- * with option :ttl
87
- * [overrides default](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L577)
88
- * with option :nonce
89
- * [overrides default](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L577)
90
- * with option :client_id
91
- * [overrides default](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L577)
91
+ * [is unique for every request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L616)
92
+ * [is at least 16 characters](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L621)
93
+ * with token param :ttl
94
+ * [overrides default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L632)
95
+ * with token param :nonce
96
+ * [overrides default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L632)
97
+ * with token param :client_id
98
+ * [overrides default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L632)
99
+ * when specifying capability
100
+ * [overrides the default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L643)
101
+ * [uses these capabilities when Ably issues an actual token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L647)
92
102
  * with additional invalid attributes
93
- * [are ignored](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L585)
103
+ * [are ignored](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L657)
94
104
  * when required fields are missing
95
- * [should raise an exception if key secret is missing](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L596)
96
- * [should raise an exception if key name is missing](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L600)
97
- * with :query_time option
98
- * [queries the server for the timestamp](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L609)
99
- * with :timestamp option
100
- * [uses the provided timestamp in the token request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L619)
105
+ * [should raise an exception if key secret is missing](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L668)
106
+ * [should raise an exception if key name is missing](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L672)
107
+ * timestamp attribute
108
+ * [is a Time object in Ruby and is set to the local time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L699)
109
+ * with :query_time auth_option
110
+ * [queries the server for the timestamp](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L684)
111
+ * with :timestamp option
112
+ * [uses the provided timestamp in the token request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L694)
101
113
  * signing
102
- * [generates a valid HMAC](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L641)
114
+ * [generates a valid HMAC](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L723)
103
115
  * using token authentication
104
116
  * with :token option
105
- * [authenticates successfully using the provided :token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L664)
106
- * [disallows publishing on unspecified capability channels](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L668)
107
- * [fails if timestamp is invalid](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L676)
108
- * [cannot be renewed automatically](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L684)
117
+ * [authenticates successfully using the provided :token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L746)
118
+ * [disallows publishing on unspecified capability channels](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L750)
119
+ * [fails if timestamp is invalid](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L758)
120
+ * [cannot be renewed automatically](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L766)
109
121
  * when implicit as a result of using :client id
110
122
  * and requests to the Ably server are mocked
111
- * [will send a token request to the server](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L712)
123
+ * [will send a token request to the server](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L794)
112
124
  * a token is created
113
- * [before a request is made](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L721)
114
- * [when a message is published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L725)
115
- * [with capability and TTL defaults](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L729)
125
+ * [before a request is made](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L803)
126
+ * [when a message is published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L807)
127
+ * [with capability and TTL defaults](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L811)
116
128
  * when using an :key and basic auth
117
- * [#using_token_auth? is false](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L744)
118
- * [#key attribute contains the key string](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L748)
119
- * [#using_basic_auth? is true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/auth_spec.rb#L752)
129
+ * [#using_token_auth? is false](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L826)
130
+ * [#key attribute contains the key string](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L830)
131
+ * [#using_basic_auth? is true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/auth_spec.rb#L834)
120
132
 
121
133
  ### Ably::Rest
122
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb))_
134
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/base_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb))_
123
135
  * transport protocol
124
136
  * when protocol is not defined it defaults to :msgpack
125
- * [uses MsgPack](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L27)
137
+ * [uses MsgPack](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L27)
126
138
  * when option {:protocol=>:json} is used
127
- * [uses JSON](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L43)
139
+ * [uses JSON](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L43)
128
140
  * when option {:use_binary_protocol=>false} is used
129
- * [uses JSON](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L43)
141
+ * [uses JSON](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L43)
130
142
  * when option {:protocol=>:msgpack} is used
131
- * [uses MsgPack](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L60)
143
+ * [uses MsgPack](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L60)
132
144
  * when option {:use_binary_protocol=>true} is used
133
- * [uses MsgPack](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L60)
145
+ * [uses MsgPack](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L60)
134
146
  * using JSON and MsgPack protocol
135
147
  * failed requests
136
148
  * due to invalid Auth
137
- * [should raise an InvalidRequest exception with a valid error message and code](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L75)
149
+ * [should raise an InvalidRequest exception with a valid error message and code](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L75)
138
150
  * server error with JSON error response body
139
- * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L94)
151
+ * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L94)
140
152
  * 500 server error without a valid JSON response body
141
- * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L105)
153
+ * [should raise a ServerError exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L105)
142
154
  * token authentication failures
143
155
  * when auth#token_renewable?
144
- * [should automatically reissue a token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L143)
156
+ * [should automatically reissue a token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L143)
145
157
  * when NOT auth#token_renewable?
146
- * [should raise an InvalidToken exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/base_spec.rb#L158)
158
+ * [should raise an TokenExpired exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/base_spec.rb#L158)
147
159
 
148
160
  ### Ably::Rest::Channel
149
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb))_
161
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb))_
150
162
  * using JSON and MsgPack protocol
151
163
  * #publish
152
- * [should publish the message and return true indicating success](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L17)
164
+ * with name and data arguments
165
+ * [publishes the message and return true indicating success](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L20)
166
+ * with an array of Hash objects with :name and :data attributes
167
+ * [publishes an array of messages in one HTTP request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L34)
168
+ * with an array of Message objects
169
+ * [publishes an array of messages in one HTTP request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L49)
170
+ * without adequate permissions on the channel
171
+ * [raises a permission error when publishing](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L61)
172
+ * null attributes
173
+ * when name is null
174
+ * [publishes the message without a name attribute in the payload](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L70)
175
+ * when data is null
176
+ * [publishes the message without a data attribute in the payload](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L81)
177
+ * with neither name or data attributes
178
+ * [publishes the message without any attributes in the payload](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L92)
153
179
  * #history
154
- * [should return the current message history for the channel](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L39)
155
- * [should return paged history using the PaginatedResource model](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L67)
180
+ * [returns a PaginatedResult model](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L119)
181
+ * [returns the current message history for the channel](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L123)
182
+ * [returns paged history using the PaginatedResult model](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L151)
156
183
  * message timestamps
157
- * [should all be after the messages were published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L52)
184
+ * [are after the messages were published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L136)
158
185
  * message IDs
159
- * [should be unique](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L60)
186
+ * [is unique](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L144)
187
+ * direction
188
+ * [returns paged history backwards by default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L172)
189
+ * [returns history forward if specified in the options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L178)
190
+ * limit
191
+ * [defaults to 100](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L190)
160
192
  * #history option
161
193
  * :start
162
194
  * with milliseconds since epoch value
163
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L123)
195
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L233)
164
196
  * with a Time object value
165
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L133)
197
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L243)
166
198
  * :end
167
199
  * with milliseconds since epoch value
168
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L123)
200
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L233)
169
201
  * with a Time object value
170
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channel_spec.rb#L133)
202
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L243)
203
+ * when argument start is after end
204
+ * [should raise an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L253)
205
+ * #presence
206
+ * [returns a REST Presence object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channel_spec.rb#L263)
171
207
 
172
208
  ### Ably::Rest::Channels
173
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb))_
209
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb))_
174
210
  * using JSON and MsgPack protocol
175
211
  * using shortcut method #channel on the client object
176
212
  * behaves like a channel
177
- * [returns a channel object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb#L6)
178
- * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb#L11)
213
+ * [returns a channel object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L6)
214
+ * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L11)
179
215
  * using #get method on client#channels
180
216
  * behaves like a channel
181
- * [returns a channel object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb#L6)
182
- * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb#L11)
217
+ * [returns a channel object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L6)
218
+ * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L11)
219
+ * accessing an existing channel object with different options
220
+ * [overrides the existing channel options and returns the channel object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L39)
221
+ * accessing an existing channel object without specifying any channel options
222
+ * [returns the existing channel without modifying the channel options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L50)
183
223
  * using undocumented array accessor [] method on client#channels
184
224
  * behaves like a channel
185
- * [returns a channel object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb#L6)
186
- * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/channels_spec.rb#L11)
225
+ * [returns a channel object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L6)
226
+ * [returns channel object and passes the provided options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/channels_spec.rb#L11)
187
227
 
188
228
  ### Ably::Rest::Client
189
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb))_
229
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb))_
190
230
  * using JSON and MsgPack protocol
191
231
  * #initialize
192
- * with a :auth_callback Proc
193
- * [calls the auth Proc to get a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L20)
232
+ * with only an API key
233
+ * [uses basic authentication](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L24)
234
+ * with an explicit string :token
235
+ * [uses token authentication](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L32)
236
+ * with :use_token_auth set to true
237
+ * [uses token authentication](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L40)
238
+ * with a :client_id configured
239
+ * [uses token authentication](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L48)
240
+ * with an :auth_callback Proc
241
+ * [calls the auth Proc to get a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L56)
242
+ * [uses token authentication](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L61)
194
243
  * with an auth URL
195
- * [sends an HTTP request to the provided URL to get a new token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L34)
244
+ * [uses token authentication](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L70)
245
+ * before any REST request
246
+ * [sends an HTTP request to the provided auth URL to get a new token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L81)
247
+ * auth headers
248
+ * with basic auth
249
+ * [sends the API key in authentication part of the secure URL (the Authorization: Basic header is not used with the Faraday HTTP library by default)](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L101)
250
+ * with token auth
251
+ * without specifying protocol
252
+ * [sends the token string over HTTPS in the Authorization Bearer header with Base64 encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L120)
253
+ * when setting constructor ClientOption :tls to false
254
+ * [sends the token string over HTTP in the Authorization Bearer header with Base64 encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L130)
196
255
  * using tokens
197
256
  * when expired
198
- * [creates a new token automatically when the old token expires](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L58)
257
+ * [creates a new token automatically when the old token expires](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L161)
199
258
  * when token has not expired
200
- * [reuses the existing token for every request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L72)
259
+ * [reuses the existing token for every request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L175)
201
260
  * connection transport
202
261
  * for default host
203
- * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L88)
204
- * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L92)
262
+ * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L191)
263
+ * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L195)
205
264
  * for the fallback hosts
206
- * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L98)
207
- * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L102)
265
+ * [is configured to timeout connection opening in 4 seconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L201)
266
+ * [is configured to timeout connection requests in 15 seconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L205)
208
267
  * fallback hosts
209
268
  * configured
210
- * [should make connection attempts to A.ably-realtime.com, B.ably-realtime.com, C.ably-realtime.com, D.ably-realtime.com, E.ably-realtime.com](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L115)
269
+ * [should make connection attempts to A.ably-realtime.com, B.ably-realtime.com, C.ably-realtime.com, D.ably-realtime.com, E.ably-realtime.com](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L218)
211
270
  * when environment is NOT production
212
- * [does not retry failed requests with fallback hosts when there is a connection error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L132)
271
+ * [does not retry failed requests with fallback hosts when there is a connection error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L235)
213
272
  * when environment is production
214
273
  * and connection times out
215
- * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L172)
274
+ * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L272)
216
275
  * and the total request time exeeds 10 seconds
217
- * [makes no further attempts to any fallback hosts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L187)
276
+ * [makes no further attempts to any fallback hosts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L287)
218
277
  * and connection fails
219
- * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L203)
278
+ * [tries fallback hosts 3 times](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L303)
279
+ * and basic authentication fails
280
+ * [does not attempt the fallback hosts as this is an authentication failure](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L327)
281
+ * and server returns a 50x error
282
+ * [attempts the fallback hosts as this is an authentication failure](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L349)
220
283
  * with a custom host
221
284
  * that does not exist
222
- * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L219)
285
+ * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L365)
223
286
  * fallback hosts
224
- * [are never used](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L240)
287
+ * [are never used](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L386)
225
288
  * that times out
226
- * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L255)
289
+ * [fails immediately and raises a Faraday Error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L401)
227
290
  * fallback hosts
228
- * [are never used](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/client_spec.rb#L268)
291
+ * [are never used](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L414)
292
+ * #auth
293
+ * [is provides access to the Auth object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L428)
294
+ * [configures the Auth object with all ClientOptions passed to client in the initializer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/client_spec.rb#L432)
229
295
 
230
296
  ### Ably::Models::MessageEncoders
231
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/encoders_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb))_
297
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/encoders_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb))_
232
298
  * with binary transport protocol
233
299
  * without encryption
234
300
  * with UTF-8 data
235
- * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L41)
301
+ * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L41)
236
302
  * with binary data
237
- * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L52)
303
+ * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L52)
238
304
  * with JSON data
239
- * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L63)
305
+ * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L63)
240
306
  * with encryption
241
307
  * with UTF-8 data
242
- * [applies utf-8 and cipher encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L78)
308
+ * [applies utf-8 and cipher encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L78)
243
309
  * with binary data
244
- * [applies cipher encoding and sets the encoding attribute to "cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L89)
310
+ * [applies cipher encoding and sets the encoding attribute to "cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L89)
245
311
  * with JSON data
246
- * [applies json, utf-8 and cipher encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L100)
312
+ * [applies json, utf-8 and cipher encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L100)
247
313
  * with text transport protocol
248
314
  * without encryption
249
315
  * with UTF-8 data
250
- * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L117)
316
+ * [does not apply any encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L117)
251
317
  * with binary data
252
- * [applies a base64 encoding and sets the encoding attribute to "base64"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L128)
318
+ * [applies a base64 encoding and sets the encoding attribute to "base64"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L128)
253
319
  * with JSON data
254
- * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L139)
320
+ * [stringifies the JSON and sets the encoding attribute to "json"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L139)
255
321
  * with encryption
256
322
  * with UTF-8 data
257
- * [applies utf-8, cipher and base64 encodings and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L154)
323
+ * [applies utf-8, cipher and base64 encodings and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L154)
258
324
  * with binary data
259
- * [applies cipher and base64 encoding and sets the encoding attribute to "utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L165)
325
+ * [applies cipher and base64 encoding and sets the encoding attribute to "cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L165)
260
326
  * with JSON data
261
- * [applies json, utf-8, cipher and base64 encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/encoders_spec.rb#L176)
327
+ * [applies json, utf-8, cipher and base64 encoding and sets the encoding attribute to "json/utf-8/cipher+aes-128-cbc/base64"](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/encoders_spec.rb#L176)
262
328
 
263
329
  ### Ably::Rest::Channel messages
264
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb))_
330
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/message_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb))_
265
331
  * using JSON and MsgPack protocol
266
332
  * publishing with an ASCII_8BIT message name
267
- * [is converted into UTF_8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L18)
333
+ * [is converted into UTF_8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L18)
334
+ * with supported data payload content type
335
+ * JSON Object (Hash)
336
+ * [is encoded and decoded to the same hash](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L30)
337
+ * JSON Array
338
+ * [is encoded and decoded to the same Array](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L39)
339
+ * String
340
+ * [is encoded and decoded to the same Array](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L48)
341
+ * Binary
342
+ * [is encoded and decoded to the same Array](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L57)
343
+ * with unsupported data payload content type
344
+ * Integer
345
+ * [is raises an UnsupportedDataType 40011 exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L68)
346
+ * Float
347
+ * [is raises an UnsupportedDataType 40011 exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L76)
348
+ * Boolean
349
+ * [is raises an UnsupportedDataType 40011 exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L84)
350
+ * False
351
+ * [is raises an UnsupportedDataType 40011 exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L92)
268
352
  * encryption and encoding
269
353
  * with #publish and #history
270
354
  * with AES-128-CBC using crypto-data-128.json fixtures
271
355
  * item 0 with encrypted encoding utf-8/cipher+aes-128-cbc/base64
272
356
  * behaves like an Ably encrypter and decrypter
273
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
274
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
357
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
358
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
275
359
  * item 1 with encrypted encoding cipher+aes-128-cbc/base64
276
360
  * behaves like an Ably encrypter and decrypter
277
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
278
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
361
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
362
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
279
363
  * item 2 with encrypted encoding json/utf-8/cipher+aes-128-cbc/base64
280
364
  * behaves like an Ably encrypter and decrypter
281
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
282
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
365
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
366
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
283
367
  * item 3 with encrypted encoding json/utf-8/cipher+aes-128-cbc/base64
284
368
  * behaves like an Ably encrypter and decrypter
285
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
286
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
369
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
370
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
287
371
  * with AES-256-CBC using crypto-data-256.json fixtures
288
372
  * item 0 with encrypted encoding utf-8/cipher+aes-256-cbc/base64
289
373
  * behaves like an Ably encrypter and decrypter
290
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
291
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
374
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
375
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
292
376
  * item 1 with encrypted encoding cipher+aes-256-cbc/base64
293
377
  * behaves like an Ably encrypter and decrypter
294
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
295
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
378
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
379
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
296
380
  * item 2 with encrypted encoding json/utf-8/cipher+aes-256-cbc/base64
297
381
  * behaves like an Ably encrypter and decrypter
298
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
299
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
382
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
383
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
300
384
  * item 3 with encrypted encoding json/utf-8/cipher+aes-256-cbc/base64
301
385
  * behaves like an Ably encrypter and decrypter
302
- * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L65)
303
- * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L80)
386
+ * [encrypts message automatically when published](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L137)
387
+ * [sends and retrieves messages that are encrypted & decrypted by the Ably library](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L152)
304
388
  * when publishing lots of messages
305
- * [encrypts on #publish and decrypts on #history](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L113)
389
+ * [encrypts on #publish and decrypts on #history](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L185)
306
390
  * when retrieving #history with a different protocol
307
- * [delivers a String ASCII-8BIT payload to the receiver](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L140)
308
- * [delivers a String UTF-8 payload to the receiver](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L140)
309
- * [delivers a Hash payload to the receiver](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L140)
391
+ * [delivers a String ASCII-8BIT payload to the receiver](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L212)
392
+ * [delivers a String UTF-8 payload to the receiver](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L212)
393
+ * [delivers a Hash payload to the receiver](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L212)
310
394
  * when publishing on an unencrypted channel and retrieving with #history on an encrypted channel
311
- * [does not attempt to decrypt the message](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L156)
395
+ * [does not attempt to decrypt the message](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L228)
312
396
  * when publishing on an encrypted channel and retrieving with #history on an unencrypted channel
313
- * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L177)
314
- * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L183)
397
+ * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L249)
398
+ * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L255)
315
399
  * publishing on an encrypted channel and retrieving #history with a different algorithm on another client
316
- * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L204)
317
- * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L210)
400
+ * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L276)
401
+ * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L282)
318
402
  * publishing on an encrypted channel and subscribing with a different key on another client
319
- * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L231)
320
- * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/message_spec.rb#L237)
403
+ * [retrieves the message that remains encrypted with an encrypted encoding attribute](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L303)
404
+ * [logs a Cipher exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/message_spec.rb#L309)
321
405
 
322
406
  ### Ably::Rest::Presence
323
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb))_
407
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/presence_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb))_
324
408
  * using JSON and MsgPack protocol
325
409
  * tested against presence fixture data set up in test app
326
410
  * #get
327
- * [returns current members on the channel with their action set to :present](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L41)
411
+ * [returns current members on the channel with their action set to :present](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L41)
328
412
  * with :limit option
329
- * [returns a paged response limiting number of members per page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L55)
413
+ * [returns a paged response limiting number of members per page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L57)
414
+ * default :limit
415
+ * [defaults to a limit of 100](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L89)
416
+ * with :client_id option
417
+ * PENDING: *[returns a list members filtered by the provided client ID](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L98)*
418
+ * with :connection_id option
419
+ * PENDING: *[returns a list members filtered by the provided connection ID](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L109)*
330
420
  * #history
331
- * [returns recent presence activity](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L67)
421
+ * [returns recent presence activity](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L120)
422
+ * default behaviour
423
+ * [uses backwards direction](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L135)
332
424
  * with options
333
425
  * direction: :forwards
334
- * [returns recent presence activity forwards with most recent history last](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L83)
426
+ * [returns recent presence activity forwards with most recent history last](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L147)
335
427
  * direction: :backwards
336
- * [returns recent presence activity backwards with most recent history first](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L98)
428
+ * [returns recent presence activity backwards with most recent history first](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L162)
337
429
  * #history
338
- * with time range options
339
- * :start
340
- * with milliseconds since epoch value
341
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L150)
342
- * with Time object value
343
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L160)
344
- * :end
345
- * with milliseconds since epoch value
346
- * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L150)
347
- * with Time object value
348
- * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L160)
430
+ * with options
431
+ * limit options
432
+ * default
433
+ * [is set to 100](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L210)
434
+ * set to 1000
435
+ * [is passes the limit query param value 1000](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L223)
436
+ * with time range options
437
+ * :start
438
+ * with milliseconds since epoch value
439
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L253)
440
+ * with Time object value
441
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L263)
442
+ * :end
443
+ * with milliseconds since epoch value
444
+ * [uses this value in the history request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L253)
445
+ * with Time object value
446
+ * [converts the value to milliseconds since epoch in the hisotry request](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L263)
447
+ * when argument start is after end
448
+ * [should raise an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L274)
349
449
  * decoding
350
450
  * with encoded fixture data
351
451
  * #history
352
- * [decodes encoded and encryped presence fixture data automatically](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L180)
452
+ * [decodes encoded and encryped presence fixture data automatically](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L293)
353
453
  * #get
354
- * [decodes encoded and encryped presence fixture data automatically](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L187)
454
+ * [decodes encoded and encryped presence fixture data automatically](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L300)
355
455
  * decoding permutations using mocked #history
356
456
  * valid decodeable content
357
457
  * #get
358
- * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L243)
458
+ * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L356)
359
459
  * #history
360
- * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L260)
460
+ * [automaticaly decodes presence messages](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L373)
361
461
  * invalid data
362
462
  * #get
363
- * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L291)
364
- * [logs a cipher error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L295)
463
+ * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L404)
464
+ * [logs a cipher error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L408)
365
465
  * #history
366
- * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L315)
367
- * [logs a cipher error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/presence_spec.rb#L319)
466
+ * [returns the messages still encoded](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L428)
467
+ * [logs a cipher error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/presence_spec.rb#L432)
368
468
 
369
469
  ### Ably::Rest::Client#stats
370
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb))_
470
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/stats_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb))_
371
471
  * using JSON and MsgPack protocol
372
472
  * fetching application stats
473
+ * [returns a PaginatedResult object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L54)
373
474
  * by minute
475
+ * with no options
476
+ * [uses the minute interval by default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L66)
374
477
  * with :from set to last interval and :limit set to 1
375
- * [retrieves only one stat](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L50)
376
- * [returns zero value for any missing metrics](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L54)
377
- * [returns all aggregated message data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L59)
378
- * [returns inbound realtime all data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L64)
379
- * [returns inbound realtime message data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L69)
380
- * [returns outbound realtime all data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L74)
381
- * [returns persisted presence all data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L79)
382
- * [returns connections all data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L84)
383
- * [returns channels all data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L89)
384
- * [returns api_requests data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L94)
385
- * [returns token_requests data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L99)
386
- * [returns stat objects with #interval_granularity equal to :minute](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L104)
387
- * [returns stat objects with #interval_id matching :start](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L108)
388
- * [returns stat objects with #interval_time matching :start Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L112)
478
+ * [retrieves only one stat](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L75)
479
+ * [returns zero value for any missing metrics](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L79)
480
+ * [returns all aggregated message data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L84)
481
+ * [returns inbound realtime all data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L89)
482
+ * [returns inbound realtime message data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L94)
483
+ * [returns outbound realtime all data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L99)
484
+ * [returns persisted presence all data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L104)
485
+ * [returns connections all data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L109)
486
+ * [returns channels all data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L114)
487
+ * [returns api_requests data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L119)
488
+ * [returns token_requests data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L124)
489
+ * [returns stat objects with #interval_granularity equal to :minute](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L129)
490
+ * [returns stat objects with #interval_id matching :start](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L133)
491
+ * [returns stat objects with #interval_time matching :start Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L137)
389
492
  * with :start set to first interval, :limit set to 1 and direction :forwards
390
- * [returns the first interval stats as stats are provided forwards from :start](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L122)
391
- * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L126)
493
+ * [returns the first interval stats as stats are provided forwards from :start](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L147)
494
+ * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L151)
392
495
  * with :end set to last interval, :limit set to 1 and direction :backwards
393
- * [returns the 3rd interval stats first as stats are provided backwards from :end](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L139)
394
- * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L143)
496
+ * [returns the 3rd interval stats first as stats are provided backwards from :end](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L163)
497
+ * [returns 3 pages of stats](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L167)
498
+ * with :end set to last interval and :limit set to 3 to ensure only last years stats are included
499
+ * the REST API
500
+ * [defaults to direction :backwards](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L179)
501
+ * with :end set to previous year interval
502
+ * the REST API
503
+ * [defaults to 100 items for pagination](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L191)
395
504
  * by hour
396
- * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L167)
505
+ * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L215)
397
506
  * by day
398
- * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L167)
507
+ * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L215)
399
508
  * by month
400
- * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/stats_spec.rb#L167)
509
+ * [should aggregate the stats for that period](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L215)
510
+ * when argument start is after end
511
+ * [should raise an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/stats_spec.rb#L227)
401
512
 
402
513
  ### Ably::Rest::Client#time
403
- _(see [lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/time_spec.rb))_
514
+ _(see [lib/submodules/ably-ruby/spec/acceptance/rest/time_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/time_spec.rb))_
404
515
  * using JSON and MsgPack protocol
405
516
  * fetching the service time
406
- * [should return the service time as a Time object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/acceptance/rest/time_spec.rb#L10)
517
+ * [should return the service time as a Time object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/acceptance/rest/time_spec.rb#L10)
407
518
 
408
519
  ### Ably::Auth
409
- _(see [lib/submodules/ably-ruby/spec/unit/auth_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb))_
520
+ _(see [lib/submodules/ably-ruby/spec/unit/auth_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb))_
410
521
  * client_id option
411
522
  * with nil value
412
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L19)
523
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L20)
413
524
  * as UTF_8 string
414
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L27)
415
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L31)
525
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L28)
526
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L32)
416
527
  * as SHIFT_JIS string
417
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L39)
418
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L43)
528
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L40)
529
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L44)
419
530
  * as ASCII_8BIT string
420
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L51)
421
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L55)
531
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L52)
532
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L56)
422
533
  * as Integer
423
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L63)
534
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L64)
424
535
  * defaults
425
- * [should default TTL to 1 hour](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L73)
426
- * [should default capability to all](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L77)
427
- * [should only have defaults for :ttl and :capability](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/auth_spec.rb#L81)
536
+ * [should default TTL to 1 hour](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L74)
537
+ * [should default capability to all](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L78)
538
+ * [should have defaults for :ttl and :capability](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/auth_spec.rb#L82)
428
539
 
429
540
  ### Ably::Logger
430
- _(see [lib/submodules/ably-ruby/spec/unit/logger_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/logger_spec.rb))_
431
- * [uses the language provided Logger by default](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/logger_spec.rb#L15)
541
+ _(see [lib/submodules/ably-ruby/spec/unit/logger_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/logger_spec.rb))_
542
+ * [uses the language provided Logger by default](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/logger_spec.rb#L15)
432
543
  * with a custom Logger
433
544
  * with an invalid interface
434
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/logger_spec.rb#L116)
545
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/logger_spec.rb#L116)
435
546
  * with a valid interface
436
- * [is used](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/logger_spec.rb#L135)
547
+ * [is used](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/logger_spec.rb#L135)
437
548
 
438
549
  ### Ably::Models::ErrorInfo
439
- _(see [lib/submodules/ably-ruby/spec/unit/models/error_info_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/error_info_spec.rb))_
550
+ _(see [lib/submodules/ably-ruby/spec/unit/models/error_info_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/error_info_spec.rb))_
440
551
  * behaves like a model
441
552
  * attributes
442
553
  * #code
443
- * [retrieves attribute :code](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
554
+ * [retrieves attribute :code](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
444
555
  * #status_code
445
- * [retrieves attribute :status_code](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
556
+ * [retrieves attribute :status_code](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
446
557
  * #message
447
- * [retrieves attribute :message](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
558
+ * [retrieves attribute :message](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
448
559
  * #==
449
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L41)
450
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L46)
451
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L50)
560
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L41)
561
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L46)
562
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L50)
452
563
  * is immutable
453
- * [prevents changes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L76)
454
- * [dups options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L80)
564
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L76)
565
+ * [dups options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L80)
455
566
  * #status
456
- * [is an alias for #status_code](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/error_info_spec.rb#L13)
567
+ * [is an alias for #status_code](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/error_info_spec.rb#L13)
457
568
 
458
569
  ### Ably::Models::Message
459
- _(see [lib/submodules/ably-ruby/spec/unit/models/message_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb))_
570
+ _(see [lib/submodules/ably-ruby/spec/unit/models/message_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb))_
460
571
  * behaves like a model
461
572
  * attributes
573
+ * #id
574
+ * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
462
575
  * #name
463
- * [retrieves attribute :name](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
576
+ * [retrieves attribute :name](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
464
577
  * #client_id
465
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
578
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
466
579
  * #data
467
- * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
580
+ * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
468
581
  * #encoding
469
- * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
582
+ * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
470
583
  * #==
471
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L41)
472
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L46)
473
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L50)
584
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L41)
585
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L46)
586
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L50)
474
587
  * is immutable
475
- * [prevents changes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L76)
476
- * [dups options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L80)
588
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L76)
589
+ * [dups options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L80)
477
590
  * #timestamp
478
- * [retrieves attribute :timestamp as Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L22)
591
+ * [retrieves attribute :timestamp as Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L22)
479
592
  * #connection_id attribute
480
593
  * when this model has a connectionId attribute
481
594
  * but no protocol message
482
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L37)
595
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L37)
483
596
  * with a protocol message with a different connectionId
484
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L45)
597
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L45)
485
598
  * when this model has no connectionId attribute
486
599
  * and no protocol message
487
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L55)
600
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L55)
488
601
  * with a protocol message with a connectionId
489
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L63)
602
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L63)
490
603
  * initialized with
491
604
  * :name
492
605
  * as UTF_8 string
493
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L90)
494
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L94)
606
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L90)
607
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L94)
495
608
  * as SHIFT_JIS string
496
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L102)
497
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L106)
609
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L102)
610
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L106)
498
611
  * as ASCII_8BIT string
499
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L114)
500
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L118)
612
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L114)
613
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L118)
501
614
  * as Integer
502
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L126)
615
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L126)
503
616
  * as Nil
504
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L134)
617
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L134)
505
618
  * :client_id
506
619
  * as UTF_8 string
507
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L90)
508
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L94)
620
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L90)
621
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L94)
509
622
  * as SHIFT_JIS string
510
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L102)
511
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L106)
623
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L102)
624
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L106)
512
625
  * as ASCII_8BIT string
513
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L114)
514
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L118)
626
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L114)
627
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L118)
515
628
  * as Integer
516
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L126)
629
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L126)
517
630
  * as Nil
518
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L134)
631
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L134)
519
632
  * :encoding
520
633
  * as UTF_8 string
521
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L90)
522
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L94)
634
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L90)
635
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L94)
523
636
  * as SHIFT_JIS string
524
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L102)
525
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L106)
637
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L102)
638
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L106)
526
639
  * as ASCII_8BIT string
527
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L114)
528
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L118)
640
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L114)
641
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L118)
529
642
  * as Integer
530
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L126)
643
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L126)
531
644
  * as Nil
532
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/message_spec.rb#L134)
645
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/message_spec.rb#L134)
533
646
 
534
- ### Ably::Models::PaginatedResource
535
- _(see [lib/submodules/ably-ruby/spec/unit/models/paginated_resource_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb))_
647
+ ### Ably::Models::PaginatedResult
648
+ _(see [lib/submodules/ably-ruby/spec/unit/models/paginated_result_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb))_
536
649
  * #items
537
- * [returns correct length from body](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L31)
538
- * [is Enumerable](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L35)
539
- * [is iterable](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L39)
540
- * [provides [] accessor method](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L57)
541
- * [#first gets the first item in page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L63)
542
- * [#last gets the last item in page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L67)
650
+ * [returns correct length from body](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L31)
651
+ * [is Enumerable](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L35)
652
+ * [is iterable](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L39)
653
+ * [provides [] accessor method](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L57)
654
+ * [#first gets the first item in page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L63)
655
+ * [#last gets the last item in page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L67)
543
656
  * #each
544
- * [returns an enumerator](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L44)
545
- * [yields each item](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L48)
657
+ * [returns an enumerator](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L44)
658
+ * [yields each item](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L48)
546
659
  * with non paged http response
547
- * [is the first page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L172)
548
- * [is the last page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L176)
549
- * [does not have next page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L180)
550
- * [does not support pagination](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L184)
551
- * [returns nil when accessing next page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L188)
552
- * [returns nil when accessing first page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L192)
660
+ * [is the last page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L172)
661
+ * [does not have next page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L176)
662
+ * [does not support pagination](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L180)
663
+ * [returns nil when accessing next page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L184)
664
+ * [returns nil when accessing first page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L188)
553
665
  * with paged http response
554
- * [is the first page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L210)
555
- * [has next page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L214)
556
- * [is not the last page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L218)
557
- * [supports pagination](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L222)
666
+ * [has next page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L206)
667
+ * [is not the last page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L210)
668
+ * [supports pagination](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L214)
558
669
  * accessing next page
559
- * [returns another PaginatedResource](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L250)
560
- * [retrieves the next page of results](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L254)
561
- * [is not the first page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L259)
562
- * [does not have a next page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L263)
563
- * [is the last page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L267)
564
- * [returns nil when trying to access the last page when it is the last page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L271)
670
+ * [returns another PaginatedResult](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L242)
671
+ * [retrieves the next page of results](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L246)
672
+ * [does not have a next page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L251)
673
+ * [is the last page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L255)
674
+ * [returns nil when trying to access the last page when it is the last page](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L259)
565
675
  * and then first page
566
- * [returns a PaginatedResource](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L282)
567
- * [retrieves the first page of results](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L286)
568
- * [is the first page](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/paginated_resource_spec.rb#L290)
676
+ * [returns a PaginatedResult](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L270)
677
+ * [retrieves the first page of results](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/paginated_result_spec.rb#L274)
569
678
 
570
679
  ### Ably::Models::PresenceMessage
571
- _(see [lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb))_
680
+ _(see [lib/submodules/ably-ruby/spec/unit/models/presence_message_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb))_
572
681
  * behaves like a model
573
682
  * attributes
683
+ * #id
684
+ * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
574
685
  * #client_id
575
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
686
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
576
687
  * #data
577
- * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
688
+ * [retrieves attribute :data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
578
689
  * #encoding
579
- * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
690
+ * [retrieves attribute :encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
580
691
  * #==
581
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L41)
582
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L46)
583
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L50)
692
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L41)
693
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L46)
694
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L50)
584
695
  * is immutable
585
- * [prevents changes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L76)
586
- * [dups options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L80)
696
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L76)
697
+ * [dups options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L80)
587
698
  * #connection_id attribute
588
699
  * when this model has a connectionId attribute
589
700
  * but no protocol message
590
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L25)
701
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L25)
591
702
  * with a protocol message with a different connectionId
592
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L33)
703
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L33)
593
704
  * when this model has no connectionId attribute
594
705
  * and no protocol message
595
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L43)
706
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L43)
596
707
  * with a protocol message with a connectionId
597
- * [uses the model value](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L51)
708
+ * [uses the model value](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L51)
598
709
  * #member_key attribute
599
- * [is string in format connection_id:client_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L61)
710
+ * [is string in format connection_id:client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L61)
600
711
  * with the same client id across multiple connections
601
- * [is unique](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L69)
712
+ * [is unique](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L69)
602
713
  * with a single connection and different client_ids
603
- * [is unique](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L78)
714
+ * [is unique](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L78)
604
715
  * #timestamp
605
- * [retrieves attribute :timestamp as a Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L86)
716
+ * [retrieves attribute :timestamp as a Time object from ProtocolMessage](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L86)
606
717
  * initialized with
607
718
  * :client_id
608
719
  * as UTF_8 string
609
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L138)
610
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L142)
720
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L138)
721
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L142)
611
722
  * as SHIFT_JIS string
612
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L150)
613
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L154)
723
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L150)
724
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L154)
614
725
  * as ASCII_8BIT string
615
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L162)
616
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L166)
726
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L162)
727
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L166)
617
728
  * as Integer
618
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L174)
729
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L174)
619
730
  * as Nil
620
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L182)
731
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L182)
621
732
  * :connection_id
622
733
  * as UTF_8 string
623
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L138)
624
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L142)
734
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L138)
735
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L142)
625
736
  * as SHIFT_JIS string
626
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L150)
627
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L154)
737
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L150)
738
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L154)
628
739
  * as ASCII_8BIT string
629
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L162)
630
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L166)
740
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L162)
741
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L166)
631
742
  * as Integer
632
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L174)
743
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L174)
633
744
  * as Nil
634
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L182)
745
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L182)
635
746
  * :encoding
636
747
  * as UTF_8 string
637
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L138)
638
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L142)
748
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L138)
749
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L142)
639
750
  * as SHIFT_JIS string
640
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L150)
641
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L154)
751
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L150)
752
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L154)
642
753
  * as ASCII_8BIT string
643
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L162)
644
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L166)
754
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L162)
755
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L166)
645
756
  * as Integer
646
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L174)
757
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L174)
647
758
  * as Nil
648
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/presence_message_spec.rb#L182)
759
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/presence_message_spec.rb#L182)
649
760
 
650
761
  ### Ably::Models::ProtocolMessage
651
- _(see [lib/submodules/ably-ruby/spec/unit/models/protocol_message_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb))_
762
+ _(see [lib/submodules/ably-ruby/spec/unit/models/protocol_message_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb))_
652
763
  * behaves like a model
653
764
  * attributes
654
765
  * #id
655
- * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
766
+ * [retrieves attribute :id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
656
767
  * #channel
657
- * [retrieves attribute :channel](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
768
+ * [retrieves attribute :channel](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
658
769
  * #channel_serial
659
- * [retrieves attribute :channel_serial](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
770
+ * [retrieves attribute :channel_serial](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
660
771
  * #connection_id
661
- * [retrieves attribute :connection_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
772
+ * [retrieves attribute :connection_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
773
+ * #connection_key
774
+ * [retrieves attribute :connection_key](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
662
775
  * #==
663
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L41)
664
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L46)
665
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L50)
776
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L41)
777
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L46)
778
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L50)
666
779
  * is immutable
667
- * [prevents changes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L76)
668
- * [dups options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L80)
780
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L76)
781
+ * [dups options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L80)
669
782
  * attributes
670
783
  * #timestamp
671
- * [retrieves attribute :timestamp as Time object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L74)
784
+ * [retrieves attribute :timestamp as Time object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L74)
672
785
  * #count
673
786
  * when missing
674
- * [is 1](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L83)
787
+ * [is 1](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L83)
675
788
  * when non numeric
676
- * [is 1](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L90)
789
+ * [is 1](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L90)
677
790
  * when greater than 1
678
- * [is the value of count](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L97)
791
+ * [is the value of count](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L97)
679
792
  * #message_serial
680
- * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L105)
793
+ * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L105)
681
794
  * #has_message_serial?
682
795
  * without msg_serial
683
- * [returns false](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L115)
796
+ * [returns false](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L115)
684
797
  * with msg_serial
685
- * [returns true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L123)
798
+ * [returns true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L123)
686
799
  * #connection_serial
687
- * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L131)
800
+ * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L131)
688
801
  * #flags
689
802
  * when nil
690
- * [is zero](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L141)
803
+ * [is zero](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L141)
691
804
  * when numeric
692
- * [is an Integer](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L149)
805
+ * [is an Integer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L149)
693
806
  * when has_presence
694
- * [#has_presence_flag? is true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L157)
807
+ * [#has_presence_flag? is true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L157)
695
808
  * when has another future flag
696
- * [#has_presence_flag? is false](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L165)
809
+ * [#has_presence_flag? is false](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L165)
697
810
  * #has_connection_serial?
698
811
  * without connection_serial
699
- * [returns false](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L175)
812
+ * [returns false](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L175)
700
813
  * with connection_serial
701
- * [returns true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L183)
814
+ * [returns true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L183)
702
815
  * #serial
703
816
  * with underlying msg_serial
704
- * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L192)
817
+ * [converts :msg_serial to an Integer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L192)
705
818
  * with underlying connection_serial
706
- * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L200)
819
+ * [converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L200)
707
820
  * with underlying connection_serial and msg_serial
708
- * [prefers connection_serial and converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L208)
821
+ * [prefers connection_serial and converts :connection_serial to an Integer](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L208)
709
822
  * #has_serial?
710
823
  * without msg_serial or connection_serial
711
- * [returns false](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L219)
824
+ * [returns false](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L219)
712
825
  * with msg_serial
713
- * [returns true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L227)
826
+ * [returns true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L227)
714
827
  * with connection_serial
715
- * [returns true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L235)
828
+ * [returns true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L235)
716
829
  * #error
717
830
  * with no error attribute
718
- * [returns nil](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L245)
831
+ * [returns nil](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L245)
719
832
  * with nil error
720
- * [returns nil](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L253)
833
+ * [returns nil](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L253)
721
834
  * with error
722
- * [returns a valid ErrorInfo object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/protocol_message_spec.rb#L261)
835
+ * [returns a valid ErrorInfo object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L261)
836
+ * #messages
837
+ * [contains Message objects](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L271)
838
+ * #presence
839
+ * [contains PresenceMessage objects](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/protocol_message_spec.rb#L281)
723
840
 
724
841
  ### Ably::Models::Stats
725
- _(see [lib/submodules/ably-ruby/spec/unit/models/stats_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb))_
842
+ _(see [lib/submodules/ably-ruby/spec/unit/models/stats_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb))_
726
843
  * #all stats
727
- * [returns a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L17)
728
- * [returns value for message counts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L21)
729
- * [returns value for all data transferred](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L25)
730
- * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L29)
731
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L33)
844
+ * [returns a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L17)
845
+ * [returns value for message counts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L21)
846
+ * [returns value for all data transferred](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L25)
847
+ * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L29)
848
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L33)
732
849
  * #all
733
- * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L39)
850
+ * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L39)
734
851
  * #presence
735
- * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L39)
852
+ * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L39)
736
853
  * #messages
737
- * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L39)
854
+ * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L39)
738
855
  * #persisted stats
739
- * [returns a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L17)
740
- * [returns value for message counts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L21)
741
- * [returns value for all data transferred](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L25)
742
- * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L29)
743
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L33)
856
+ * [returns a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L17)
857
+ * [returns value for message counts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L21)
858
+ * [returns value for all data transferred](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L25)
859
+ * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L29)
860
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L33)
744
861
  * #all
745
- * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L39)
862
+ * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L39)
746
863
  * #presence
747
- * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L39)
864
+ * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L39)
748
865
  * #messages
749
- * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L39)
866
+ * [is a MessageCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L39)
750
867
  * #inbound stats
751
- * [returns a MessageTraffic object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L59)
752
- * [returns value for realtime message counts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L63)
753
- * [returns value for all presence data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L67)
754
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L71)
868
+ * [returns a MessageTraffic object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L59)
869
+ * [returns value for realtime message counts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L63)
870
+ * [returns value for all presence data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L67)
871
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L71)
755
872
  * #realtime
756
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
873
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
757
874
  * #rest
758
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
875
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
759
876
  * #webhook
760
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
877
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
761
878
  * #all
762
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
879
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
763
880
  * #outbound stats
764
- * [returns a MessageTraffic object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L59)
765
- * [returns value for realtime message counts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L63)
766
- * [returns value for all presence data](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L67)
767
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L71)
881
+ * [returns a MessageTraffic object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L59)
882
+ * [returns value for realtime message counts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L63)
883
+ * [returns value for all presence data](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L67)
884
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L71)
768
885
  * #realtime
769
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
886
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
770
887
  * #rest
771
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
888
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
772
889
  * #webhook
773
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
890
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
774
891
  * #all
775
- * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L77)
892
+ * [is a MessageTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L77)
776
893
  * #connections stats
777
- * [returns a ConnectionTypes object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L91)
778
- * [returns value for tls opened counts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L95)
779
- * [returns value for all peak connections](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L99)
780
- * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L103)
781
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L107)
894
+ * [returns a ConnectionTypes object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L91)
895
+ * [returns value for tls opened counts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L95)
896
+ * [returns value for all peak connections](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L99)
897
+ * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L103)
898
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L107)
782
899
  * #tls
783
- * [is a ResourceCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L113)
900
+ * [is a ResourceCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L113)
784
901
  * #plain
785
- * [is a ResourceCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L113)
902
+ * [is a ResourceCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L113)
786
903
  * #all
787
- * [is a ResourceCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L113)
904
+ * [is a ResourceCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L113)
788
905
  * #channels stats
789
- * [returns a ResourceCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L126)
790
- * [returns value for opened counts](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L130)
791
- * [returns value for peak channels](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L134)
792
- * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L138)
793
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L142)
906
+ * [returns a ResourceCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L126)
907
+ * [returns value for opened counts](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L130)
908
+ * [returns value for peak channels](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L134)
909
+ * [returns zero for empty values](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L138)
910
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L142)
794
911
  * #opened
795
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L148)
912
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L148)
796
913
  * #peak
797
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L148)
914
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L148)
798
915
  * #mean
799
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L148)
916
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L148)
800
917
  * #min
801
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L148)
918
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L148)
802
919
  * #refused
803
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L148)
920
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L148)
804
921
  * #api_requests stats
805
- * [returns a RequestCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L164)
806
- * [returns value for succeeded](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L168)
807
- * [returns value for failed](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L172)
808
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L176)
922
+ * [returns a RequestCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L164)
923
+ * [returns value for succeeded](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L168)
924
+ * [returns value for failed](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L172)
925
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L176)
809
926
  * #succeeded
810
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L182)
927
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L182)
811
928
  * #failed
812
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L182)
929
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L182)
813
930
  * #refused
814
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L182)
931
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L182)
815
932
  * #token_requests stats
816
- * [returns a RequestCount object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L164)
817
- * [returns value for succeeded](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L168)
818
- * [returns value for failed](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L172)
819
- * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L176)
933
+ * [returns a RequestCount object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L164)
934
+ * [returns value for succeeded](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L168)
935
+ * [returns value for failed](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L172)
936
+ * [raises an exception for unknown attributes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L176)
820
937
  * #succeeded
821
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L182)
938
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L182)
822
939
  * #failed
823
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L182)
940
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L182)
824
941
  * #refused
825
- * [is a Integer object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L182)
942
+ * [is a Integer object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L182)
826
943
  * #interval_granularity
827
- * [returns the granularity of the interval_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L193)
944
+ * [returns the granularity of the interval_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L193)
828
945
  * #interval_time
829
- * [returns a Time object representing the start of the interval](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L201)
946
+ * [returns a Time object representing the start of the interval](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L201)
830
947
  * class methods
831
948
  * #to_interval_id
832
949
  * when time zone of time argument is UTC
833
- * [converts time 2014-02-03:05:06 with granularity :month into 2014-02](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L209)
834
- * [converts time 2014-02-03:05:06 with granularity :day into 2014-02-03](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L213)
835
- * [converts time 2014-02-03:05:06 with granularity :hour into 2014-02-03:05](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L217)
836
- * [converts time 2014-02-03:05:06 with granularity :minute into 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L221)
837
- * [fails with invalid granularity](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L225)
838
- * [fails with invalid time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L229)
950
+ * [converts time 2014-02-03:05:06 with granularity :month into 2014-02](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L209)
951
+ * [converts time 2014-02-03:05:06 with granularity :day into 2014-02-03](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L213)
952
+ * [converts time 2014-02-03:05:06 with granularity :hour into 2014-02-03:05](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L217)
953
+ * [converts time 2014-02-03:05:06 with granularity :minute into 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L221)
954
+ * [fails with invalid granularity](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L225)
955
+ * [fails with invalid time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L229)
839
956
  * when time zone of time argument is +02:00
840
- * [converts time 2014-02-03:06 with granularity :hour into 2014-02-03:04 at UTC +00:00](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L235)
957
+ * [converts time 2014-02-03:06 with granularity :hour into 2014-02-03:04 at UTC +00:00](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L235)
841
958
  * #from_interval_id
842
- * [converts a month interval_id 2014-02 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L242)
843
- * [converts a day interval_id 2014-02-03 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L247)
844
- * [converts an hour interval_id 2014-02-03:05 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L252)
845
- * [converts a minute interval_id 2014-02-03:05:06 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L257)
846
- * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L262)
959
+ * [converts a month interval_id 2014-02 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L242)
960
+ * [converts a day interval_id 2014-02-03 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L247)
961
+ * [converts an hour interval_id 2014-02-03:05 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L252)
962
+ * [converts a minute interval_id 2014-02-03:05:06 into a Time object in UTC 0](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L257)
963
+ * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L262)
847
964
  * #granularity_from_interval_id
848
- * [returns a :month interval_id for 2014-02](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L268)
849
- * [returns a :day interval_id for 2014-02-03](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L272)
850
- * [returns a :hour interval_id for 2014-02-03:05](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L276)
851
- * [returns a :minute interval_id for 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L280)
852
- * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/stats_spec.rb#L284)
965
+ * [returns a :month interval_id for 2014-02](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L268)
966
+ * [returns a :day interval_id for 2014-02-03](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L272)
967
+ * [returns a :hour interval_id for 2014-02-03:05](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L276)
968
+ * [returns a :minute interval_id for 2014-02-03:05:06](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L280)
969
+ * [fails with an invalid interval_id 14-20](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/stats_spec.rb#L284)
853
970
 
854
971
  ### Ably::Models::TokenDetails
855
- _(see [lib/submodules/ably-ruby/spec/unit/models/token_details_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb))_
972
+ _(see [lib/submodules/ably-ruby/spec/unit/models/token_details_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb))_
856
973
  * behaves like a model
857
974
  * attributes
858
975
  * #token
859
- * [retrieves attribute :token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
976
+ * [retrieves attribute :token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
860
977
  * #key_name
861
- * [retrieves attribute :key_name](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
978
+ * [retrieves attribute :key_name](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
862
979
  * #client_id
863
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
980
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
864
981
  * #==
865
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L41)
866
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L46)
867
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L50)
982
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L41)
983
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L46)
984
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L50)
868
985
  * is immutable
869
- * [prevents changes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L76)
870
- * [dups options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L80)
986
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L76)
987
+ * [dups options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L80)
871
988
  * attributes
872
989
  * #capability
873
- * [retrieves attribute :capability as parsed JSON](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L21)
990
+ * [retrieves attribute :capability as parsed JSON](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L21)
874
991
  * #issued with :issued option as milliseconds in constructor
875
- * [retrieves attribute :issued as Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L31)
992
+ * [retrieves attribute :issued as Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L31)
876
993
  * #issued with :issued option as a Time in constructor
877
- * [retrieves attribute :issued as Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L40)
994
+ * [retrieves attribute :issued as Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L40)
878
995
  * #issued when converted to JSON
879
- * [is in milliseconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L49)
996
+ * [is in milliseconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L49)
880
997
  * #expires with :expires option as milliseconds in constructor
881
- * [retrieves attribute :expires as Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L31)
998
+ * [retrieves attribute :expires as Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L31)
882
999
  * #expires with :expires option as a Time in constructor
883
- * [retrieves attribute :expires as Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L40)
1000
+ * [retrieves attribute :expires as Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L40)
884
1001
  * #expires when converted to JSON
885
- * [is in milliseconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L49)
1002
+ * [is in milliseconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L49)
886
1003
  * #expired?
887
1004
  * once grace period buffer has passed
888
- * [is true](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L61)
1005
+ * [is true](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L61)
889
1006
  * within grace period buffer
890
- * [is false](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L69)
1007
+ * [is false](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L69)
891
1008
  * ==
892
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L79)
893
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L84)
894
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_details_spec.rb#L88)
1009
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L79)
1010
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L84)
1011
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_details_spec.rb#L88)
895
1012
 
896
1013
  ### Ably::Models::TokenRequest
897
- _(see [lib/submodules/ably-ruby/spec/unit/models/token_request_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb))_
1014
+ _(see [lib/submodules/ably-ruby/spec/unit/models/token_request_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb))_
898
1015
  * behaves like a model
899
1016
  * attributes
900
1017
  * #key_name
901
- * [retrieves attribute :key_name](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
1018
+ * [retrieves attribute :key_name](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
902
1019
  * #client_id
903
- * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
1020
+ * [retrieves attribute :client_id](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
904
1021
  * #nonce
905
- * [retrieves attribute :nonce](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
1022
+ * [retrieves attribute :nonce](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
906
1023
  * #mac
907
- * [retrieves attribute :mac](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L15)
1024
+ * [retrieves attribute :mac](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L15)
908
1025
  * #==
909
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L41)
910
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L46)
911
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L50)
1026
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L41)
1027
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L46)
1028
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L50)
912
1029
  * is immutable
913
- * [prevents changes](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L76)
914
- * [dups options](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/model_behaviour.rb#L80)
1030
+ * [prevents changes](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L76)
1031
+ * [dups options](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/model_behaviour.rb#L80)
915
1032
  * attributes
916
1033
  * #capability
917
- * [retrieves attribute :capability as parsed JSON](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L18)
1034
+ * [retrieves attribute :capability as parsed JSON](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L18)
918
1035
  * #timestamp
919
1036
  * with :timestamp option as milliseconds in constructor
920
- * [retrieves attribute :timestamp as Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L29)
1037
+ * [retrieves attribute :timestamp as Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L29)
921
1038
  * with :timestamp option as Time in constructor
922
- * [retrieves attribute :timestamp as Time](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L38)
1039
+ * [retrieves attribute :timestamp as Time](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L38)
923
1040
  * when converted to JSON
924
- * [is in milliseconds since epoch](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L47)
1041
+ * [is in milliseconds since epoch](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L47)
925
1042
  * #ttl
926
1043
  * with :ttl option as milliseconds in constructor
927
- * [retrieves attribute :ttl as seconds](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L59)
1044
+ * [retrieves attribute :ttl as seconds](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L59)
928
1045
  * when converted to JSON
929
- * [is in milliseconds since epoch](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L68)
1046
+ * [is in milliseconds since epoch](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L68)
930
1047
  * ==
931
- * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L78)
932
- * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L83)
933
- * [is false when class type differs](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/models/token_request_spec.rb#L87)
1048
+ * [is true when attributes are the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L78)
1049
+ * [is false when attributes are not the same](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L83)
1050
+ * [is false when class type differs](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/models/token_request_spec.rb#L87)
934
1051
 
935
1052
  ### Ably::Rest::Channel
936
- _(see [lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb))_
1053
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/channel_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb))_
937
1054
  * #initializer
938
1055
  * as UTF_8 string
939
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L16)
940
- * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L20)
1056
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L16)
1057
+ * [remains as UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L20)
941
1058
  * as SHIFT_JIS string
942
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L28)
943
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L32)
1059
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L28)
1060
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L32)
944
1061
  * as ASCII_8BIT string
945
- * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L40)
946
- * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L44)
1062
+ * [gets converted to UTF-8](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L40)
1063
+ * [is compatible with original encoding](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L44)
947
1064
  * as Integer
948
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L52)
1065
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L52)
949
1066
  * as Nil
950
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L60)
1067
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L60)
951
1068
  * #publish name argument
952
1069
  * as UTF_8 string
953
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L72)
1070
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L72)
954
1071
  * as SHIFT_JIS string
955
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L80)
1072
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L80)
956
1073
  * as ASCII_8BIT string
957
- * [is permitted](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L88)
1074
+ * [is permitted](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L88)
958
1075
  * as Integer
959
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L96)
960
- * as Nil
961
- * [raises an argument error](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channel_spec.rb#L104)
1076
+ * [raises an argument error](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channel_spec.rb#L96)
962
1077
 
963
1078
  ### Ably::Rest::Channels
964
- _(see [lib/submodules/ably-ruby/spec/unit/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb))_
1079
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/channels_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb))_
965
1080
  * creating channels
966
- * [#get creates a channel](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L12)
967
- * [#get will reuse the channel object](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L17)
968
- * [[] creates a channel](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L23)
1081
+ * [#get creates a channel](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L12)
1082
+ * [#get will reuse the channel object](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L17)
1083
+ * [[] creates a channel](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L23)
969
1084
  * #fetch
970
- * [retrieves a channel if it exists](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L30)
971
- * [calls the block if channel is missing](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L35)
1085
+ * [retrieves a channel if it exists](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L30)
1086
+ * [calls the block if channel is missing](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L35)
972
1087
  * destroying channels
973
- * [#release releases the channel resoures](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L43)
1088
+ * [#release releases the channel resoures](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L43)
974
1089
  * is Enumerable
975
- * [allows enumeration](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L59)
976
- * [provides #length](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L75)
1090
+ * [allows enumeration](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L59)
1091
+ * [provides #length](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L75)
977
1092
  * #each
978
- * [returns an enumerator](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L64)
979
- * [yields each channel](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/channels_spec.rb#L68)
1093
+ * [returns an enumerator](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L64)
1094
+ * [yields each channel](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/channels_spec.rb#L68)
980
1095
 
981
1096
  ### Ably::Rest::Client
982
- _(see [lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/client_spec.rb))_
1097
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/client_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/client_spec.rb))_
983
1098
  * behaves like a client initializer
984
1099
  * with invalid arguments
985
1100
  * empty hash
986
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L28)
1101
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L28)
987
1102
  * nil
988
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L36)
1103
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L36)
989
1104
  * key: "invalid"
990
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L44)
1105
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L44)
991
1106
  * key: "invalid:asdad"
992
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L52)
1107
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L52)
993
1108
  * key and key_name
994
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L60)
1109
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L60)
995
1110
  * key and key_secret
996
- * [raises an exception](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L68)
1111
+ * [raises an exception](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L68)
997
1112
  * client_id as only option
998
- * [requires a valid key](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L76)
1113
+ * [requires a valid key](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L76)
999
1114
  * with valid arguments
1000
1115
  * key only
1001
- * [connects to the Ably service](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L87)
1116
+ * [connects to the Ably service](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L87)
1117
+ * [uses basic auth](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L91)
1002
1118
  * with a string key instead of options hash
1003
- * [sets the key](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L103)
1004
- * [sets the key_name](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L107)
1005
- * [sets the key_secret](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L111)
1119
+ * [sets the key](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L107)
1120
+ * [sets the key_name](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L111)
1121
+ * [sets the key_secret](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L115)
1122
+ * [uses basic auth](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L119)
1006
1123
  * with a string token key instead of options hash
1007
- * [sets the token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L119)
1124
+ * [sets the token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L127)
1008
1125
  * with token
1009
- * [sets the token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L127)
1126
+ * [sets the token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L135)
1010
1127
  * with token_details
1011
- * [sets the token](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L135)
1128
+ * [sets the token](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L143)
1129
+ * with token_params
1130
+ * [configures the default token_params](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L151)
1012
1131
  * endpoint
1013
- * [defaults to production](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L141)
1132
+ * [defaults to production](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L158)
1014
1133
  * with environment option
1015
- * [uses an alternate endpoint](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L148)
1134
+ * [uses an alternate endpoint](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L165)
1135
+ * with rest_host option
1136
+ * [uses an alternate endpoint for REST clients](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L173)
1137
+ * with realtime_host option
1138
+ * PENDING: *[uses an alternate endpoint for Realtime clients](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L182)*
1139
+ * with port option and non-TLS connections
1140
+ * [uses the custom port for non-TLS requests](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L191)
1141
+ * with tls_port option and a TLS connection
1142
+ * [uses the custom port for TLS requests](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L199)
1016
1143
  * tls
1017
- * [defaults to TLS](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L167)
1144
+ * [defaults to TLS](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L218)
1018
1145
  * set to false
1019
- * [uses plain text](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L158)
1020
- * [uses HTTP](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L162)
1146
+ * [uses plain text](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L209)
1147
+ * [uses HTTP](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L213)
1021
1148
  * logger
1022
1149
  * default
1023
- * [uses Ruby Logger](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L174)
1024
- * [specifies Logger::ERROR log level](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L178)
1150
+ * [uses Ruby Logger](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L225)
1151
+ * [specifies Logger::WARN log level](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L229)
1025
1152
  * with log_level :none
1026
- * [silences all logging with a NilLogger](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L186)
1153
+ * [silences all logging with a NilLogger](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L237)
1027
1154
  * with custom logger and log_level
1028
- * [uses the custom logger](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L204)
1029
- * [sets the custom log level](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L208)
1155
+ * [uses the custom logger](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L255)
1156
+ * [sets the custom log level](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L259)
1030
1157
  * delegators
1031
- * [delegates :client_id to .auth](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L218)
1032
- * [delegates :auth_options to .auth](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/shared/client_initializer_behaviour.rb#L223)
1158
+ * [delegates :client_id to .auth](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L269)
1159
+ * [delegates :auth_options to .auth](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/shared/client_initializer_behaviour.rb#L274)
1033
1160
  * initializer options
1034
1161
  * TLS
1035
1162
  * disabled
1036
- * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/client_spec.rb#L17)
1163
+ * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/client_spec.rb#L17)
1037
1164
  * :use_token_auth
1038
1165
  * set to false
1039
- * with an key with :tls => false
1040
- * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/client_spec.rb#L28)
1041
- * without an key
1042
- * [fails as an key is required if not using token auth](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/client_spec.rb#L36)
1166
+ * with a key and :tls => false
1167
+ * [fails for any operation with basic auth and attempting to send an API key over a non-secure connection](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/client_spec.rb#L28)
1168
+ * without a key
1169
+ * [fails as a key is required if not using token auth](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/client_spec.rb#L36)
1043
1170
  * set to true
1044
- * without an key or token
1045
- * [fails as an key is required to issue tokens](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/client_spec.rb#L46)
1171
+ * without a key or token
1172
+ * [fails as a key is required to issue tokens](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/client_spec.rb#L46)
1046
1173
 
1047
1174
  ### Ably::Rest
1048
- _(see [lib/submodules/ably-ruby/spec/unit/rest/rest_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/rest_spec.rb))_
1049
- * [constructor returns an Ably::Rest::Client](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/rest/rest_spec.rb#L7)
1175
+ _(see [lib/submodules/ably-ruby/spec/unit/rest/rest_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/rest_spec.rb))_
1176
+ * [constructor returns an Ably::Rest::Client](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/rest/rest_spec.rb#L7)
1050
1177
 
1051
1178
  ### Ably::Util::Crypto
1052
- _(see [lib/submodules/ably-ruby/spec/unit/util/crypto_spec.rb](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb))_
1179
+ _(see [lib/submodules/ably-ruby/spec/unit/util/crypto_spec.rb](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb))_
1053
1180
  * defaults
1054
- * [match other client libraries](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L18)
1181
+ * [match other client libraries](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L18)
1055
1182
  * encrypts & decrypt
1056
- * [#encrypt encrypts a string](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L28)
1057
- * [#decrypt decrypts a string](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L33)
1183
+ * [#encrypt encrypts a string](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L28)
1184
+ * [#decrypt decrypts a string](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L33)
1058
1185
  * encrypting an empty string
1059
- * [raises an ArgumentError](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L42)
1186
+ * [raises an ArgumentError](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L42)
1060
1187
  * using shared client lib fixture data
1061
1188
  * with AES-128-CBC
1062
1189
  * behaves like an Ably encrypter and decrypter
1063
1190
  * text payload
1064
- * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L65)
1065
- * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L69)
1191
+ * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L65)
1192
+ * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L69)
1066
1193
  * with AES-256-CBC
1067
1194
  * behaves like an Ably encrypter and decrypter
1068
1195
  * text payload
1069
- * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L65)
1070
- * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/c18ace85cb292a991d41de5770eaad23d60b4c69/spec/unit/util/crypto_spec.rb#L69)
1196
+ * [encrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L65)
1197
+ * [decrypts exactly the same binary data as other client libraries](https://github.com/ably/ably-ruby/tree/f836b900f67860297d36c417c7d1a4be1cccff4b/spec/unit/util/crypto_spec.rb#L69)
1071
1198
 
1072
1199
  -------
1073
1200
 
1074
1201
  ## Test summary
1075
1202
 
1076
- * Passing tests: 528
1077
- * Pending tests: 0
1203
+ * Passing tests: 587
1204
+ * Pending tests: 3
1078
1205
  * Failing tests: 0