ably-rest 0.8.2 → 0.8.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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