Files
iKeyMon/Model/API/ServerTypes.swift
2025-11-15 19:49:28 +01:00

74 lines
1.9 KiB
Swift

//
// ServerTypes_Fixed.swift
// iKeyMon
//
// Fixed server types matching your existing code structure
//
import Foundation
// MARK: - Server API Response Types
struct ServerAPIResponse<T: Codable>: Codable {
let data: T
let status: String
let timestamp: Date
let version: String
enum CodingKeys: String, CodingKey {
case data
case status
case timestamp
case version
}
}
// MARK: - Server API Version
struct ServerAPIVersion: Codable {
let major: Int
let minor: Int
let patch: Int
let string: String
init(major: Int, minor: Int, patch: Int = 0) {
self.major = major
self.minor = minor
self.patch = patch
self.string = "\(major).\(minor).\(patch)"
}
init(from versionString: String) throws {
let components = versionString.split(separator: ".").compactMap { Int($0) }
guard components.count >= 2 else {
throw DecodingError.dataCorrupted(
DecodingError.Context(codingPath: [], debugDescription: "Invalid version string format")
)
}
self.major = components[0]
self.minor = components[1]
self.patch = components.count > 2 ? components[2] : 0
self.string = versionString
}
}
// MARK: - Server API Response Factory
class ServerAPIResponseFactory {
static func createResponse<T: Codable>(data: T, status: String = "success") -> ServerAPIResponse<T> {
return ServerAPIResponse(
data: data,
status: status,
timestamp: Date(),
version: "1.0"
)
}
static func createErrorResponse(error: String) -> ServerAPIResponse<String> {
return ServerAPIResponse(
data: error,
status: "error",
timestamp: Date(),
version: "1.0"
)
}
}