import Foundation import SwiftUI @Observable final class CookieManager { static let shared = CookieManager() private let cookieKey = "ddys_cookie_string" private let defaults = UserDefaults.standard var cookieString: String { get { defaults.string(forKey: cookieKey) ?? "" } set { defaults.set(newValue, forKey: cookieKey) applyCookies() } } var isAuthenticated: Bool { !cookieString.isEmpty } private init() { applyCookies() } func applyCookies() { guard !cookieString.isEmpty else { return } let storage = HTTPCookieStorage.shared // 清除旧的 ddys cookies if let cookies = storage.cookies(for: URL(string: "https://ddys.io")!) { for cookie in cookies { storage.deleteCookie(cookie) } } // 解析并设置新 cookies let pairs = cookieString.split(separator: ";").map { $0.trimmingCharacters(in: .whitespaces) } for pair in pairs { let parts = pair.split(separator: "=", maxSplits: 1) guard parts.count == 2 else { continue } let name = String(parts[0]).trimmingCharacters(in: .whitespaces) let value = String(parts[1]).trimmingCharacters(in: .whitespaces) let properties: [HTTPCookiePropertyKey: Any] = [ .name: name, .value: value, .domain: ".ddys.io", .path: "/", .secure: "TRUE", ] if let cookie = HTTPCookie(properties: properties) { storage.setCookie(cookie) } } } func clearCookies() { cookieString = "" if let cookies = HTTPCookieStorage.shared.cookies(for: URL(string: "https://ddys.io")!) { for cookie in cookies { HTTPCookieStorage.shared.deleteCookie(cookie) } } } }