From 47e39cdd9a299afe18d0ef7cc38ed417ff64463f Mon Sep 17 00:00:00 2001 From: Sacha DSO Date: Tue, 14 Nov 2023 14:58:58 -1000 Subject: [PATCH] Removes unnecessary HTTPBody .jsonParams --- Sources/Networking/Async Api/Get.swift | 40 ++++++++-------- .../Networking/Combine Api/Get+Combine.swift | 48 +++++++++---------- Sources/Networking/HTTPBody.swift | 9 +--- ...orkingClient+NetworkingJSONDecodable.swift | 8 ++-- .../NetworkingClient+Requests.swift | 8 ++-- Sources/Networking/NetworkingClient.swift | 8 ++++ Sources/Networking/NetworkingService.swift | 1 - 7 files changed, 62 insertions(+), 60 deletions(-) diff --git a/Sources/Networking/Async Api/Get.swift b/Sources/Networking/Async Api/Get.swift index a53b12f..9481f3a 100644 --- a/Sources/Networking/Async Api/Get.swift +++ b/Sources/Networking/Async Api/Get.swift @@ -9,59 +9,59 @@ import Foundation public extension NetworkingClient { - func get(_ route: String, urlParams: Params? = nil) async throws { - let _:Data = try await get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) async throws { + let _:Data = try await get(route, params: params) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) async throws -> T { - let json: Any = try await get(route, urlParams: urlParams) + let json: Any = try await get(route, params: params) return try self.toModel(json, keypath: keypath) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) async throws -> T where T: Collection { let keypath = keypath ?? defaultCollectionParsingKeyPath - let json: Any = try await get(route, urlParams: urlParams) + let json: Any = try await get(route, params: params) return try self.toModel(json, keypath: keypath) } - func get(_ route: String, urlParams: Params? = nil) async throws -> Any { - let data: Data = try await get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) async throws -> Any { + let data: Data = try await get(route, params: params) return try JSONSerialization.jsonObject(with: data, options: []) } - func get(_ route: String, urlParams: Params? = nil) async throws -> Data { - try await request(.get, route, urlParams: urlParams).execute() + func get(_ route: String, params: Params? = nil) async throws -> Data { + try await request(.get, route, queryParams: params).execute() } } public extension NetworkingService { - func get(_ route: String, urlParams: Params? = nil) async throws { - return try await network.get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) async throws { + return try await network.get(route, params: params) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) async throws -> T { - try await network.get(route, urlParams: urlParams, keypath: keypath) + try await network.get(route, params: params, keypath: keypath) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) async throws -> T where T: Collection { - try await network.get(route, urlParams: urlParams, keypath: keypath) + try await network.get(route, params: params, keypath: keypath) } - func get(_ route: String, urlParams: Params? = nil) async throws -> Any { - try await network.get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) async throws -> Any { + try await network.get(route, params: params) } - func get(_ route: String, urlParams: Params? = nil) async throws -> Data { - try await network.get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) async throws -> Data { + try await network.get(route, params: params) } } diff --git a/Sources/Networking/Combine Api/Get+Combine.swift b/Sources/Networking/Combine Api/Get+Combine.swift index e003d34..97263ed 100644 --- a/Sources/Networking/Combine Api/Get+Combine.swift +++ b/Sources/Networking/Combine Api/Get+Combine.swift @@ -10,16 +10,16 @@ import Combine public extension NetworkingClient { - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher { - get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) -> AnyPublisher { + get(route, params: params) .map { (data: Data) -> Void in () } .eraseToAnyPublisher() } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher { - return get(route, urlParams: urlParams) + return get(route, params: params) .tryMap { json -> T in try self.toModel(json, keypath: keypath) } .receive(on: DispatchQueue.main) .eraseToAnyPublisher() @@ -27,61 +27,61 @@ public extension NetworkingClient { // Array version func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher where T: Collection { let keypath = keypath ?? defaultCollectionParsingKeyPath - return get(route, urlParams: urlParams) + return get(route, params: params) .tryMap { json -> T in try self.toModel(json, keypath: keypath) } .receive(on: DispatchQueue.main) .eraseToAnyPublisher() } - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher { - get(route, urlParams: urlParams).toJSON() + func get(_ route: String, params: Params? = nil) -> AnyPublisher { + get(route, params: params).toJSON() } - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher { - request(.get, route, urlParams: urlParams).publisher() + func get(_ route: String, params: Params? = nil) -> AnyPublisher { + request(.get, route, queryParams: params).publisher() } } public extension NetworkingService { - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher { - network.get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) -> AnyPublisher { + network.get(route, params: params) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher { - network.get(route, urlParams: urlParams, keypath: keypath) + network.get(route, params: params, keypath: keypath) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher where T: Collection { - network.get(route, urlParams: urlParams, keypath: keypath) + network.get(route, params: params, keypath: keypath) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher { - network.get(route, urlParams: urlParams, keypath: keypath) + network.get(route, params: params, keypath: keypath) } func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher<[T], Error> { - network.get(route, urlParams: urlParams, keypath: keypath) + network.get(route, params: params, keypath: keypath) } - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher { - network.get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) -> AnyPublisher { + network.get(route, params: params) } - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher { - network.get(route, urlParams: urlParams) + func get(_ route: String, params: Params? = nil) -> AnyPublisher { + network.get(route, params: params) } diff --git a/Sources/Networking/HTTPBody.swift b/Sources/Networking/HTTPBody.swift index 8df41fd..268ae76 100644 --- a/Sources/Networking/HTTPBody.swift +++ b/Sources/Networking/HTTPBody.swift @@ -9,9 +9,8 @@ import Foundation public enum HTTPBody { case urlEncoded(params: Params) - case json(Encodable) - case jsonParams(params: Params) - case multipart(params: Params?, parts:[MultipartData]) + case json(_ encodable: Encodable) + case multipart(params: Params? = nil, parts:[MultipartData]) } @@ -22,8 +21,6 @@ extension HTTPBody { return "application/x-www-form-urlencoded" case .json(_): return "application/json" - case .jsonParams(_): - return "application/json" case .multipart(_, _): return "multipart/form-data; boundary=\(boundary)" } @@ -45,8 +42,6 @@ extension HTTPBody { print(error) return nil } - case .jsonParams(params: let params): - return try? JSONSerialization.data(withJSONObject: params) case .multipart(params: let params, parts: let parts): return buildMultipartHttpBody(params: params ?? [:], multiparts: parts, boundary: boundary) } diff --git a/Sources/Networking/NetworkingClient+NetworkingJSONDecodable.swift b/Sources/Networking/NetworkingClient+NetworkingJSONDecodable.swift index 1bd60b0..e80ab68 100644 --- a/Sources/Networking/NetworkingClient+NetworkingJSONDecodable.swift +++ b/Sources/Networking/NetworkingClient+NetworkingJSONDecodable.swift @@ -17,9 +17,9 @@ public protocol NetworkingJSONDecodable { public extension NetworkingClient { func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher { - return get(route, urlParams: urlParams) + return get(route, params: params) .tryMap { json -> T in try self.toModel(json, keypath: keypath) } .receive(on: DispatchQueue.main) .eraseToAnyPublisher() @@ -27,10 +27,10 @@ public extension NetworkingClient { // Array version func get(_ route: String, - urlParams: Params? = nil, + params: Params? = nil, keypath: String? = nil) -> AnyPublisher<[T], Error> { let keypath = keypath ?? defaultCollectionParsingKeyPath - return get(route, urlParams: urlParams) + return get(route, params: params) .tryMap { json -> [T] in try self.toModels(json, keypath: keypath) } .receive(on: DispatchQueue.main) .eraseToAnyPublisher() diff --git a/Sources/Networking/NetworkingClient+Requests.swift b/Sources/Networking/NetworkingClient+Requests.swift index eab693b..3782554 100644 --- a/Sources/Networking/NetworkingClient+Requests.swift +++ b/Sources/Networking/NetworkingClient+Requests.swift @@ -10,8 +10,8 @@ import Combine public extension NetworkingClient { - func getRequest(_ route: String, urlParams: Params? = nil) -> NetworkingRequest { - request(.get, route, urlParams: urlParams) + func getRequest(_ route: String, queryParams: Params? = nil) -> NetworkingRequest { + request(.get, route, queryParams: queryParams) } func postRequest(_ route: String, body: HTTPBody? = nil) -> NetworkingRequest { @@ -32,13 +32,13 @@ public extension NetworkingClient { internal func request(_ httpMethod: HTTPMethod, _ route: String, - urlParams: Params? = nil, + queryParams: Params? = nil, body: HTTPBody? = nil ) -> NetworkingRequest { let req = NetworkingRequest() req.httpMethod = httpMethod req.route = route - req.queryParams = urlParams + req.queryParams = queryParams req.httpBody = body let updateRequest = { [weak req, weak self] in diff --git a/Sources/Networking/NetworkingClient.swift b/Sources/Networking/NetworkingClient.swift index 378e718..2e20ae6 100644 --- a/Sources/Networking/NetworkingClient.swift +++ b/Sources/Networking/NetworkingClient.swift @@ -1,6 +1,11 @@ import Foundation import Combine +public enum ParameterEncoding { + case urlEncode + case json +} + public class NetworkingClient { /** Instead of using the same keypath for every call eg: "collection", @@ -15,6 +20,9 @@ public class NetworkingClient { public var sessionConfiguration = URLSessionConfiguration.default public var requestRetrier: NetworkRequestRetrier? public var jsonDecoderFactory: (() -> JSONDecoder)? + + @available(*, deprecated, message: "Parameter encoding is now done explicitly via `body` param for POST PUT & PATCH requests.") + public var parameterEncoding: ParameterEncoding = .urlEncode /** Prints network calls to the console. diff --git a/Sources/Networking/NetworkingService.swift b/Sources/Networking/NetworkingService.swift index 78855ec..85fafbe 100644 --- a/Sources/Networking/NetworkingService.swift +++ b/Sources/Networking/NetworkingService.swift @@ -6,7 +6,6 @@ // import Foundation -import Combine public protocol NetworkingService { var network: NetworkingClient { get }