mobile-ios/CovidSafe/API/ChangePostcodeAPI.swift

60 lines
1.7 KiB
Swift
Raw Normal View History

2021-02-02 00:04:43 +00:00
//
// ChangePostcodeAPI.swift
// CovidSafe
//
// Copyright © 2020 Australian Government. All rights reserved.
//
import Foundation
import Alamofire
class ChangePostcodeAPI: CovidSafeAuthenticatedAPI {
static func changePostcode(newPostcode: String,
completion: @escaping (CovidSafeAPIError?) -> Void) {
guard let apiHost = PlistHelper.getvalueFromInfoPlist(withKey: "API_Host", plistName: "CovidSafe-config") else {
return
}
let params = [
"postcode": newPostcode,
]
2021-05-13 00:39:38 +00:00
guard let authHeaders = try? authenticatedHeaders() else {
completion(.RequestError)
return
}
2021-02-02 00:04:43 +00:00
CovidNetworking.shared.session.request("\(apiHost)/device",
method: .post,
parameters: params,
encoding: JSONEncoding.default,
2021-05-13 00:39:38 +00:00
headers: authHeaders,
2021-02-02 00:04:43 +00:00
interceptor: CovidRequestRetrier(retries:3)).validate().responseDecodable(of: DeviceResponse.self) { (response) in
switch response.result {
case .success:
completion(nil)
case .failure(_):
guard let statusCode = response.response?.statusCode else {
completion(.UnknownError)
return
}
if (statusCode >= 400 && statusCode < 500) {
completion(.RequestError)
return
}
completion(.ServerError)
}
}
}
}
struct DeviceResponse: Decodable {
let message: String?
enum CodingKeys: String, CodingKey {
case message
}
}