diff --git a/Sources/Hermes/Hermes.swift b/Sources/Hermes/Hermes.swift index 5e4384c..65152b7 100644 --- a/Sources/Hermes/Hermes.swift +++ b/Sources/Hermes/Hermes.swift @@ -5,7 +5,7 @@ // import Foundation -#if canImport(FoundationNetworking) +#if os(Linux) import FoundationNetworking #endif @@ -19,15 +19,15 @@ public enum NetworkError: Error { extension NetworkError: LocalizedError { public var errorDescription: String? { switch self { - case .badRequest: - return NSLocalizedString("Unable to perform request", comment: "badRequestError") - case .serverError(let errorMessage): - print(errorMessage) - return NSLocalizedString(errorMessage, comment: "serverError") - case .decodingError: - return NSLocalizedString("Unable to decode successfully", comment: "decodingError") - case .invalidResponse: - return NSLocalizedString("Invalid response", comment: "invalidResponse") + case .badRequest: + return NSLocalizedString("Unable to perform request", comment: "badRequestError") + case .serverError(let errorMessage): + print(errorMessage) + return NSLocalizedString(errorMessage, comment: "serverError") + case .decodingError: + return NSLocalizedString("Unable to decode successfully", comment: "decodingError") + case .invalidResponse: + return NSLocalizedString("Invalid response", comment: "invalidResponse") } } } @@ -39,12 +39,12 @@ public enum HTTPMethod { var name: String { switch self { - case .get: - return "GET" - case .post: - return "POST" - case .delete: - return "DELETE" + case .get: + return "GET" + case .post: + return "POST" + case .delete: + return "DELETE" } } } @@ -82,9 +82,9 @@ public struct Hermes { var request = URLRequest(url: resource.url) switch resource.method { - case .get(let queryItems): - var components = URLComponents(url: resource.url, resolvingAgainstBaseURL: false) - components?.queryItems = queryItems + case .get(let queryItems): + var components = URLComponents(url: resource.url, resolvingAgainstBaseURL: false) + components?.queryItems = queryItems guard let url = components?.url else { throw NetworkError.badRequest } @@ -99,11 +99,20 @@ public struct Hermes { request.httpMethod = resource.method.name } +#if os(Linux) + for header in defaultHeaders { + request.addValue(header.value, forHTTPHeaderField: header.key) + } + + let (data, response) = try await URLSession.shared.data(for: request) +#else let configuration = URLSessionConfiguration.default configuration.httpAdditionalHeaders = defaultHeaders + let session = URLSession(configuration: configuration) let (data, response) = try await session.data(for: request) +#endif guard let _ = response as? HTTPURLResponse else { throw NetworkError.invalidResponse