0001
0025 @_exported import TCPSSL
0026 @_exported import HTTP
0027
0028 public struct Client| Client_.swift:51 | extension Client { |
| Client_.swift:98 | extension Client { |
| Client_.swift:108 | extension Client { |
| Client_.swift:118 | extension Client { |
| Client_.swift:128 | extension Client { |
| Client_.swift:138 | extension Client { |
| Client_.swift:148 | extension Client { |
| Client_.swift:158 | extension Client { |
: ClientType {
0029 public let host: String
0030 public let port: Int
0031 public let client: StreamClientType
0032 public let serializer: RequestSerializerType
0033 public let parser: ResponseParserType
0034
0035 public init(host: String, port: Int, verifyBundle: String? = nil, certificate: String? = nil, privateKey: String? = nil, certificateChain: String? = nil, serializer: RequestSerializerType = RequestSerializer(), parser: ResponseParserType = ResponseParser()) throws {
0036 self.host = host
0037 self.port = port
0038 self.client = try TCPSSLStreamClient(
0039 address: host,
0040 port: port,
0041 verifyBundle: verifyBundle,
0042 certificate: certificate,
0043 privateKey: privateKey,
0044 certificateChain: certificateChain
0045 )
0046 self.serializer = serializer
0047 self.parser = parser
0048 }
0049 }
0050
0051 extension Client {
0052 private func addHeaders(request: Request) -> Request {
0053 var request = request
0054 request.host = "\(host):\(port)"
0055 request.userAgent = "Zewo"
0056
0057 if request.connection == nil {
0058 request.connection = "close"
0059 }
0060
0061 return request
0062 }
0063
0064 public func respond(request: Request) throws -> Response {
0065 let request = addHeaders(request)
0066 let stream = try client.connect()
0067
0068 try serializer.serialize(request) { data in
0069 try stream.send(data)
0070 }
0071
0072 try stream.flush()
0073
0074 while true {
0075 let data = try stream.receive()
0076 if let response = try parser.parse(data) {
0077
0078 if let upgrade = request.upgrade {
0079 try upgrade(response, stream)
0080 }
0081
0082 return response
0083 }
0084 }
0085 }
0086
0087 public func send(request: Request, middleware: MiddlewareType...) throws -> Response {
0088 let request = addHeaders(request)
0089 return try middleware.intercept(self).respond(request)
0090 }
0091
0092 private func send(request: Request, middleware: [MiddlewareType]) throws -> Response {
0093 let request = addHeaders(request)
0094 return try middleware.intercept(self).respond(request)
0095 }
0096 }
0097
0098 extension Client {
0099 public func sendMethod| Client_.swift:103 | public func sendMethod(method: Method, uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(method: Method, uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0100 return try sendMethod(method, uri: uri, headers: headers, body: body, middleware: middleware)
0101 }
0102
0103 public func sendMethod(method: Method, uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0104 return try sendMethod(method, uri: uri, headers: headers, body: body, middleware: middleware)
0105 }
0106 }
0107
0108 extension Client {
0109 public func get(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0110 return try sendMethod(.GET, uri: uri, headers: headers, body: body, middleware: middleware)
0111 }
0112
0113 public func get| Client_.swift:109 | public func get(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0114 return try sendMethod(.GET, uri: uri, headers: headers, body: body, middleware: middleware)
0115 }
0116 }
0117
0118 extension Client {
0119 public func post(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0120 return try sendMethod(.POST, uri: uri, headers: headers, body: body, middleware: middleware)
0121 }
0122
0123 public func post| Client_.swift:119 | public func post(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0124 return try sendMethod(.POST, uri: uri, headers: headers, body: body, middleware: middleware)
0125 }
0126 }
0127
0128 extension Client {
0129 public func put(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0130 return try sendMethod(.PUT, uri: uri, headers: headers, body: body, middleware: middleware)
0131 }
0132
0133 public func put| Client_.swift:129 | public func put(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0134 return try sendMethod(.PUT, uri: uri, headers: headers, body: body, middleware: middleware)
0135 }
0136 }
0137
0138 extension Client {
0139 public func patch| Client_.swift:143 | public func patch(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0140 return try sendMethod(.PATCH, uri: uri, headers: headers, body: body, middleware: middleware)
0141 }
0142
0143 public func patch(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0144 return try sendMethod(.PATCH, uri: uri, headers: headers, body: body, middleware: middleware)
0145 }
0146 }
0147
0148 extension Client {
0149 public func delete| Client_.swift:153 | public func delete(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0150 return try sendMethod(.DELETE, uri: uri, headers: headers, body: body, middleware: middleware)
0151 }
0152
0153 public func delete(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0154 return try sendMethod(.DELETE, uri: uri, headers: headers, body: body, middleware: middleware)
0155 }
0156 }
0157
0158 extension Client {
0159 private func sendMethod(method: Method, uri: String, headers: Headers = [:], body: Data = [], middleware: [MiddlewareType]) throws -> Response {
0160 let request = try Request(method: method, uri: uri, headers: headers, body: body)
0161 return try send(request, middleware: middleware)
0162 }
0163
0164 private func sendMethod| Client_.swift:159 | private func sendMethod(method: Method, uri: String, headers: Headers = [:], body: Data = [], middleware: [MiddlewareType]) throws -> Response { |
(method: Method, uri: String, headers: Headers = [:], body: DataConvertible, middleware: [MiddlewareType]) throws -> Response {
0165 let request = try Request(method: method, uri: uri, headers: headers, body: body)
0166 return try send(request, middleware: middleware)
0167 }
0168 }
0169