amplify-swift/Amplify/Categories/Logging/LoggingError.swift

53 lines
1.4 KiB
Swift

//
// Copyright Amazon.com Inc. or its affiliates.
// All Rights Reserved.
//
// SPDX-License-Identifier: Apache-2.0
//
public enum LoggingError {
case configuration(ErrorDescription, RecoverySuggestion, Error? = nil)
case unknown(ErrorDescription, Error?)
}
extension LoggingError: AmplifyError {
public var errorDescription: ErrorDescription {
switch self {
case .configuration(let errorDescription, _, _):
return errorDescription
case .unknown(let errorDescription, _):
return "Unexpected error occurred with message: \(errorDescription)"
}
}
public var recoverySuggestion: RecoverySuggestion {
switch self {
case .configuration(_, let recoverySuggestion, _):
return recoverySuggestion
case .unknown:
return AmplifyErrorMessages.shouldNotHappenReportBugToAWS()
}
}
public var underlyingError: Error? {
switch self {
case .configuration(_, _, let underlyingError),
.unknown(_, let underlyingError):
return underlyingError
}
}
public init(
errorDescription: ErrorDescription = "An unknown error occurred",
recoverySuggestion: RecoverySuggestion = "(Ignored)",
error: Error
) {
if let error = error as? Self {
self = error
} else {
self = .unknown(errorDescription, error)
}
}
}