0001 import Foundation 0002 0003 public protocol ResponseWriter{ 0004 func write
Response.swift:71 typealias WriteClosure = (ResponseWriter) throws -> Void(data: [UInt8]) 0005 } 0006 0007 /** 0008 Responses that redirect to a supplied URL. 0009 */ 0010 public class Redirect: Response { 0011 0012 ///The URL string for redirect 0013 var redirectLocation
Response.swift:145 writer.write(self.data): String 0014 0015 /** 0016 Redirect headers return normal `Response` headers 0017 while adding `Location`. 0018 0019 - returns: Dictionary of headers 0020 */ 0021 public override var headers: [String: String] { 0022 var headers = super.headers 0023 headers["Location"] = self.redirectLocation 0024 return headers 0025 } 0026 0027 /** 0028 Creates a `Response` object that redirects 0029 to a given URL string. 0030 0031 - parameter: redirectLocation: The URL string for redirect 0032 0033 - returns: Response 0034 */ 0035 public init(to redirectLocation: String) { 0036 self.redirectLocation = redirectLocation 0037 super.init(status: .MovedPermanently, data: [], contentType: .None) 0038 } 0039 } 0040 0041 /** 0042 Allows for asynchronous responses. Passes 0043 the server Socket to the Response for writing. 0044 The response calls `release()` on the Socket 0045 when it is complete. 0046 0047 Inspired by elliottminns 0048 */ 0049 public class AsyncResponse
Response.swift:23 headers["Location"] = self.redirectLocationResponse.swift:36 self.redirectLocation = redirectLocation: Response { 0050 public typealias Writer
SocketServer.swift:133 if let response = response as? AsyncResponse {= Socket throws -> Void 0051 public let writer
Response.swift:51 public let writer: WriterResponse.swift:53 public init(writer: Writer) {: Writer 0052 0053 public init(writer: Writer) { 0054 self.writer = writer 0055 super.init(status: .OK, data: [], contentType: .None) 0056 } 0057 } 0058 0059 /** 0060 Responses are objects responsible for returning 0061 data to the HTTP request such as the body, status 0062 code and headers. 0063 */ 0064 public class Response
Response.swift:54 self.writer = writerSocketServer.swift:134 try response.writer(socket){ 0065 0066 public enum SerializationError
Application.swift:139 public func serverDriverDidReceiveRequest(request: Request) -> Response {Application.swift:158 return Response(status: .OK, data: array, contentType: .Text)Application.swift:161 return Response(error: "Could not open file.")Application.swift:167 return Response(status: .NotFound, text: "Page not found")Application.swift:180 return Response(error: "Server Error: \(error)")Request.swift:20 public typealias Handler = ((request: Request) throws -> Response)Response.swift:10 public class Redirect: Response {Response.swift:49 public class AsyncResponse: Response {Response.swift:219 func ==(left: Response, right: Response) -> Bool {Response.swift:219 func ==(left: Response, right: Response) -> Bool {ResponseConvertible.swift:12 func response() -> ResponseResponseConvertible.swift:16 extension Response: ResponseConvertible {ResponseConvertible.swift:17 public func response() -> Response {ResponseConvertible.swift:23 public func response() -> Response {ResponseConvertible.swift:24 return Response(status: .OK, html: self)ResponseConvertible.swift:29 public func response() -> Response {ResponseConvertible.swift:31 return try Response(status: .OK, json: self)ResponseConvertible.swift:33 return Response(error: "JSON serialization error: \(error)")ResponseConvertible.swift:39 public func response() -> Response {ResponseConvertible.swift:41 return try Response(status: .OK, json: self)ResponseConvertible.swift:43 return Response(error: "JSON serialization error: \(error)")ResponseConvertible.swift:49 public func response() -> Response {ResponseConvertible.swift:51 return try Response(status: .OK, json: self)ResponseConvertible.swift:53 return Response(error: "JSON serialization error: \(error)")ResponseConvertible.swift:59 public func response() -> Response {ResponseConvertible.swift:61 return try Response(status: .OK, json: self)ResponseConvertible.swift:63 return Response(error: "JSON serialization error: \(error)")ServerDriver.swift:11 func serverDriverDidReceiveRequest(request: Request) -> ResponseSession.swift:35 public static func close(request request: Request, response: Response) {SocketServer.swift:132 private func respond(socket: Socket, response: Response, keepAlive: Bool) throws -> Bool {Vapor+JSON.swift:17 public func response() -> Response {Vapor+JSON.swift:20 return Response(status: .OK, data: data, contentType: .Json)View.swift:46 public func response() -> Response {View.swift:47 return Response(status: .OK, data: self.bytes, contentType: .Html): ErrorType { 0067 case InvalidObject
Response.swift:204 throw SerializationError.InvalidObject0068 case NotSupported 0069 } 0070 0071 typealias WriteClosure
Response.swift:204 throw SerializationError.InvalidObject= (ResponseWriter) throws -> Void 0072 0073 public let status
Response.swift:143 func content() -> (length: Int, writeClosure: WriteClosure?) {: Status 0074 public let data
Response.swift:113 switch self.status {Response.swift:177 self.status = statusResponse.swift:220 return left.status.code == right.status.codeResponse.swift:220 return left.status.code == right.status.codeSocketServer.swift:136 try socket.writeUTF8("HTTP/1.1 \(response.status.code) \(response.reasonPhrase)\r\n"): [UInt8] 0075 let contentType
Response.swift:144 return (self.data.count, { writer inResponse.swift:145 writer.write(self.data)Response.swift:178 self.data = dataSocketServer.swift:140 if response.data.count >= 0 {SocketServer.swift:141 headers["Content-Length"] = "\(response.data.count)"SocketServer.swift:144 if keepAlive && response.data.count != -1 {SocketServer.swift:154 try socket.writeUInt8(response.data)SocketServer.swift:157 return keepAlive && response.data.count != -1;: ContentType 0076 public var cookies
Response.swift:164 switch self.contentType {Response.swift:179 self.contentType = contentType: [String: String] = [:] 0077 0078 enum ContentType
Response.swift:152 if self.cookies.count > 0 {Response.swift:154 for (key, value) in self.cookies {Session.swift:37 response.cookies["vapor-session"] = key{ 0079 case Text
Response.swift:75 let contentType: ContentTypeResponse.swift:176 init(status: Status, data: [UInt8], contentType: ContentType) {, Html
Application.swift:158 return Response(status: .OK, data: array, contentType: .Text)Response.swift:196 self.init(status: status, data: data, contentType: .Text), Json
Response.swift:167 case .Html:Response.swift:191 self.init(status: status, data: data, contentType: .Html)View.swift:47 return Response(status: .OK, data: self.bytes, contentType: .Html), None
Response.swift:165 case .Json:Response.swift:185 self.init(status: .Error, data: data, contentType: .Json)Response.swift:214 self.init(status: status, data: data, contentType: .Json)Vapor+JSON.swift:20 return Response(status: .OK, data: data, contentType: .Json)0080 } 0081 0082 public enum Status
Response.swift:37 super.init(status: .MovedPermanently, data: [], contentType: .None)Response.swift:55 super.init(status: .OK, data: [], contentType: .None){ 0083 case OK
Response.swift:73 public let status: StatusResponse.swift:176 init(status: Status, data: [UInt8], contentType: ContentType) {Response.swift:188 public convenience init(status: Status, html: String) {Response.swift:194 public convenience init(status: Status, text: String) {Response.swift:199 public convenience init(status: Status, json: Any) throws {, Created
Application.swift:158 return Response(status: .OK, data: array, contentType: .Text)Response.swift:55 super.init(status: .OK, data: [], contentType: .None)Response.swift:92 case .OK: return 200Response.swift:114 case .OK:ResponseConvertible.swift:24 return Response(status: .OK, html: self)ResponseConvertible.swift:31 return try Response(status: .OK, json: self)ResponseConvertible.swift:41 return try Response(status: .OK, json: self)ResponseConvertible.swift:51 return try Response(status: .OK, json: self)ResponseConvertible.swift:61 return try Response(status: .OK, json: self)Vapor+JSON.swift:20 return Response(status: .OK, data: data, contentType: .Json)View.swift:47 return Response(status: .OK, data: self.bytes, contentType: .Html), Accepted
Response.swift:93 case .Created: return 201Response.swift:116 case .Created:0084 case MovedPermanently
Response.swift:94 case .Accepted: return 202Response.swift:118 case .Accepted:0085 case BadRequest
Response.swift:37 super.init(status: .MovedPermanently, data: [], contentType: .None)Response.swift:96 case .MovedPermanently: return 301Response.swift:121 case .MovedPermanently:, Unauthorized
Response.swift:98 case .BadRequest: return 400Response.swift:124 case .BadRequest:, Forbidden
Response.swift:99 case .Unauthorized: return 401Response.swift:126 case .Unauthorized:, NotFound
Response.swift:100 case .Forbidden: return 403Response.swift:128 case .Forbidden:0086 case Error
Application.swift:167 return Response(status: .NotFound, text: "Page not found")Response.swift:101 case .NotFound: return 404Response.swift:130 case .NotFound:0087 case Unknown
Response.swift:103 case .Error: return 500Response.swift:133 case .Error:Response.swift:185 self.init(status: .Error, data: data, contentType: .Json)0088 case Custom
Response.swift:105 case .Unknown: return 0Response.swift:136 case .Unknown:(Int) 0089 0090 public var code
Response.swift:106 case .Custom(let code):Response.swift:138 case .Custom:: Int { 0091 switch self { 0092 case .OK: return 200 0093 case .Created: return 201 0094 case .Accepted: return 202 0095 0096 case .MovedPermanently: return 301 0097 0098 case .BadRequest: return 400 0099 case .Unauthorized: return 401 0100 case .Forbidden: return 403 0101 case .NotFound: return 404 0102 0103 case .Error: return 500 0104 0105 case .Unknown: return 0 0106 case .Custom(let code): 0107 return code 0108 } 0109 } 0110 } 0111 0112 public var reasonPhrase
Response.swift:220 return left.status.code == right.status.codeResponse.swift:220 return left.status.code == right.status.codeSocketServer.swift:136 try socket.writeUTF8("HTTP/1.1 \(response.status.code) \(response.reasonPhrase)\r\n"): String { 0113 switch self.status { 0114 case .OK: 0115 return "OK" 0116 case .Created: 0117 return "Created" 0118 case .Accepted: 0119 return "Accepted" 0120 0121 case .MovedPermanently: 0122 return "Moved Permanently" 0123 0124 case .BadRequest: 0125 return "Bad Request" 0126 case .Unauthorized: 0127 return "Unauthorized" 0128 case .Forbidden: 0129 return "Forbidden" 0130 case .NotFound: 0131 return "Not Found" 0132 0133 case .Error: 0134 return "Internal Server Error" 0135 0136 case .Unknown: 0137 return "Unknown" 0138 case .Custom: 0139 return "Custom" 0140 } 0141 } 0142 0143 func content() -> (length: Int, writeClosure: WriteClosure?) { 0144 return (self.data.count, { writer in 0145 writer.write(self.data) 0146 }) 0147 } 0148 0149 public var headers
SocketServer.swift:136 try socket.writeUTF8("HTTP/1.1 \(response.status.code) \(response.reasonPhrase)\r\n"): [String: String] { 0150 var headers = ["Server" : "Vapor \(Application.VERSION)"] 0151 0152 if self.cookies.count > 0 { 0153 var cookieString = "" 0154 for (key, value) in self.cookies { 0155 if cookieString != "" { 0156 cookieString += ";" 0157 } 0158 0159 cookieString += "\(key)=\(value)" 0160 } 0161 headers["Set-Cookie"] = cookieString 0162 } 0163 0164 switch self.contentType { 0165 case .Json: 0166 headers["Content-Type"] = "application/json" 0167 case .Html: 0168 headers["Content-Type"] = "text/html" 0169 default: 0170 break 0171 } 0172 0173 return headers 0174 } 0175 0176 init
Response.swift:22 var headers = super.headersSocketServer.swift:138 var headers = response.headers(status: Status, data: [UInt8], contentType: ContentType) { 0177 self.status = status 0178 self.data = data 0179 self.contentType = contentType 0180 } 0181 0182 public convenience init
Application.swift:158 return Response(status: .OK, data: array, contentType: .Text)Response.swift:37 super.init(status: .MovedPermanently, data: [], contentType: .None)Response.swift:55 super.init(status: .OK, data: [], contentType: .None)Response.swift:185 self.init(status: .Error, data: data, contentType: .Json)Response.swift:191 self.init(status: status, data: data, contentType: .Html)Response.swift:196 self.init(status: status, data: data, contentType: .Text)Response.swift:214 self.init(status: status, data: data, contentType: .Json)Vapor+JSON.swift:20 return Response(status: .OK, data: data, contentType: .Json)View.swift:47 return Response(status: .OK, data: self.bytes, contentType: .Html)(error: String) { 0183 let text = "{\n\t\"error\": true,\n\t\"message\":\"\(error)\"\n}" 0184 let data = [UInt8](text.utf8) 0185 self.init(status: .Error, data: data, contentType: .Json) 0186 } 0187 0188 public convenience init
Application.swift:161 return Response(error: "Could not open file.")Application.swift:180 return Response(error: "Server Error: \(error)")ResponseConvertible.swift:33 return Response(error: "JSON serialization error: \(error)")ResponseConvertible.swift:43 return Response(error: "JSON serialization error: \(error)")ResponseConvertible.swift:53 return Response(error: "JSON serialization error: \(error)")ResponseConvertible.swift:63 return Response(error: "JSON serialization error: \(error)")(status: Status, html: String) { 0189 let serialised = "<html><meta charset=\"UTF-8\"><body>\(html)</body></html>" 0190 let data = [UInt8](serialised.utf8) 0191 self.init(status: status, data: data, contentType: .Html) 0192 } 0193 0194 public convenience init
ResponseConvertible.swift:24 return Response(status: .OK, html: self)(status: Status, text: String) { 0195 let data = [UInt8](text.utf8) 0196 self.init(status: status, data: data, contentType: .Text) 0197 } 0198 0199 public convenience init
Application.swift:167 return Response(status: .NotFound, text: "Page not found")(status: Status, json: Any) throws { 0200 let data: [UInt8] 0201 0202 if let jsonObject = json as? AnyObject { 0203 guard NSJSONSerialization.isValidJSONObject(jsonObject) else { 0204 throw SerializationError.InvalidObject 0205 } 0206 0207 let json = try NSJSONSerialization.dataWithJSONObject(jsonObject, options: NSJSONWritingOptions.PrettyPrinted) 0208 data = Array(UnsafeBufferPointer(start: UnsafePointer<UInt8>(json.bytes), count: json.length)) 0209 } else { 0210 data = [] 0211 } 0212 0213 0214 self.init(status: status, data: data, contentType: .Json) 0215 } 0216 } 0217 0218 0219 func ==(left: Response, right: Response) -> Bool { 0220 return left.status.code == right.status.code 0221 } 0222 0223
ResponseConvertible.swift:31 return try Response(status: .OK, json: self)ResponseConvertible.swift:41 return try Response(status: .OK, json: self)ResponseConvertible.swift:51 return try Response(status: .OK, json: self)ResponseConvertible.swift:61 return try Response(status: .OK, json: self)