Skip to content
This repository was archived by the owner on Jan 28, 2019. It is now read-only.

Commit 4dc4ad0

Browse files
committed
vapor/engine
1 parent ca83556 commit 4dc4ad0

File tree

5 files changed

+86
-34
lines changed

5 files changed

+86
-34
lines changed

.swift-version

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4.0

SKRTMAPI.xcodeproj/project.pbxproj

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@
1616
26D1C4D91EE4655100C95954 /* SKCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D1C4D61EE4655100C95954 /* SKCore.framework */; };
1717
26D1C4DA1EE4655100C95954 /* SKWebAPI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D1C4D71EE4655100C95954 /* SKWebAPI.framework */; };
1818
26D1C4DB1EE4655100C95954 /* Starscream.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 26D1C4D81EE4655100C95954 /* Starscream.framework */; };
19-
26DC0EB31E95BED900991BDF /* StarscreamRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB01E95BED900991BDF /* StarscreamRTM.swift */; };
20-
26DC0EB41E95BED900991BDF /* StarscreamRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB01E95BED900991BDF /* StarscreamRTM.swift */; };
21-
26DC0EB51E95BED900991BDF /* StarscreamRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB01E95BED900991BDF /* StarscreamRTM.swift */; };
22-
26DC0EB61E95BED900991BDF /* ZewoRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB11E95BED900991BDF /* ZewoRTM.swift */; };
23-
26DC0EB71E95BED900991BDF /* ZewoRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB11E95BED900991BDF /* ZewoRTM.swift */; };
24-
26DC0EB81E95BED900991BDF /* ZewoRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB11E95BED900991BDF /* ZewoRTM.swift */; };
19+
26DC0EB61E95BED900991BDF /* VaporEngineRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB11E95BED900991BDF /* VaporEngineRTM.swift */; };
20+
26DC0EB71E95BED900991BDF /* VaporEngineRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB11E95BED900991BDF /* VaporEngineRTM.swift */; };
21+
26DC0EB81E95BED900991BDF /* VaporEngineRTM.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB11E95BED900991BDF /* VaporEngineRTM.swift */; };
2522
26DC0EB91E95BED900991BDF /* SKRTMAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB21E95BED900991BDF /* SKRTMAPI.swift */; };
2623
26DC0EBA1E95BED900991BDF /* SKRTMAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB21E95BED900991BDF /* SKRTMAPI.swift */; };
2724
26DC0EBB1E95BED900991BDF /* SKRTMAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 26DC0EB21E95BED900991BDF /* SKRTMAPI.swift */; };
@@ -41,9 +38,9 @@
4138
26D1C4D61EE4655100C95954 /* SKCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SKCore.framework; path = Carthage/Build/tvOS/SKCore.framework; sourceTree = "<group>"; };
4239
26D1C4D71EE4655100C95954 /* SKWebAPI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SKWebAPI.framework; path = Carthage/Build/tvOS/SKWebAPI.framework; sourceTree = "<group>"; };
4340
26D1C4D81EE4655100C95954 /* Starscream.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Starscream.framework; path = Carthage/Build/tvOS/Starscream.framework; sourceTree = "<group>"; };
44-
26DC0EB01E95BED900991BDF /* StarscreamRTM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StarscreamRTM.swift; sourceTree = "<group>"; };
45-
26DC0EB11E95BED900991BDF /* ZewoRTM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ZewoRTM.swift; sourceTree = "<group>"; };
41+
26DC0EB11E95BED900991BDF /* VaporEngineRTM.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VaporEngineRTM.swift; sourceTree = "<group>"; };
4642
26DC0EB21E95BED900991BDF /* SKRTMAPI.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SKRTMAPI.swift; sourceTree = "<group>"; };
43+
D2C085F12024BF9600FEC5AB /* WebSocketFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WebSocketFactory.swift; sourceTree = "<group>"; };
4744
/* End PBXFileReference section */
4845

4946
/* Begin PBXFrameworksBuildPhase section */
@@ -153,8 +150,8 @@
153150
26DC0EAF1E95BED900991BDF /* Conformers */ = {
154151
isa = PBXGroup;
155152
children = (
156-
26DC0EB01E95BED900991BDF /* StarscreamRTM.swift */,
157-
26DC0EB11E95BED900991BDF /* ZewoRTM.swift */,
153+
26DC0EB11E95BED900991BDF /* VaporEngineRTM.swift */,
154+
D2C085F12024BF9600FEC5AB /* WebSocketFactory.swift */,
158155
);
159156
path = Conformers;
160157
sourceTree = "<group>";
@@ -357,8 +354,7 @@
357354
isa = PBXSourcesBuildPhase;
358355
buildActionMask = 2147483647;
359356
files = (
360-
26DC0EB61E95BED900991BDF /* ZewoRTM.swift in Sources */,
361-
26DC0EB31E95BED900991BDF /* StarscreamRTM.swift in Sources */,
357+
26DC0EB61E95BED900991BDF /* VaporEngineRTM.swift in Sources */,
362358
26DC0EB91E95BED900991BDF /* SKRTMAPI.swift in Sources */,
363359
);
364360
runOnlyForDeploymentPostprocessing = 0;
@@ -367,8 +363,7 @@
367363
isa = PBXSourcesBuildPhase;
368364
buildActionMask = 2147483647;
369365
files = (
370-
26DC0EB71E95BED900991BDF /* ZewoRTM.swift in Sources */,
371-
26DC0EB41E95BED900991BDF /* StarscreamRTM.swift in Sources */,
366+
26DC0EB71E95BED900991BDF /* VaporEngineRTM.swift in Sources */,
372367
26DC0EBA1E95BED900991BDF /* SKRTMAPI.swift in Sources */,
373368
);
374369
runOnlyForDeploymentPostprocessing = 0;
@@ -377,8 +372,7 @@
377372
isa = PBXSourcesBuildPhase;
378373
buildActionMask = 2147483647;
379374
files = (
380-
26DC0EB81E95BED900991BDF /* ZewoRTM.swift in Sources */,
381-
26DC0EB51E95BED900991BDF /* StarscreamRTM.swift in Sources */,
375+
26DC0EB81E95BED900991BDF /* VaporEngineRTM.swift in Sources */,
382376
26DC0EBB1E95BED900991BDF /* SKRTMAPI.swift in Sources */,
383377
);
384378
runOnlyForDeploymentPostprocessing = 0;

Sources/SKRTMAPI/Conformers/ZewoRTM.swift renamed to Sources/SKRTMAPI/Conformers/VaporEngineRTM.swift

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
//
2-
// ZewoRTM.swift
2+
// VaporEngineRTM.swift
33
//
44
// Copyright © 2017 Peter Zignego. All rights reserved.
55
//
@@ -21,13 +21,12 @@
2121
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
// THE SOFTWARE.
2323

24-
#if os(Linux)
2524
import Dispatch
2625
import Foundation
2726
import SKCore
28-
import WebSocketClient
27+
import URI
2928

30-
public class ZewoRTM: RTMWebSocket {
29+
public class VaporEngineRTM: RTMWebSocket {
3130
public weak var delegate: RTMDelegate?
3231
var webSocket: WebSocket?
3332
let queue = DispatchQueue(label: "com.launchsoft.slackkit")
@@ -38,10 +37,10 @@ public class ZewoRTM: RTMWebSocket {
3837
public func connect(url: URL) {
3938
queue.async {
4039
do {
41-
try WebSocketClient(url: url, didConnect: { (webSocket) in
40+
try WebSocketFactory.shared.connect(to: url.absoluteString) { (webSocket) in
4241
self.delegate?.didConnect()
4342
self.setupSocket(webSocket)
44-
}).connect()
43+
}
4544
} catch let error {
4645
print("WebSocket client could not connect: \(error)")
4746
}
@@ -65,15 +64,14 @@ public class ZewoRTM: RTMWebSocket {
6564

6665
// MARK: - WebSocket
6766
private func setupSocket(_ webSocket: WebSocket) {
68-
webSocket.onText { (message) in
67+
webSocket.onText = { _, message in
6968
self.delegate?.receivedMessage(message)
7069
}
71-
webSocket.onClose { _, _ in
70+
webSocket.onClose = { _, _, _, _ in
7271
self.delegate?.disconnected()
7372
}
74-
webSocket.onPing { _ in try webSocket.pong() }
75-
webSocket.onPong { _ in try webSocket.ping() }
73+
webSocket.onPing = { _, _ in try webSocket.pong() }
74+
webSocket.onPong = { _, _ in try webSocket.ping() }
7675
self.webSocket = webSocket
7776
}
7877
}
79-
#endif
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
import WebSockets
2+
import HTTP
3+
import Sockets
4+
import TLS
5+
import URI
6+
7+
public typealias WebSocket = WebSockets.WebSocket
8+
9+
public final class WebSocketFactory {
10+
public static let shared = WebSocketFactory()
11+
12+
public init() {}
13+
14+
public func connect(
15+
to uri: URI,
16+
protocols: [String]? = nil,
17+
headers: [HeaderKey: String]? = nil,
18+
onConnect: @escaping (WebSocket) throws -> Void
19+
) throws {
20+
21+
if uri.scheme.isSecure {
22+
let tcp = try TCPInternetSocket(
23+
scheme: "https",
24+
hostname: uri.hostname,
25+
port: uri.port ?? 443
26+
)
27+
let stream = try TLS.InternetSocket(tcp, TLS.Context(.client))
28+
try WebSocket.connect(
29+
to: uri,
30+
using: stream,
31+
protocols: protocols,
32+
headers: headers,
33+
onConnect: onConnect
34+
)
35+
} else {
36+
let stream = try TCPInternetSocket(
37+
scheme: "http",
38+
hostname: uri.hostname,
39+
port: uri.port ?? 80
40+
)
41+
try WebSocket.connect(
42+
to: uri,
43+
using: stream,
44+
protocols: protocols,
45+
headers: headers,
46+
onConnect: onConnect
47+
)
48+
}
49+
}
50+
51+
public func connect(
52+
to uri: String,
53+
protocols: [String]? = nil,
54+
headers: [HeaderKey: String]? = nil,
55+
onConnect: @escaping (WebSocket) throws -> Void
56+
) throws {
57+
let uri = try URI(uri)
58+
try connect(
59+
to: uri,
60+
protocols: protocols,
61+
headers: headers,
62+
onConnect: onConnect
63+
)
64+
}
65+
}

Sources/SKRTMAPI/SKRTMAPI.swift

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@
2121
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
2222
// THE SOFTWARE.
2323

24-
#if os(Linux)
2524
import Dispatch
26-
#endif
2725
import Foundation
2826
import SKWebAPI
2927
@_exported import SKCore
@@ -64,11 +62,7 @@ public final class SKRTMAPI: RTMDelegate {
6462
if let rtm = rtm {
6563
self.rtm = rtm
6664
} else {
67-
#if os(Linux)
68-
self.rtm = ZewoRTM()
69-
#else
70-
self.rtm = StarscreamRTM()
71-
#endif
65+
self.rtm = VaporEngineRTM()
7266
}
7367
self.rtm.delegate = self
7468
}

0 commit comments

Comments
 (0)