mobile-ios/CovidSafe/API/RespondToAuthChallengeAPI.swift

66 lines
2 KiB
Swift
Raw Permalink Normal View History

2020-05-08 07:49:14 +00:00
//
// PhoneValidationAPI.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import Foundation
import Alamofire
class RespondToAuthChallengeAPI {
static func respondToAuthChallenge(session: String,
code: String,
2021-03-18 03:16:35 +00:00
completion: @escaping (ChallengeResponse?, ChallengeErrorResponse?) -> Void) {
2020-05-08 07:49:14 +00:00
guard let apiHost = PlistHelper.getvalueFromInfoPlist(withKey: "API_Host", plistName: "CovidSafe-config") else {
return
}
let params = [
"session": session,
"code": code
]
2021-03-18 03:16:35 +00:00
CovidNetworking.shared.session.request("\(apiHost)/v2/respondToAuthChallenge", method: .post, parameters: params, encoding: JSONEncoding.default).validate().responseDecodable(of: ChallengeResponse.self) { (response) in
2020-05-08 07:49:14 +00:00
switch response.result {
case .success:
guard let challengeResponse = response.value else { return }
2021-03-18 03:16:35 +00:00
completion(challengeResponse, nil)
2020-05-08 07:49:14 +00:00
case .failure(_):
guard let errorData = response.data else {
completion(nil, nil)
return
}
var errorResp: ChallengeErrorResponse
do {
let decoder = JSONDecoder()
errorResp = try decoder.decode(ChallengeErrorResponse.self, from: errorData)
} catch {
DLog("error parsing response \(error)")
completion(nil, nil)
return
}
completion(nil, errorResp)
}
}
}
}
struct ChallengeErrorResponse: Decodable, Error {
let message: String
enum CodingKeys: String, CodingKey {
case message
}
}
struct ChallengeResponse: Decodable {
2021-03-18 03:16:35 +00:00
let token: String
let refreshToken: String?
enum CodingKeys: String, CodingKey {
case token
case refreshToken
}
2020-05-08 07:49:14 +00:00
}