Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 10 additions & 7 deletions textile/features.textile
Original file line number Diff line number Diff line change
Expand Up @@ -397,9 +397,10 @@ h3(#rest-channel). RestChannel
** @(RSL14c)@ Returns a @PaginatedResult<Message>@
* @(RSL15)@ @RestChannel#updateMessage@, @RestChannel#deleteMessage@, and @RestChannel#appendMessage@ functions:
** @(RSL15a)@ Take a first argument of a @Message@ object (which must contain a populated @serial@ field), an optional second argument of a @MessageOperation@ object, and an optional third argument of @Dict<string, stringifiable>@ publish params
** @(RSL15b)@ The SDK must send a PATCH to @/channels/{channelName}/messages/{serial}@, with any @params@ sent in the querystring. The request body is a @Message@ object (encoded per "RSL4":#RSL4) with whatever fields were in the user-supplied @Message@, in addition to:
** @(RSL15b)@ The SDK must send a PATCH to @/channels/{channelName}/messages/{serial}@. The request body is a @Message@ object (encoded per "RSL4":#RSL4) with whatever fields were in the user-supplied @Message@, in addition to:
*** @(RSL15b1)@ @action@ - set to @MESSAGE_UPDATE@ for @updateMessage()@, @MESSAGE_DELETE@ for @deleteMessage()@, and @MESSAGE_APPEND@ for @appendMessage()@.
*** @(RSL15b7)@ @version@ - set to the @MessageOperation@ object if provided.
** @(RSL15f)@ Any params provided in the third argument must be sent in the querystring, with values stringified
** @(RSL15c)@ The SDK must not mutate the user-supplied @Message@ object.
** @(RSL15d)@ The request body must be encoded to the appropriate format per @RSC8@.
** @(RSL15e)@ On success, returns an @UpdateDeleteResult@ object. The API response body will contain a superset of the fields of a @UpdateDeleteResult@. Indicates an error if the operation was not successful.
Expand Down Expand Up @@ -784,6 +785,7 @@ h3(#realtime-channel). RealtimeChannel
*** @(RTL6g3)@ When publishing a @Message@ with a different @clientId@ attribute value from the identified client's @clientId@, the client library should reject that publish operation immediately. The message should not be sent to Ably and it should result in an error, typically in the form of an error callback. The connection and channel must remain available for further operations
*** @(RTL6g4)@ When using Token Auth, unless a @clientId@ has been provided in @ClientOptions@ or inferred following authentication, the client library is unidentified and will not be constrained when publishing messages with any explicit @clientId@. If a @Message@ with a @clientId@ value is published before the @clientId@ is configured or inferred following authentication, the client library should not reject any explicit @clientId@ specified in a message. A test should instantiate a client without an explicit @clientId@ and an @authCallback@ that returns a @tokenDetails@ object with a @clientId@, then publish a message with the same @clientId@ before authentication, and ensure that the message is published following authentication and received back with the @clientId@ intact. A further test should follow the same sequence of events, but should instead use an incompatible @clientId@ in the message, expecting that the message is rejected by the Ably service and the message error should contain the server error message, and the connection and channel should remain available for further operations
** @(RTL6h)@ The @publish(name, data)@ form should not take any arguments other than those two. If a client library has supported additional arguments to the @(name, data)@ form (e.g. separate arguments for @clientId@ and @extras@, or a single @attributes@ argument) in any 1.x version, it should continue to do so until version 2.0.
** @(RTL6k)@ The @publish(Message)@ and @publish(Message[])@ forms of the method may take an optional extra @Dict<String, Stringifiable>@ argument. If an SDK supports this, any params provided must be set in the @TR4q@ @ProtocolMessage.params@ field, as a @Dict<String, String>@ (that is, with the values of the provided dict stringified per @RTC1f@)
** @(RTL6f)@ @Message#connectionId@ should match the current @Connection#id@ for all published messages, a test should exist to ensure the @connectionId@ for received messages matches that of the publisher
* @(RTL7)@ @RealtimeChannel#subscribe@ function:
** @(RTL7a)@ Subscribe with a single listener argument subscribes a listener to all messages
Expand Down Expand Up @@ -848,10 +850,11 @@ h3(#realtime-channel). RealtimeChannel
* @(RTL30)@ This clause has been replaced by "@RTL32@":#RTL32. It was valid up to and including specification version 5.0.0.
* @(RTL31)@ @RealtimeChannel#getMessageVersions@ function: same as @RestChannel#getMessageVersions@
* @(RTL32)@ @RealtimeChannel#updateMessage@, @RealtimeChannel#deleteMessage@, and @RealtimeChannel#appendMessage@ functions:
** @(RTL32a)@ Take a first argument of a @Message@ object (which must contain a populated @serial@ field), and an optional second argument of a @MessageOperation@ object
** @(RTL32a)@ Take a first argument of a @Message@ object (which must contain a populated @serial@ field), an optional second argument of a @MessageOperation@ object, and an optional third argument of @Dict<string, stringifiable>@ publish params
** @(RTL32b)@ The SDK must send a @MESSAGE@ @ProtocolMessage@ to Ably, containing a single @Message@ populated with whatever fields were in the user-supplied @Message@, in addition to:
*** @(RTL32b1)@ @action@ - set to @MESSAGE_UPDATE@ for @updateMessage()@, @MESSAGE_DELETE@ for @deleteMessage()@, and @MESSAGE_APPEND@ for @appendMessage()@
*** @(RTL32b2)@ @version@ - set to the @MessageOperation@ object if provided.
** @(RTL32e)@ Any params provided in the third argument must be sent in the @TR4q@ @ProtocolMessage.params@ field, as a @Dict<String, String>@ (that is, with the values of the provided dict stringified per @RTC1f@)
** @(RTL32c)@ The SDK must not mutate the user-supplied @Message@ object.
** @(RTL32d)@ On success, returns an @UpdateDeleteResult@ object containing the version serial of the published update, obtained from the first element of the @serials@ array of the "TR4s":#TR4s @res@ field of the @ACK@. Indicates an error if the operation was not successful.

Expand Down Expand Up @@ -2437,8 +2440,8 @@ class RealtimeChannel: // RTL*
limit: int api-default 100, // RTL10a
untilAttach: Bool default false // RTL10b
) => io PaginatedResult<Message> // RTL10
publish(Message) => io PublishResult // RTL6, RTL6i
publish([Message]) => io PublishResult // RTL6, RTL6i
publish(Message, params?: Dict<String, Stringifiable>) => io PublishResult // RTL6, RTL6i
publish([Message], params?: Dict<String, Stringifiable>) => io PublishResult // RTL6, RTL6i
publish(name: String?, data: Data?) => io PublishResult // RTL6, RTL6i
subscribe((Message) ->) => io ChannelStateChange? // RTL7, RTL7a
subscribe(String, (Message) ->) => io ChannelStateChange? // RTL7, RTL7b
Expand All @@ -2449,10 +2452,10 @@ class RealtimeChannel: // RTL*
unsubscribe(MessageFilter, (Message) ->) // RTL22
setOptions(options: ChannelOptions) => io // RTL16
getMessage(serial: String) => io Message // RTL28
updateMessage(Message, operation?: MessageOperation) => io UpdateDeleteResult // RTL29
deleteMessage(Message, operation?: MessageOperation) => io UpdateDeleteResult // RTL30
updateMessage(Message, operation?: MessageOperation, params?: Dict<String, Stringifiable>) => io UpdateDeleteResult // RTL29
deleteMessage(Message, operation?: MessageOperation, params?: Dict<String, Stringifiable>) => io UpdateDeleteResult // RTL30
getMessageVersions(serial: String, params?: Dict<String, Stringifiable>) => io PaginatedResult<Message> // RTL31
appendMessage(Message, operation?: MessageOperation) => io UpdateDeleteResult // RTL32
appendMessage(Message, operation?: MessageOperation, params?: Dict<String, Stringifiable>) => io UpdateDeleteResult // RTL32

class MessageFilter: // MFI*
isRef: bool // MFI2a
Expand Down
Loading