import Foundation enum ImageSourceResolver { static func resolve(_ raw: String?) -> String? { guard var normalized = raw?.trimmingCharacters(in: .whitespacesAndNewlines), normalized.isEmpty == false else { return nil } normalized = normalized.replacingOccurrences(of: "\\/", with: "/") let lower = normalized.lowercased() if lower.hasPrefix("http://") || lower.hasPrefix("https://") || lower.hasPrefix("data:image") { return normalized } // if let base64DataURL = normalizedBase64DataURL(normalized) { // return base64DataURL // } let base = ApiConfig.baseURL.absoluteString.trimmingCharacters(in: CharacterSet(charactersIn: "/")) let path = normalized.hasPrefix("/") ? normalized : "/\(normalized)" return "\(base)\(path)" } private static func normalizedBase64DataURL(_ raw: String) -> String? { let trimmed = raw.trimmingCharacters(in: .whitespacesAndNewlines) guard trimmed.isEmpty == false else { return nil } let payload: String if let marker = trimmed.range(of: "base64,", options: [.caseInsensitive]) { payload = String(trimmed[marker.upperBound...]) } else { payload = trimmed } let sanitized = payload .replacingOccurrences(of: "\n", with: "") .replacingOccurrences(of: "\r", with: "") .replacingOccurrences(of: " ", with: "") guard sanitized.count >= 64 else { return nil } guard Data(base64Encoded: sanitized, options: [.ignoreUnknownCharacters]) != nil else { return nil } return "data:image/png;base64,\(sanitized)" } }