30 lines
831 B
Swift
30 lines
831 B
Swift
import Foundation
|
|
|
|
class Response<T>: Decodable where T: Decodable {
|
|
let success: Bool
|
|
let data: T?
|
|
let error: String?
|
|
let errorCode: Int?
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case success
|
|
case data
|
|
case error
|
|
case errorCode
|
|
}
|
|
|
|
required init(from decoder: Decoder) throws {
|
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
success = try container.decode(Bool.self, forKey: .success)
|
|
if success {
|
|
data = try container.decode(T.self, forKey: .data)
|
|
error = nil
|
|
errorCode = nil
|
|
} else {
|
|
error = try container.decode(String.self, forKey: .error)
|
|
errorCode = try container.decodeIfPresent(Int.self, forKey: .errorCode)
|
|
data = nil
|
|
}
|
|
}
|
|
}
|