diff --git a/Sources/HttpParser.swift b/Sources/HttpParser.swift index d2f7f8d7..f5802219 100644 --- a/Sources/HttpParser.swift +++ b/Sources/HttpParser.swift @@ -32,7 +32,7 @@ public class HttpParser { } return request } - + private func readBody(_ socket: Socket, size: Int) throws -> [UInt8] { return try socket.read(length: size) } diff --git a/Sources/String+BASE64.swift b/Sources/String+BASE64.swift index f0afa3ac..16c26c2c 100644 --- a/Sources/String+BASE64.swift +++ b/Sources/String+BASE64.swift @@ -9,38 +9,8 @@ import Foundation extension String { - - private static let CODES = [UInt8]("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".utf8) - - public static func toBase64(_ data: [UInt8]) -> String? { - // Based on: https://en.wikipedia.org/wiki/Base64#Sample_Implementation_in_Java - - var result = [UInt8]() - var tmp: UInt8 - for index in stride(from: 0, to: data.count, by: 3) { - let byte = data[index] - tmp = (byte & 0xFC) >> 2; - result.append(CODES[Int(tmp)]) - tmp = (byte & 0x03) << 4; - if index + 1 < data.count { - tmp |= (data[index + 1] & 0xF0) >> 4; - result.append(CODES[Int(tmp)]); - tmp = (data[index + 1] & 0x0F) << 2; - if (index + 2 < data.count) { - tmp |= (data[index + 2] & 0xC0) >> 6; - result.append(CODES[Int(tmp)]); - tmp = data[index + 2] & 0x3F; - result.append(CODES[Int(tmp)]); - } else { - result.append(CODES[Int(tmp)]); - result.append(contentsOf: [UInt8]("=".utf8)); - } - } else { - result.append(CODES[Int(tmp)]); - result.append(contentsOf: [UInt8]("==".utf8)); - } - } - return String(bytes: result, encoding: .utf8) + public static func toBase64(_ data: [UInt8]) -> String { + return Data(bytes: data).base64EncodedString() } } diff --git a/Sources/WebSockets.swift b/Sources/WebSockets.swift index 5eaf32b9..480c2411 100644 --- a/Sources/WebSockets.swift +++ b/Sources/WebSockets.swift @@ -139,9 +139,7 @@ public func websocket( disconnected?(session) } - guard let secWebSocketAccept = String.toBase64((secWebSocketKey + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").sha1()) else { - return HttpResponse.internalServerError - } + let secWebSocketAccept = String.toBase64((secWebSocketKey + "258EAFA5-E914-47DA-95CA-C5AB0DC85B11").sha1()) let headers = ["Upgrade": "WebSocket", "Connection": "Upgrade", "Sec-WebSocket-Accept": secWebSocketAccept] return HttpResponse.switchProtocols(headers, protocolSessionClosure) }