Skip to content
This repository was archived by the owner on Jun 13, 2023. It is now read-only.

Commit 01f43e6

Browse files
committed
Added support for session token and user authentication.
Added using of sessionToken for both Connect and Subscribe messages. sessionToken is taken from PFUser.currentUser() directly and passes only if it's not nil.
1 parent 19845eb commit 01f43e6

File tree

3 files changed

+17
-9
lines changed

3 files changed

+17
-9
lines changed

Sources/ParseLiveQuery/Client.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,8 @@ extension Client {
149149
subscriptions.append(subscriptionRecord)
150150

151151
if socket?.readyState == .OPEN {
152-
sendOperationAsync(.Subscribe(requestId: subscriptionRecord.requestId, query: query))
152+
sendOperationAsync(.Subscribe(requestId: subscriptionRecord.requestId, query: query,
153+
sessionToken: PFUser.currentUser()?.sessionToken))
153154
} else if socket == nil || socket?.readyState != .CONNECTING {
154155
if !userDisconnected {
155156
reconnect()

Sources/ParseLiveQuery/Internal/ClientPrivate.swift

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -127,8 +127,7 @@ func == (first: Client.RequestId, second: Client.RequestId) -> Bool {
127127

128128
extension Client: SRWebSocketDelegate {
129129
public func webSocketDidOpen(webSocket: SRWebSocket!) {
130-
// TODO: Add support for session token and user authetication.
131-
self.sendOperationAsync(.Connect(applicationId: applicationId, sessionToken: ""))
130+
self.sendOperationAsync(.Connect(applicationId: applicationId, sessionToken: PFUser.currentUser()?.sessionToken))
132131
}
133132

134133
public func webSocket(webSocket: SRWebSocket!, didFailWithError error: NSError!) {
@@ -228,7 +227,7 @@ extension Client {
228227
switch response {
229228
case .Connected:
230229
self.subscriptions.forEach {
231-
self.sendOperationAsync(.Subscribe(requestId: $0.requestId, query: $0.query))
230+
self.sendOperationAsync(.Subscribe(requestId: $0.requestId, query: $0.query, sessionToken: PFUser.currentUser()?.sessionToken))
232231
}
233232

234233
case .Redirect:

Sources/ParseLiveQuery/Internal/Operation.swift

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,25 @@ import Foundation
1111
import Parse
1212

1313
enum ClientOperation {
14-
case Connect(applicationId: String, sessionToken: String)
15-
case Subscribe(requestId: Client.RequestId, query: PFQuery)
14+
case Connect(applicationId: String, sessionToken: String?)
15+
case Subscribe(requestId: Client.RequestId, query: PFQuery, sessionToken: String?)
1616
case Unsubscribe(requestId: Client.RequestId)
1717

1818
var JSONObjectRepresentation: [String : AnyObject] {
1919
switch self {
2020
case .Connect(let applicationId, let sessionToken):
21-
return [ "op": "connect", "applicationId": applicationId, "sessionToken": sessionToken ]
21+
var result: [String: AnyObject] = [ "op": "connect", "applicationId": applicationId ]
22+
if let sessionToken = sessionToken {
23+
result["sessionToken"] = sessionToken
24+
}
25+
return result
2226

23-
case .Subscribe(let requestId, let query):
24-
return [ "op": "subscribe", "requestId": requestId.value, "query": Dictionary<String, AnyObject>(query: query) ]
27+
case .Subscribe(let requestId, let query, let sessionToken):
28+
var result: [String: AnyObject] = [ "op": "subscribe", "requestId": requestId.value, "query": Dictionary<String, AnyObject>(query: query) ]
29+
if let sessionToken = sessionToken {
30+
result["sessionToken"] = sessionToken
31+
}
32+
return result
2533

2634
case .Unsubscribe(let requestId):
2735
return [ "op": "unsubscribe", "requestId": requestId.value ]

0 commit comments

Comments
 (0)