Created
March 28, 2018 08:13
-
-
Save CenoX/6a67bc7583d82bca41e9ada6fd44fdc7 to your computer and use it in GitHub Desktop.
TSS API Sample in Swift
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// main.swift | |
// TSSAPI | |
// | |
// Created by CenoX on 2018. 1. 12.. | |
// Copyright © 2018년 CenoX. All rights reserved. | |
// | |
import Foundation | |
import Dispatch | |
enum Boards: String { | |
case iPad4 = "p103ap" | |
case iPhoneX = "d22ap" | |
case iPhone4s = "n94ap" | |
case unknown = "" | |
} | |
struct JSON: Codable { | |
struct FirmwareInfo: Codable { | |
var build: String | |
var version: String | |
var signing: Bool | |
var started: String | |
var stopped: String? | |
} | |
struct DeviceInfo: Codable { | |
var board: String | |
var model: String | |
var cpid: String | |
var bdid: String | |
var platform: String | |
var firmwares: [FirmwareInfo] | |
} | |
var device: DeviceInfo | |
private enum CodingKeys: String, CodingKey { | |
case device = "iPad3,6" | |
} | |
} | |
var sema = DispatchSemaphore(value: 0) | |
struct APICall { | |
var url: URL | |
var board: Boards | |
init(_ board: Boards) { | |
self.url = URL(string: "https://api.ineal.me/tss/\(board.rawValue)/all")! | |
self.board = board | |
} | |
func process() { | |
URLSession.shared.dataTask(with: url) { data, response, error in | |
if let error = error { dump(error) } | |
guard let data = data, let response = response else { sema.signal(); return } | |
print("Response") | |
print(response) | |
do { | |
let decoded = try JSONDecoder().decode(JSON.self, from: data) | |
let signingFirmwares = decoded.device.firmwares.filter { $0.signing }.map { $0.version }.sorted() | |
let unsigningFirmwares = decoded.device.firmwares.filter { !$0.signing }.map { $0.version }.sorted() | |
print("Current Device -> \(self.board)") | |
print("Currently signing firmwares") | |
print(signingFirmwares) | |
print("Currently unsigning firmwares") | |
print(unsigningFirmwares) | |
} catch let error { | |
dump(error) | |
} | |
sema.signal() | |
}.resume() | |
} | |
} | |
APICall(.iPad4).process() | |
sema.wait() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment