Hello HWS Forum
I am using an API with have different JSON response type.
for example of success, the response is :
{
"status": "success",
"result": {
"useruuid": "ab872795-ee32-11eb",
"usertoken": "DbXapngqtEynm6EKja3"
}
}
in case of error, the response is like :
{
"status": "error",
"result": "token mismatch"
}
the task code handling the request have a ResponseType. the code is:
class func taskForPOSTRequest<ResponseType: Decodable>(url: URL, responseType: ResponseType.Type, body: String, completion: @escaping (ResponseType?, Error?) -> Void) {
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.httpBody = body.data(using: .utf8)
//request.addValue("application/json", forHTTPHeaderField: "Content-Type")
let task = URLSession.shared.dataTask(with: request) { data, response, error in
guard let data = data else {
DispatchQueue.main.async {
completion(nil, error)
}
return
}
let decoder = JSONDecoder()
do {
let responseObject = try decoder.decode(ResponseType.self, from: data)
DispatchQueue.main.async {
completion(responseObject, nil)
}
} catch {
DispatchQueue.main.async {
completion(nil, error)
}
}
}
task.resume()
}
How can I handle both response cases of the result node.
Thanks