AcaMate_iOS/AcaMate/2. Model/API Response.swift

87 lines
1.8 KiB
Swift

//
// API Response.swift
// AcaMate
//
// Created by Sean Kim on 11/29/24.
//
import Foundation
class APIResponse<T: Codable>: 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_Academy: Codable {
let uid: String
let bid: [String]
}
// /api/v1/in/member/academy ----------------
class AcademyName: Codable {
let bid: String
let name: String
}