Skip to content

Instantly share code, notes, and snippets.

@CenoX
Created March 28, 2018 08:13
Show Gist options
  • Save CenoX/6a67bc7583d82bca41e9ada6fd44fdc7 to your computer and use it in GitHub Desktop.
Save CenoX/6a67bc7583d82bca41e9ada6fd44fdc7 to your computer and use it in GitHub Desktop.
TSS API Sample in Swift
//
// 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