0001    // Response.swift
0002    //
0003    // The MIT License (MIT)
0004    //
0005    // Copyright (c) 2015 Zewo
0006    //
0007    // Permission is hereby granted, free of charge, to any person obtaining a copy
0008    // of this software and associated documentation files (the "Software"), to deal
0009    // in the Software without restriction, including without limitation the rights
0010    // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
0011    // copies of the Software, and to permit persons to whom the Software is
0012    // furnished to do so, subject to the following conditions:
0013    //
0014    // The above copyright notice and this permission notice shall be included in all
0015    // copies or substantial portions of the Software.
0016    //
0017    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0018    // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0019    // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
0020    // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0021    // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
0022    // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
0023    // SOFTWARE.
0024    
0025    @_exported import Stream
0026    
0027    public struct Response
ClientType.swift:30
    func send(request: Request, middleware: MiddlewareType...) throws -> Response
BranchMiddleware.swift:48
    public func respond(request: Request, chain: ChainType) throws -> Response {
MergeMiddleware.swift:40
    public func respond(request: Request, chain: ChainType) throws -> Response {
MiddlewareType.swift:26
    func respond(request: Request, chain: ChainType) throws -> Response
MiddlewareType.swift:44
    let respond: (request: Request, chain: ChainType) throws -> Response
MiddlewareType.swift:46
    public init(respond: (request: Request, chain: ChainType) throws -> Response) {
MiddlewareType.swift:50
    public func respond(request: Request, chain: ChainType) throws -> Response {
ParserType.swift:32
    func parse(data: Data) throws -> Response?
ResponseParser.swift:41
    var completion: Response -> Void
ResponseParser.swift:43
    init(completion: Response -> Void) {
ResponseParser.swift:65
    var response: Response?
ResponseParser.swift:86
    public func parse(data: Data) throws -> Response? {
ResponseParser.swift:114
    public func parse(convertible: DataConvertible) throws -> Response? {
ResponseParser.swift:199
        let response = Response(
Request.swift:30
    public typealias Upgrade = (Response, StreamType) throws -> Void
ResponderType.swift:26
    func proceed(request: Request) throws -> Response
ResponderType.swift:30
    func respond(request: Request) throws -> Response
ResponderType.swift:34
    public func proceed(request: Request) throws -> Response {
ResponderType.swift:39
public typealias Respond = Request throws -> Response
ResponderType.swift:48
    public func respond(request: Request) throws -> Response {
Response.swift:49
extension Response {
Response.swift:106
extension Response: CustomStringConvertible {
Response.swift:129
extension Response: CustomDebugStringConvertible {
Response.swift:135
extension Response: Hashable {
Response.swift:141
public func ==(lhs: Response, rhs: Response) -> Bool {
Response.swift:141
public func ==(lhs: Response, rhs: Response) -> Bool {
Route.swift:38
    public func respond(request: Request) throws -> Response {
RouterType.swift:32
    public func respond(request: Request) throws -> Response {
ResponseSerializer.swift:30
    public func serialize(response: Response, @noescape send: Data throws -> Void) throws {
SerializerType.swift:32
    func serialize(response: Response, @noescape send: Data throws -> Void) throws
: MessageType { 0028 public typealias Upgrade = (Request, StreamType) throws -> Void 0029 0030 public var status
Response.swift:98
        return status.statusCode
Response.swift:102
        return status.reasonPhrase
: Status 0031 public var version: Version 0032 public var headers
ResponseSerializer.swift:36
        for (name, value) in response.headers {
: Headers 0033 public var cookies
Response.swift:114
        for cookie in cookies {
ResponseSerializer.swift:41
        for cookie in response.cookies {
: Cookies 0034 public var body
ResponseSerializer.swift:48
        switch response.body {
: Body 0035 public var upgrade: Upgrade? 0036 0037 public var storage: Storage = [:] 0038 0039 init(status: Status, version: Version, headers: Headers, cookies: Cookies, body: Body, upgrade: Upgrade?) { 0040 self.status = status 0041 self.version = version 0042 self.headers = headers 0043 self.cookies = cookies 0044 self.body = body 0045 self.upgrade = upgrade 0046 } 0047 } 0048 0049 extension Response { 0050 public init
Response.swift:39
    init(status: Status, version: Version, headers: Headers, cookies: Cookies, body: Body, upgrade: Upgrade?) {
Response.swift:67
    public init(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: Data = nil, upgrade: Upgrade? = nil) {
Response.swift:77
    public init(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: DataConvertible, upgrade: Upgrade? = nil) {
Response.swift:87
    public init(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: StreamType, upgrade: Upgrade? = nil) {
(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: Body, upgrade: Upgrade? = nil) { 0051 self.init( 0052 status: status, 0053 version: (major: 1, minor: 1), 0054 headers: headers, 0055 cookies: cookies, 0056 body: body, 0057 upgrade: upgrade 0058 ) 0059 0060 if let buffer = body.buffer { 0061 contentLength = buffer.count 0062 } else { 0063 transferEncoding = "chunked" 0064 } 0065 } 0066 0067 public init(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: Data = nil, upgrade: Upgrade? = nil) { 0068 self.init( 0069 status: status, 0070 headers: headers, 0071 cookies: cookies, 0072 body: .Buffer(body), 0073 upgrade: upgrade 0074 ) 0075 } 0076 0077 public init(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: DataConvertible, upgrade: Upgrade? = nil) { 0078 self.init( 0079 status: status, 0080 headers: headers, 0081 cookies: cookies, 0082 body: body.data, 0083 upgrade: upgrade 0084 ) 0085 } 0086 0087 public init(status: Status = .OK, headers: Headers = [:], cookies: Cookies = [], body: StreamType, upgrade: Upgrade? = nil) { 0088 self.init( 0089 status: status, 0090 headers: headers, 0091 cookies: cookies, 0092 body: .Stream(body), 0093 upgrade: upgrade 0094 ) 0095 } 0096 0097 public var statusCode
Response.swift:108
        return "HTTP/1.1 " + statusCode.description + " " + reasonPhrase + "\n"
: Int { 0098 return status.statusCode 0099 } 0100 0101 public var reasonPhrase
Response.swift:108
        return "HTTP/1.1 " + statusCode.description + " " + reasonPhrase + "\n"
: String { 0102 return status.reasonPhrase 0103 } 0104 } 0105 0106 extension Response: CustomStringConvertible { 0107 public var statusLineDescription
Response.swift:122
        return statusLineDescription +
: String { 0108 return "HTTP/1.1 " + statusCode.description + " " + reasonPhrase + "\n" 0109 } 0110 0111 public var cookiesDescription
Response.swift:124
            cookiesDescription + "\n" +
: String { 0112 var string = "" 0113 0114 for cookie in cookies { 0115 string += "Set-Cookie: \(cookie.description)\n" 0116 } 0117 0118 return string 0119 } 0120 0121 public var description
Response.swift:131
        return description + "\n\n" + storageDescription
Response.swift:137
        return description.hashValue
: String { 0122 return statusLineDescription + 0123 headerDescription + 0124 cookiesDescription + "\n" + 0125 bodyDescription 0126 } 0127 } 0128 0129 extension Response: CustomDebugStringConvertible { 0130 public var debugDescription: String { 0131 return description + "\n\n" + storageDescription 0132 } 0133 } 0134 0135 extension Response: Hashable { 0136 public var hashValue
Response.swift:142
    return lhs.hashValue == rhs.hashValue
Response.swift:142
    return lhs.hashValue == rhs.hashValue
: Int { 0137 return description.hashValue 0138 } 0139 } 0140 0141 public func ==(lhs: Response, rhs: Response) -> Bool { 0142 return lhs.hashValue == rhs.hashValue 0143 } 0144