// // API Response.swift // AcaMate // // Created by Sean Kim on 11/29/24. // import Foundation class APIResponse: Codable { let status: Status let data: T } class Status: Codable { let code: APICode let message: String } enum APICode: Codable { case success case inputErr case outputErr case networkErr case unknownErr case anything(String) init(from decoder: Decoder) throws { let container = try decoder.singleValueContainer() let rawValue = try container.decode(String.self) switch rawValue { case "000": self = .success case "001": self = .inputErr case "002": self = .outputErr case "003": self = .networkErr case "999": self = .unknownErr default: self = .anything(rawValue) } } func encode(to encoder: Encoder) throws { var container = encoder.singleValueContainer() switch self { case .success: try container.encode("000") case .inputErr: try container.encode("001") case .outputErr: try container.encode("002") case .networkErr: try container.encode("003") case .unknownErr: try container.encode("999") case .anything(let value): try container.encode(value) } } } // /api/v1/in/app/version ---------------- class VersionData: Codable { let os_type, final_ver, dev_ver, force_ver: String let choice_update_yn: Bool } // /api/v1/in/user/login ---------------- class User_Token: Codable { let token: String let refresh: String // let bids: [String] } // /api/v1/in/member/academy ---------------- class AcademyName: Codable { let bid: String let name: String }