mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
65 lines
2.2 KiB
Swift
65 lines
2.2 KiB
Swift
//
|
|
// FetchAnisetteDataOperation.swift
|
|
// AltStore
|
|
//
|
|
// Created by Riley Testut on 1/7/20.
|
|
// Copyright © 2020 Riley Testut. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
import AltStoreCore
|
|
import AltSign
|
|
import Roxas
|
|
|
|
@objc(FetchAnisetteDataOperation)
|
|
final class FetchAnisetteDataOperation: ResultOperation<ALTAnisetteData>
|
|
{
|
|
let context: OperationContext
|
|
|
|
init(context: OperationContext)
|
|
{
|
|
self.context = context
|
|
}
|
|
|
|
override func main()
|
|
{
|
|
super.main()
|
|
|
|
if let error = self.context.error
|
|
{
|
|
self.finish(.failure(error))
|
|
return
|
|
}
|
|
|
|
let url = AnisetteManager.currentURL
|
|
DLOG("Anisette URL: %@", url.absoluteString)
|
|
|
|
let task = AppServices.network.session.dataTask(with: url) { data, response, error in
|
|
|
|
guard let data = data, error == nil else { return }
|
|
|
|
do {
|
|
// make sure this JSON is in the format we expect
|
|
// convert data to json
|
|
if let json = try JSONSerialization.jsonObject(with: data, options: []) as? [String: String] {
|
|
// try to read out a dictionary
|
|
//for some reason serial number isn't needed but it doesn't work unless it has a value
|
|
let formattedJSON: [String: String] = ["machineID": json["X-Apple-I-MD-M"]!, "oneTimePassword": json["X-Apple-I-MD"]!, "localUserID": json["X-Apple-I-MD-LU"]!, "routingInfo": json["X-Apple-I-MD-RINFO"]!, "deviceUniqueIdentifier": json["X-Mme-Device-Id"]!, "deviceDescription": json["X-MMe-Client-Info"]!, "date": json["X-Apple-I-Client-Time"]!, "locale": json["X-Apple-Locale"]!, "timeZone": json["X-Apple-I-TimeZone"]!, "deviceSerialNumber": "1"]
|
|
|
|
if let anisette = ALTAnisetteData(json: formattedJSON) {
|
|
DLOG("Anisette used: %@", formattedJSON)
|
|
self.finish(.success(anisette))
|
|
}
|
|
}
|
|
} catch let error as NSError {
|
|
print("Failed to load: \(error.localizedDescription)")
|
|
self.finish(.failure(error))
|
|
}
|
|
|
|
}
|
|
|
|
task.resume()
|
|
}
|
|
}
|