From cbc777ed88d1ab4a9324c0332db55f6a2c996a5d Mon Sep 17 00:00:00 2001 From: Victor Bodinaud Date: Sun, 14 Jan 2024 22:17:25 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=9A=20Add=20linux=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sources/Hermes/Hermes.swift | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/Sources/Hermes/Hermes.swift b/Sources/Hermes/Hermes.swift index 65152b7..8fe1f93 100644 --- a/Sources/Hermes/Hermes.swift +++ b/Sources/Hermes/Hermes.swift @@ -104,7 +104,24 @@ public struct Hermes { request.addValue(header.value, forHTTPHeaderField: header.key) } - let (data, response) = try await URLSession.shared.data(for: request) + let task = URLSession.shared.dataTask(with: request) { data, response, error in + guard let responseData = data, error == nil else { + completion(.failure(error ?? NetworkRequestError.unknown(data, response))) + return + } + + + guard let _ = response as? HTTPURLResponse else { + throw NetworkError.invalidResponse + } + + guard let result = try? JSONDecoder().decode(resource.modelType, from: data) else { + throw NetworkError.decodingError + } + + completion(.success(result)) + } + task.resume() #else let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = defaultHeaders @@ -112,7 +129,6 @@ public struct Hermes { let session = URLSession(configuration: configuration) let (data, response) = try await session.data(for: request) -#endif guard let _ = response as? HTTPURLResponse else { throw NetworkError.invalidResponse @@ -123,5 +139,6 @@ public struct Hermes { } return result +#endif } }