Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.8 final spec (98% compliance) #66

Merged
merged 31 commits into from Dec 2, 2015
Merged

0.8 final spec (98% compliance) #66

merged 31 commits into from Dec 2, 2015

Conversation

mattheworiordan
Copy link
Member

@SimonWoolf and @paddybyers, over the last 2-3 days I have brought the Ruby spec up to date with the 0.8 spec, see https://docs.google.com/spreadsheets/d/11fxeoCsaW1j5Q5VWtFNf04v6LXFYoHRhVTRgsEysZkU/edit#gid=431008744. Ruby complies with 98% of the specs, which I think is good enough for now. It was a good exercise to ensure the spec is practically implementable - as you will see in https://github.com/ably/docs/commits/source, there are a few commits I have modified to fix some issues I found along the way.

I have in fact implemented https://github.com/ably/wiki/issues/31, however it is somewhat blocked by https://github.com/ably/realtime/issues/349. I would really like to get https://github.com/ably/realtime/issues/349 addressed if possible, so long as it is indeed easy to implement.

I will now focus my attention on completing documentation as the implemented spec in Ruby, even if not adhered to correctly in all client libraries, is good enough to work with.

FYI @lmars if you're interested...

Following an auth request which uses a TokenDetails or TokenRequest object that contains an incompatible clientId, the library should in the case of Realtime change the connection state to FAILED and emit an error, and in the case of REST raise an exception
* RSA15b - If the clientId from TokenDetails or connectionDetails contains only a wildcard string'*', then the client is permitted to be either unauthenticated (effectively anonymous without a clientId) or authenticated providing a clientId when communicating with Ably
* RSA15a - Any clientId provided in ClientOptions must match any non null clientId value inTokenDetails or connectionDetails of the CONNECTED ProtocolMessage, where applicable
* CD1 - Connection details are optionally passed to the client library in the CONNECTED ProtocolMessage#connectionDetails attribute to inform the client about any constraints it should adhere to, and provide additional metadata about the connection. For example, if a request is made to publish a message that exceeds the maxMessageSize, the client library can reject the message immediately, without communicating with the Ably service
* CD2* - ConnectionDetail attributes
Token strings do not have any metadata such as client_id, so authentication with a token string is not a means to validate a client_id
* Configurable realtime disconnected & suspended retry timeouts (see TO3l1 & TO3l2) + other undocumented realtime configuration, see DF1*
* Changing to suspended state no longer triggers an immediate reconnect attempt, only transitions to disconnected for the first time
* Various fixes to connection state handling, suspended state is perpetual now in all cases
* Fix bug in subsequent recurring authorisations 
* Improved handling of token expiration and connection state recovery
By providing this new predicate method #client_id_confirmed?, publishing of messages can be rejected early if the client_id is not compatible.  This commit lays the groundwork for that.
mattheworiordan added a commit to ably/docs that referenced this pull request Nov 18, 2015
Addresses issue whereby a client authenticated with a wildcard clientId value (indicating any clientId can be assumed), is not reflected to anyone observing the client i.e. Auth#clientId is null, yet Auth#clientId is also null when a client is anonymous.

Addresses realtime issue #349 and wiki issue #31

See ably/ably-ruby#66 for this issue discovered in ably-ruby
mattheworiordan added a commit to ably/docs that referenced this pull request Nov 20, 2015
Addresses issue whereby a client authenticated with a wildcard clientId value (indicating any clientId can be assumed), is not reflected to anyone observing the client i.e. Auth#clientId is null, yet Auth#clientId is also null when a client is anonymous.

Addresses realtime issue #349 and wiki issue #31

See ably/ably-ruby#66 for this issue discovered in ably-ruby
mattheworiordan added a commit to ably/docs that referenced this pull request Nov 20, 2015
Addresses issue whereby a client authenticated with a wildcard clientId value (indicating any clientId can be assumed), is not reflected to anyone observing the client i.e. Auth#clientId is null, yet Auth#clientId is also null when a client is anonymous.

Addresses realtime issue #349 and wiki issue #31

See ably/ably-ruby#66 for this issue discovered in ably-ruby
mattheworiordan added a commit that referenced this pull request Dec 2, 2015
0.8 final spec (98% compliance)
@mattheworiordan mattheworiordan merged commit 0685198 into master Dec 2, 2015
QuintinWillison pushed a commit to ably/specification that referenced this pull request Sep 20, 2022
Addresses issue whereby a client authenticated with a wildcard clientId value (indicating any clientId can be assumed), is not reflected to anyone observing the client i.e. Auth#clientId is null, yet Auth#clientId is also null when a client is anonymous.

Addresses realtime issue #349 and wiki issue #31

See ably/ably-ruby#66 for this issue discovered in ably-ruby
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant