// // XCBSession.swift // Tusker // // Created by Shadowfacts on 9/23/18. // Copyright © 2018 Shadowfacts. All rights reserved. // import UIKit class XCBSession { let type: XCBActionType let success: URL? let error: URL? let cancel: URL? init(type: XCBActionType, success: URL?, error: URL?, cancel: URL?) { self.type = type self.success = success self.error = error self.cancel = cancel } func complete(with result: XCBSessionResult, additionalData: [String: String?]? = nil) { let url = result == .success ? success : result == .error ? error : cancel if var url = url { XCBManager.currentSession = nil if let additionalData = additionalData { var components = URLComponents(url: url, resolvingAgainstBaseURL: true)! components.queryItems = components.queryItems ?? [] components.queryItems!.append(contentsOf: additionalData.map(URLQueryItem.init)) url = components.url! } DispatchQueue.main.async { UIApplication.shared.open(url, options: [:]) } } } } enum XCBSessionResult { case success, error, cancel }