0001    // Result.swift
0002    //
0003    // Copyright (c) 2014–2016 Alamofire Software Foundation (http://alamofire.org/)
0004    //
0005    // Permission is hereby granted, free of charge, to any person obtaining a copy
0006    // of this software and associated documentation files (the "Software"), to deal
0007    // in the Software without restriction, including without limitation the rights
0008    // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
0009    // copies of the Software, and to permit persons to whom the Software is
0010    // furnished to do so, subject to the following conditions:
0011    //
0012    // The above copyright notice and this permission notice shall be included in
0013    // all copies or substantial portions of the Software.
0014    //
0015    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0016    // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0017    // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
0018    // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0019    // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
0020    // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
0021    // THE SOFTWARE.
0022    
0023    import Foundation
0024    
0025    /**
0026        Used to represent whether a request was successful or encountered an error.
0027    
0028        - Success: The request and all post processing operations were successful resulting in the serialization of the 
0029                   provided associated value.
0030        - Failure: The request encountered an error resulting in a failure. The associated values are the original data 
0031                   provided by the server as well as the error that caused the failure.
0032    */
0033    public enum Result
Response.swift:37
    public let result: Result<Value, Error>
Response.swift:58
        result: Result<Value, Error>,
ResponseSerialization.swift:40
    var serializeResponse: (NSURLRequest?, NSHTTPURLResponse?, NSData?, NSError?) -> Result<SerializedObject, ErrorObject> { get }
ResponseSerialization.swift:58
    public var serializeResponse: (NSURLRequest?, NSHTTPURLResponse?, NSData?, NSError?) -> Result<Value, Error>
ResponseSerialization.swift:67
    public init(serializeResponse: (NSURLRequest?, NSHTTPURLResponse?, NSData?, NSError?) -> Result<Value, Error>) {
Result.swift:75
extension Result: CustomStringConvertible {
Result.swift:90
extension Result: CustomDebugStringConvertible {
<Value
Result.swift:34
    case Success(Value)
Result.swift:53
    public var value: Value? {
, Error
Result.swift:35
    case Failure(Error)
Result.swift:63
    public var error: Error? {
: ErrorType> { 0034 case Success
ResponseSerialization.swift:160
            if let response = response where response.statusCode == 204 { return .Success(NSData()) }
ResponseSerialization.swift:168
            return .Success(validData)
ResponseSerialization.swift:204
            if let response = response where response.statusCode == 204 { return .Success("") }
ResponseSerialization.swift:223
                return .Success(string)
ResponseSerialization.swift:273
            if let response = response where response.statusCode == 204 { return .Success(NSNull()) }
ResponseSerialization.swift:283
                return .Success(JSON)
ResponseSerialization.swift:329
            if let response = response where response.statusCode == 204 { return .Success(NSNull()) }
ResponseSerialization.swift:339
                return .Success(plist)
Result.swift:40
        case .Success:
Result.swift:55
        case .Success(let value):
Result.swift:65
        case .Success:
Result.swift:80
        case .Success:
Result.swift:95
        case .Success(let value):
(Value) 0035 case Failure
ResponseSerialization.swift:158
            guard error == nil else { return .Failure(error!) }
ResponseSerialization.swift:165
                return .Failure(error)
ResponseSerialization.swift:202
            guard error == nil else { return .Failure(error!) }
ResponseSerialization.swift:209
                return .Failure(error)
ResponseSerialization.swift:227
                return .Failure(error)
ResponseSerialization.swift:271
            guard error == nil else { return .Failure(error!) }
ResponseSerialization.swift:278
                return .Failure(error)
ResponseSerialization.swift:285
                return .Failure(error as NSError)
ResponseSerialization.swift:327
            guard error == nil else { return .Failure(error!) }
ResponseSerialization.swift:334
                return .Failure(error)
ResponseSerialization.swift:341
                return .Failure(error as NSError)
Result.swift:42
        case .Failure:
Result.swift:57
        case .Failure:
Result.swift:67
        case .Failure(let error):
Result.swift:82
        case .Failure:
Result.swift:97
        case .Failure(let error):
(Error) 0036 0037 /// Returns `true` if the result is a success, `false` otherwise. 0038 public var isSuccess
Result.swift:49
        return !isSuccess
: Bool { 0039 switch self { 0040 case .Success: 0041 return true 0042 case .Failure: 0043 return false 0044 } 0045 } 0046 0047 /// Returns `true` if the result is a failure, `false` otherwise. 0048 public var isFailure: Bool { 0049 return !isSuccess 0050 } 0051 0052 /// Returns the associated value if the result is a success, `nil` otherwise. 0053 public var value: Value? { 0054 switch self { 0055 case .Success(let value): 0056 return value 0057 case .Failure: 0058 return nil 0059 } 0060 } 0061 0062 /// Returns the associated error value if the result is a failure, `nil` otherwise. 0063 public var error: Error? { 0064 switch self { 0065 case .Success: 0066 return nil 0067 case .Failure(let error): 0068 return error 0069 } 0070 } 0071 } 0072 0073 // MARK: - CustomStringConvertible 0074 0075 extension Result: CustomStringConvertible { 0076 /// The textual representation used when written to an output stream, which includes whether the result was a 0077 /// success or failure. 0078 public var description: String { 0079 switch self { 0080 case .Success: 0081 return "SUCCESS" 0082 case .Failure: 0083 return "FAILURE" 0084 } 0085 } 0086 } 0087 0088 // MARK: - CustomDebugStringConvertible 0089 0090 extension Result: CustomDebugStringConvertible { 0091 /// The debug textual representation used when written to an output stream, which includes whether the result was a 0092 /// success or failure in addition to the value or error. 0093 public var debugDescription
Response.swift:75
        return result.debugDescription
Response.swift:90
        output.append("[Result]: \(result.debugDescription)")
: String { 0094 switch self { 0095 case .Success(let value): 0096 return "SUCCESS: \(value)" 0097 case .Failure(let error): 0098 return "FAILURE: \(error)" 0099 } 0100 } 0101 } 0102