0001
0025 @_exported import TCP
0026 @_exported import HTTP
0027
0028 public struct Client| Client.swift:44 | extension Client { |
| Client.swift:91 | extension Client { |
| Client.swift:101 | extension Client { |
| Client.swift:111 | extension Client { |
| Client.swift:121 | extension Client { |
| Client.swift:131 | extension Client { |
| Client.swift:141 | extension Client { |
| Client.swift:151 | 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, serializer: RequestSerializerType = RequestSerializer(), parser: ResponseParserType = ResponseParser()) throws {
0036 self.host = host
0037 self.port = port
0038 self.client = try TCPStreamClient(address: host, port: port)
0039 self.serializer = serializer
0040 self.parser = parser
0041 }
0042 }
0043
0044 extension Client {
0045 private func addHeaders(request: Request) -> Request {
0046 var request = request
0047 request.host = "\(host):\(port)"
0048 request.userAgent = "Zewo"
0049
0050 if request.connection == nil {
0051 request.connection = "close"
0052 }
0053
0054 return request
0055 }
0056
0057 public func respond(request: Request) throws -> Response {
0058 let request = addHeaders(request)
0059 let stream = try client.connect()
0060
0061 try serializer.serialize(request) { data in
0062 try stream.send(data)
0063 }
0064
0065 try stream.flush()
0066
0067 while true {
0068 let data = try stream.receive()
0069 if let response = try parser.parse(data) {
0070
0071 if let upgrade = request.upgrade {
0072 try upgrade(response, stream)
0073 }
0074
0075 return response
0076 }
0077 }
0078 }
0079
0080 public func send(request: Request, middleware: MiddlewareType...) throws -> Response {
0081 let request = addHeaders(request)
0082 return try middleware.intercept(self).respond(request)
0083 }
0084
0085 private func send(request: Request, middleware: [MiddlewareType]) throws -> Response {
0086 let request = addHeaders(request)
0087 return try middleware.intercept(self).respond(request)
0088 }
0089 }
0090
0091 extension Client {
0092 public func sendMethod| Client.swift:96 | 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 {
0093 return try sendMethod(method, uri: uri, headers: headers, body: body, middleware: middleware)
0094 }
0095
0096 public func sendMethod(method: Method, uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0097 return try sendMethod(method, uri: uri, headers: headers, body: body, middleware: middleware)
0098 }
0099 }
0100
0101 extension Client {
0102 public func get| Client.swift:106 | public func get(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0103 return try sendMethod(.GET, uri: uri, headers: headers, body: body, middleware: middleware)
0104 }
0105
0106 public func get(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0107 return try sendMethod(.GET, uri: uri, headers: headers, body: body, middleware: middleware)
0108 }
0109 }
0110
0111 extension Client {
0112 public func post| Client.swift:116 | public func post(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0113 return try sendMethod(.POST, uri: uri, headers: headers, body: body, middleware: middleware)
0114 }
0115
0116 public func post(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0117 return try sendMethod(.POST, uri: uri, headers: headers, body: body, middleware: middleware)
0118 }
0119 }
0120
0121 extension Client {
0122 public func put| Client.swift:126 | public func put(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0123 return try sendMethod(.PUT, uri: uri, headers: headers, body: body, middleware: middleware)
0124 }
0125
0126 public func put(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0127 return try sendMethod(.PUT, uri: uri, headers: headers, body: body, middleware: middleware)
0128 }
0129 }
0130
0131 extension Client {
0132 public func patch| Client.swift:136 | public func patch(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0133 return try sendMethod(.PATCH, uri: uri, headers: headers, body: body, middleware: middleware)
0134 }
0135
0136 public func patch(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0137 return try sendMethod(.PATCH, uri: uri, headers: headers, body: body, middleware: middleware)
0138 }
0139 }
0140
0141 extension Client {
0142 public func delete| Client.swift:146 | public func delete(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response { |
(uri: String, headers: Headers = [:], body: Data = [], middleware: MiddlewareType...) throws -> Response {
0143 return try sendMethod(.DELETE, uri: uri, headers: headers, body: body, middleware: middleware)
0144 }
0145
0146 public func delete(uri: String, headers: Headers = [:], body: DataConvertible, middleware: MiddlewareType...) throws -> Response {
0147 return try sendMethod(.DELETE, uri: uri, headers: headers, body: body, middleware: middleware)
0148 }
0149 }
0150
0151 extension Client {
0152 private func sendMethod| Client.swift:157 | private 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 {
0153 let request = try Request(method: method, uri: uri, headers: headers, body: body)
0154 return try send(request, middleware: middleware)
0155 }
0156
0157 private func sendMethod(method: Method, uri: String, headers: Headers = [:], body: DataConvertible, middleware: [MiddlewareType]) throws -> Response {
0158 let request = try Request(method: method, uri: uri, headers: headers, body: body)
0159 return try send(request, middleware: middleware)
0160 }
0161 }
0162