2018-09-23 16:01:05 +00:00
|
|
|
//
|
|
|
|
// XCBSession.swift
|
|
|
|
// Tusker
|
|
|
|
//
|
|
|
|
// Created by Shadowfacts on 9/23/18.
|
|
|
|
// Copyright © 2018 Shadowfacts. All rights reserved.
|
|
|
|
//
|
|
|
|
|
|
|
|
import UIKit
|
|
|
|
|
|
|
|
class XCBSession {
|
2018-09-24 01:35:33 +00:00
|
|
|
let type: XCBActionType
|
2018-09-23 16:01:05 +00:00
|
|
|
let success: URL?
|
|
|
|
let error: URL?
|
|
|
|
let cancel: URL?
|
|
|
|
|
2018-09-24 01:35:33 +00:00
|
|
|
init(type: XCBActionType, success: URL?, error: URL?, cancel: URL?) {
|
2018-09-23 16:01:05 +00:00
|
|
|
self.type = type
|
|
|
|
self.success = success
|
|
|
|
self.error = error
|
|
|
|
self.cancel = cancel
|
|
|
|
}
|
|
|
|
|
2018-09-23 22:43:33 +00:00
|
|
|
func complete(with result: XCBSessionResult, additionalData: [String: String?]? = nil) {
|
2018-09-23 16:01:05 +00:00
|
|
|
let url = result == .success ? success : result == .error ? error : cancel
|
2018-09-23 22:43:33 +00:00
|
|
|
if var url = url {
|
2018-09-23 23:04:39 +00:00
|
|
|
XCBManager.currentSession = nil
|
2018-09-23 22:43:33 +00:00
|
|
|
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!
|
|
|
|
}
|
2018-09-23 23:04:39 +00:00
|
|
|
DispatchQueue.main.async {
|
|
|
|
UIApplication.shared.open(url, options: [:])
|
|
|
|
}
|
2018-09-23 16:01:05 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
enum XCBSessionResult {
|
|
|
|
case success, error, cancel
|
|
|
|
}
|