0001    import Foundation
0002    
0003    public protocol ResponseWriter
Response.swift:71
    typealias WriteClosure = (ResponseWriter) throws -> Void
{ 0004 func write
Response.swift:145
            writer.write(self.data) 
(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:23
        headers["Location"] = self.redirectLocation
Response.swift:36
        self.redirectLocation = redirectLocation
: 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
SocketServer.swift:133
        if let response = response as? AsyncResponse {
: Response { 0050 public typealias Writer
Response.swift:51
    public let writer: Writer
Response.swift:53
    public init(writer: Writer) {
= Socket throws -> Void 0051 public let writer
Response.swift:54
        self.writer = writer
SocketServer.swift:134
            try response.writer(socket)
: 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
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() -> Response
ResponseConvertible.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) -> Response
Session.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)
{ 0065 0066 public enum SerializationError
Response.swift:204
                throw SerializationError.InvalidObject
: ErrorType { 0067 case InvalidObject
Response.swift:204
                throw SerializationError.InvalidObject
0068 case NotSupported 0069 } 0070 0071 typealias WriteClosure
Response.swift:143
    func content() -> (length: Int, writeClosure: WriteClosure?) {
= (ResponseWriter) throws -> Void 0072 0073 public let status
Response.swift:113
        switch self.status {
Response.swift:177
        self.status = status
Response.swift:220
    return left.status.code == right.status.code
Response.swift:220
    return left.status.code == right.status.code
SocketServer.swift:136
            try socket.writeUTF8("HTTP/1.1 \(response.status.code) \(response.reasonPhrase)\r\n")
: Status 0074 public let data
Response.swift:144
        return (self.data.count, { writer in
Response.swift:145
            writer.write(self.data) 
Response.swift:178
        self.data = data
SocketServer.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;  
: [UInt8] 0075 let contentType
Response.swift:164
        switch self.contentType {
Response.swift:179
        self.contentType = contentType
: ContentType 0076 public var cookies
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
: [String: String] = [:] 0077 0078 enum ContentType
Response.swift:75
    let contentType: ContentType
Response.swift:176
    init(status: Status, data: [UInt8], contentType: ContentType) {
{ 0079 case Text
Application.swift:158
					return Response(status: .OK, data: array, contentType: .Text)
Response.swift:196
        self.init(status: status, data: data, contentType: .Text)
, Html
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)
, Json
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)
, None
Response.swift:37
        super.init(status: .MovedPermanently, data: [], contentType: .None)
Response.swift:55
        super.init(status: .OK, data: [], contentType: .None)
0080 } 0081 0082 public enum Status
Response.swift:73
    public let status: Status
Response.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 {
{ 0083 case OK
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 200
Response.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)
, Created
Response.swift:93
                case .Created: return 201
Response.swift:116
        case .Created: 
, Accepted
Response.swift:94
                case .Accepted: return 202
Response.swift:118
        case .Accepted: 
0084 case MovedPermanently
Response.swift:37
        super.init(status: .MovedPermanently, data: [], contentType: .None)
Response.swift:96
                case .MovedPermanently: return 301
Response.swift:121
        case .MovedPermanently: 
0085 case BadRequest
Response.swift:98
                case .BadRequest: return 400
Response.swift:124
        case .BadRequest: 
, Unauthorized
Response.swift:99
                case .Unauthorized: return 401
Response.swift:126
        case .Unauthorized: 
, Forbidden
Response.swift:100
                case .Forbidden: return 403
Response.swift:128
        case .Forbidden: 
, NotFound
Application.swift:167
					return Response(status: .NotFound, text: "Page not found")
Response.swift:101
                case .NotFound: return 404
Response.swift:130
        case .NotFound: 
0086 case Error
Response.swift:103
                case .Error: return 500 
Response.swift:133
        case .Error: 
Response.swift:185
        self.init(status: .Error, data: data, contentType: .Json)
0087 case Unknown
Response.swift:105
                case .Unknown: return 0
Response.swift:136
        case .Unknown:
0088 case Custom
Response.swift:106
                case .Custom(let code):
Response.swift:138
        case .Custom:
(Int) 0089 0090 public var code
Response.swift:220
    return left.status.code == right.status.code
Response.swift:220
    return left.status.code == right.status.code
SocketServer.swift:136
            try socket.writeUTF8("HTTP/1.1 \(response.status.code) \(response.reasonPhrase)\r\n")
: 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
SocketServer.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
Response.swift:22
        var headers = super.headers
SocketServer.swift:138
            var headers = response.headers
: [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
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)
(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: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)")
(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
ResponseConvertible.swift:24
		return Response(status: .OK, html: self)
(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
Application.swift:167
					return Response(status: .NotFound, text: "Page not found")
(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
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)    
(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