import Foundation struct PairingPayloadContext: Equatable { let deviceName: String let originHost: String let pairingToken: String let challenge: String? let challengeID: String? let tokenPreview: String } enum PairingPayloadParser { static func parse(_ payload: String) throws -> PairingPayloadContext { let trimmedPayload = payload.trimmingCharacters(in: .whitespacesAndNewlines) if let components = URLComponents(string: trimmedPayload), components.scheme == "idp.global", components.host == "pair" { let queryItems = components.queryItems ?? [] let token = queryItems.first(where: { $0.name == "token" })?.value ?? "demo-token" let origin = queryItems.first(where: { $0.name == "origin" })?.value ?? "code.foss.global" let device = queryItems.first(where: { $0.name == "device" })?.value ?? "Web Session" return PairingPayloadContext( deviceName: device, originHost: origin, pairingToken: token, challenge: queryItems.first(where: { $0.name == "challenge" })?.value, challengeID: queryItems.first(where: { $0.name == "challenge_id" })?.value, tokenPreview: String(token.suffix(6)) ) } if trimmedPayload.contains("token") || trimmedPayload.contains("pair") { return PairingPayloadContext( deviceName: "Manual Session", originHost: "code.foss.global", pairingToken: trimmedPayload, challenge: nil, challengeID: nil, tokenPreview: String(trimmedPayload.suffix(6)) ) } throw AppError.invalidPairingPayload } }