Tusker/Tusker/XCallbackURL/XCBSession.swift

44 lines
1.2 KiB
Swift

//
// 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
}