mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
322fb11dbd
Поэтапно объединяю FieldError и DeserializationError.
48 lines
1.6 KiB
Swift
48 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
import CommonCore
|
|
|
|
@frozen
|
|
public indirect enum DeserializationError: Error {
|
|
case generic
|
|
case nonUTF8String(string: String)
|
|
case invalidJSONData(data: Data)
|
|
case missingType(representation: [String: Any])
|
|
case unknownType(type: String)
|
|
case invalidFieldRepresentation(field: String, representation: Any?)
|
|
case typeMismatch(expected: String, representation: Any)
|
|
case invalidValue(result: Any?, value: Any?)
|
|
case requiredFieldIsMissing(fieldName: String)
|
|
case noData
|
|
case unexpectedError(message: String)
|
|
}
|
|
|
|
extension DeserializationError {
|
|
public var localizedDescription: String {
|
|
switch self {
|
|
case .generic:
|
|
return "generic error"
|
|
case let .nonUTF8String(string):
|
|
return "non-UTF8 string - \(string)"
|
|
case .invalidJSONData:
|
|
return "invalid JSON data"
|
|
case let .missingType(representation):
|
|
return "missing type - \(representation)"
|
|
case let .unknownType(type):
|
|
return "unknown type - \(type)"
|
|
case let .invalidFieldRepresentation(field, representation):
|
|
return "invalid field representation - [\(field): \(dbgStr(representation))]"
|
|
case let .typeMismatch(expected, representation):
|
|
return "type mismatch - expected: \(expected), \(dbgStr(representation))"
|
|
case let .invalidValue(result, value):
|
|
return "invalid value - \(dbgStr(result)), \(dbgStr(value))"
|
|
case .requiredFieldIsMissing:
|
|
return "required field is missing"
|
|
case .noData:
|
|
return "no data"
|
|
case let .unexpectedError(message):
|
|
return "unexpected error: \(message)"
|
|
}
|
|
}
|
|
}
|