Pass expected status code into post function

This commit is contained in:
Angelo Stavrow 2021-05-13 16:04:13 -04:00
parent 0cdfbc4d33
commit 98eb70caab
No known key found for this signature in database
GPG Key ID: 1A49C7064E060EEE
1 changed files with 7 additions and 2 deletions

View File

@ -40,8 +40,13 @@ extension WFClient {
/// Sends a `POST` request. /// Sends a `POST` request.
/// - Parameters: /// - Parameters:
/// - request: The `URLRequest` for the `POST` request /// - request: The `URLRequest` for the `POST` request
/// - expecting: The status code expected to be returned by the server
/// - completion: A closure that captures a `Result` with a `Data` object on success, or a `WFError` on failure. /// - completion: A closure that captures a `Result` with a `Data` object on success, or a `WFError` on failure.
func post(with request: URLRequest, completion: @escaping (Result<Data, WFError>) -> Void) { func post(
with request: URLRequest,
expecting statusCode: Int,
completion: @escaping (Result<Data, WFError>) -> Void
) {
if request.httpMethod != "POST" { if request.httpMethod != "POST" {
preconditionFailure("Expected POST request, but got \(request.httpMethod ?? "nil")") preconditionFailure("Expected POST request, but got \(request.httpMethod ?? "nil")")
} }
@ -52,7 +57,7 @@ extension WFClient {
return return
} }
guard let response = response as? HTTPURLResponse, response.statusCode == 200 else { guard let response = response as? HTTPURLResponse, response.statusCode == statusCode else {
if let response = response as? HTTPURLResponse { if let response = response as? HTTPURLResponse {
completion(.failure(WFError(rawValue: response.statusCode) ?? .invalidResponse)) completion(.failure(WFError(rawValue: response.statusCode) ?? .invalidResponse))
} else { } else {