in OSSSwiftDemo/OSSSwiftDemo/Classes/OSSRootViewController.swift [171:209]
func getStsToken() -> Void {
let tcs = OSSTaskCompletionSource<AnyObject>()
let federationProvider: OSSFederationCredentialProvider = OSSFederationCredentialProvider(federationTokenGetter: {() ->OSSFederationToken? in
let url: URL = URL(string: OSS_STSTOKEN_URL)!
let config: URLSessionConfiguration = URLSessionConfiguration.default;
let session: URLSession = URLSession(configuration: config, delegate: self as URLSessionDelegate, delegateQueue: nil);
let task = session.dataTask(with: url, completionHandler: { (data, response, error) -> Void in
//Convert Data to Jsons
tcs.setResult(data as AnyObject)
})
task.resume()
tcs.task.waitUntilFinished()
let json = try? JSONSerialization.jsonObject(with: tcs.task.result as! Data,
options:.allowFragments) as! [String: Any]
print("Json Object:", json as Any)
//verify json
let accessKeyId = json?["AccessKeyId"]
let accessKeySecret = json?["AccessKeySecret"]
self.ossAlert(title: "notice", message: json?.description)
let token = OSSFederationToken()
token.tAccessKey = accessKeyId as! String
token.tSecretKey = accessKeySecret as! String
return token
})
do {
try federationProvider.getToken()
} catch{
print("get Error")
}
}