| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -9,59 +9,59 @@ import Foundation | |||
| 9 | 9 | ||
| 10 | 10 | public extension NetworkingClient { | |
| 11 | 11 | ||
| 12 | - func get(_ route: String, urlParams: Params? = nil) async throws { | ||
| 13 | - let _:Data = try await get(route, urlParams: urlParams) | ||
| 12 | + func get(_ route: String, params: Params? = nil) async throws { | ||
| 13 | + let _:Data = try await get(route, params: params) | ||
| 14 | 14 | } | |
| 15 | 15 | ||
| 16 | 16 | func get<T: Decodable>(_ route: String, | |
| 17 | - urlParams: Params? = nil, | ||
| 17 | + params: Params? = nil, | ||
| 18 | 18 | keypath: String? = nil) async throws -> T { | |
| 19 | - let json: Any = try await get(route, urlParams: urlParams) | ||
| 19 | + let json: Any = try await get(route, params: params) | ||
| 20 | 20 | return try self.toModel(json, keypath: keypath) | |
| 21 | 21 | } | |
| 22 | 22 | ||
| 23 | 23 | func get<T: Decodable>(_ route: String, | |
| 24 | - urlParams: Params? = nil, | ||
| 24 | + params: Params? = nil, | ||
| 25 | 25 | keypath: String? = nil) async throws -> T where T: Collection { | |
| 26 | 26 | let keypath = keypath ?? defaultCollectionParsingKeyPath | |
| 27 | - let json: Any = try await get(route, urlParams: urlParams) | ||
| 27 | + let json: Any = try await get(route, params: params) | ||
| 28 | 28 | return try self.toModel(json, keypath: keypath) | |
| 29 | 29 | } | |
| 30 | 30 | ||
| 31 | - func get(_ route: String, urlParams: Params? = nil) async throws -> Any { | ||
| 32 | - let data: Data = try await get(route, urlParams: urlParams) | ||
| 31 | + func get(_ route: String, params: Params? = nil) async throws -> Any { | ||
| 32 | + let data: Data = try await get(route, params: params) | ||
| 33 | 33 | return try JSONSerialization.jsonObject(with: data, options: []) | |
| 34 | 34 | } | |
| 35 | 35 | ||
| 36 | - func get(_ route: String, urlParams: Params? = nil) async throws -> Data { | ||
| 37 | - try await request(.get, route, urlParams: urlParams).execute() | ||
| 36 | + func get(_ route: String, params: Params? = nil) async throws -> Data { | ||
| 37 | + try await request(.get, route, queryParams: params).execute() | ||
| 38 | 38 | } | |
| 39 | 39 | } | |
| 40 | 40 | ||
| 41 | 41 | public extension NetworkingService { | |
| 42 | 42 | ||
| 43 | - func get(_ route: String, urlParams: Params? = nil) async throws { | ||
| 44 | - return try await network.get(route, urlParams: urlParams) | ||
| 43 | + func get(_ route: String, params: Params? = nil) async throws { | ||
| 44 | + return try await network.get(route, params: params) | ||
| 45 | 45 | } | |
| 46 | 46 | ||
| 47 | 47 | func get<T: Decodable>(_ route: String, | |
| 48 | - urlParams: Params? = nil, | ||
| 48 | + params: Params? = nil, | ||
| 49 | 49 | keypath: String? = nil) async throws -> T { | |
| 50 | - try await network.get(route, urlParams: urlParams, keypath: keypath) | ||
| 50 | + try await network.get(route, params: params, keypath: keypath) | ||
| 51 | 51 | } | |
| 52 | 52 | ||
| 53 | 53 | func get<T: Decodable>(_ route: String, | |
| 54 | - urlParams: Params? = nil, | ||
| 54 | + params: Params? = nil, | ||
| 55 | 55 | keypath: String? = nil) async throws -> T where T: Collection { | |
| 56 | - try await network.get(route, urlParams: urlParams, keypath: keypath) | ||
| 56 | + try await network.get(route, params: params, keypath: keypath) | ||
| 57 | 57 | } | |
| 58 | 58 | ||
| 59 | 59 | ||
| 60 | - func get(_ route: String, urlParams: Params? = nil) async throws -> Any { | ||
| 61 | - try await network.get(route, urlParams: urlParams) | ||
| 60 | + func get(_ route: String, params: Params? = nil) async throws -> Any { | ||
| 61 | + try await network.get(route, params: params) | ||
| 62 | 62 | } | |
| 63 | 63 | ||
| 64 | - func get(_ route: String, urlParams: Params? = nil) async throws -> Data { | ||
| 65 | - try await network.get(route, urlParams: urlParams) | ||
| 64 | + func get(_ route: String, params: Params? = nil) async throws -> Data { | ||
| 65 | + try await network.get(route, params: params) | ||
| 66 | 66 | } | |
| 67 | 67 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -10,78 +10,78 @@ import Combine | |||
| 10 | 10 | ||
| 11 | 11 | public extension NetworkingClient { | |
| 12 | 12 | ||
| 13 | - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Void, Error> { | ||
| 14 | - get(route, urlParams: urlParams) | ||
| 13 | + func get(_ route: String, params: Params? = nil) -> AnyPublisher<Void, Error> { | ||
| 14 | + get(route, params: params) | ||
| 15 | 15 | .map { (data: Data) -> Void in () } | |
| 16 | 16 | .eraseToAnyPublisher() | |
| 17 | 17 | } | |
| 18 | 18 | ||
| 19 | 19 | func get<T: Decodable>(_ route: String, | |
| 20 | - urlParams: Params? = nil, | ||
| 20 | + params: Params? = nil, | ||
| 21 | 21 | keypath: String? = nil) -> AnyPublisher<T, Error> { | |
| 22 | - return get(route, urlParams: urlParams) | ||
| 22 | + return get(route, params: params) | ||
| 23 | 23 | .tryMap { json -> T in try self.toModel(json, keypath: keypath) } | |
| 24 | 24 | .receive(on: DispatchQueue.main) | |
| 25 | 25 | .eraseToAnyPublisher() | |
| 26 | 26 | } | |
| 27 | 27 | ||
| 28 | 28 | // Array version | |
| 29 | 29 | func get<T: Decodable>(_ route: String, | |
| 30 | - urlParams: Params? = nil, | ||
| 30 | + params: Params? = nil, | ||
| 31 | 31 | keypath: String? = nil) -> AnyPublisher<T, Error> where T: Collection { | |
| 32 | 32 | let keypath = keypath ?? defaultCollectionParsingKeyPath | |
| 33 | - return get(route, urlParams: urlParams) | ||
| 33 | + return get(route, params: params) | ||
| 34 | 34 | .tryMap { json -> T in try self.toModel(json, keypath: keypath) } | |
| 35 | 35 | .receive(on: DispatchQueue.main) | |
| 36 | 36 | .eraseToAnyPublisher() | |
| 37 | 37 | } | |
| 38 | 38 | ||
| 39 | - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Any, Error> { | ||
| 40 | - get(route, urlParams: urlParams).toJSON() | ||
| 39 | + func get(_ route: String, params: Params? = nil) -> AnyPublisher<Any, Error> { | ||
| 40 | + get(route, params: params).toJSON() | ||
| 41 | 41 | } | |
| 42 | 42 | ||
| 43 | - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Data, Error> { | ||
| 44 | - request(.get, route, urlParams: urlParams).publisher() | ||
| 43 | + func get(_ route: String, params: Params? = nil) -> AnyPublisher<Data, Error> { | ||
| 44 | + request(.get, route, queryParams: params).publisher() | ||
| 45 | 45 | } | |
| 46 | 46 | } | |
| 47 | 47 | ||
| 48 | 48 | public extension NetworkingService { | |
| 49 | 49 | ||
| 50 | - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Void, Error> { | ||
| 51 | - network.get(route, urlParams: urlParams) | ||
| 50 | + func get(_ route: String, params: Params? = nil) -> AnyPublisher<Void, Error> { | ||
| 51 | + network.get(route, params: params) | ||
| 52 | 52 | } | |
| 53 | 53 | ||
| 54 | 54 | func get<T: Decodable>(_ route: String, | |
| 55 | - urlParams: Params? = nil, | ||
| 55 | + params: Params? = nil, | ||
| 56 | 56 | keypath: String? = nil) -> AnyPublisher<T, Error> { | |
| 57 | - network.get(route, urlParams: urlParams, keypath: keypath) | ||
| 57 | + network.get(route, params: params, keypath: keypath) | ||
| 58 | 58 | } | |
| 59 | 59 | ||
| 60 | 60 | func get<T: Decodable>(_ route: String, | |
| 61 | - urlParams: Params? = nil, | ||
| 61 | + params: Params? = nil, | ||
| 62 | 62 | keypath: String? = nil) -> AnyPublisher<T, Error> where T: Collection { | |
| 63 | - network.get(route, urlParams: urlParams, keypath: keypath) | ||
| 63 | + network.get(route, params: params, keypath: keypath) | ||
| 64 | 64 | } | |
| 65 | 65 | ||
| 66 | 66 | func get<T: NetworkingJSONDecodable>(_ route: String, | |
| 67 | - urlParams: Params? = nil, | ||
| 67 | + params: Params? = nil, | ||
| 68 | 68 | keypath: String? = nil) -> AnyPublisher<T, Error> { | |
| 69 | - network.get(route, urlParams: urlParams, keypath: keypath) | ||
| 69 | + network.get(route, params: params, keypath: keypath) | ||
| 70 | 70 | } | |
| 71 | 71 | ||
| 72 | 72 | func get<T: NetworkingJSONDecodable>(_ route: String, | |
| 73 | - urlParams: Params? = nil, | ||
| 73 | + params: Params? = nil, | ||
| 74 | 74 | keypath: String? = nil) -> AnyPublisher<[T], Error> { | |
| 75 | - network.get(route, urlParams: urlParams, keypath: keypath) | ||
| 75 | + network.get(route, params: params, keypath: keypath) | ||
| 76 | 76 | } | |
| 77 | 77 | ||
| 78 | 78 | ||
| 79 | - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Any, Error> { | ||
| 80 | - network.get(route, urlParams: urlParams) | ||
| 79 | + func get(_ route: String, params: Params? = nil) -> AnyPublisher<Any, Error> { | ||
| 80 | + network.get(route, params: params) | ||
| 81 | 81 | } | |
| 82 | 82 | ||
| 83 | - func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Data, Error> { | ||
| 84 | - network.get(route, urlParams: urlParams) | ||
| 83 | + func get(_ route: String, params: Params? = nil) -> AnyPublisher<Data, Error> { | ||
| 84 | + network.get(route, params: params) | ||
| 85 | 85 | } | |
| 86 | 86 | ||
| 87 | 87 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -9,9 +9,8 @@ import Foundation | |||
| 9 | 9 | ||
| 10 | 10 | public enum HTTPBody { | |
| 11 | 11 | case urlEncoded(params: Params) | |
| 12 | - case json(Encodable) | ||
| 13 | - case jsonParams(params: Params) | ||
| 14 | - case multipart(params: Params?, parts:[MultipartData]) | ||
| 12 | + case json(_ encodable: Encodable) | ||
| 13 | + case multipart(params: Params? = nil, parts:[MultipartData]) | ||
| 15 | 14 | } | |
| 16 | 15 | ||
| 17 | 16 | ||
@@ -22,8 +21,6 @@ extension HTTPBody { | |||
| 22 | 21 | return "application/x-www-form-urlencoded" | |
| 23 | 22 | case .json(_): | |
| 24 | 23 | return "application/json" | |
| 25 | - case .jsonParams(_): | ||
| 26 | - return "application/json" | ||
| 27 | 24 | case .multipart(_, _): | |
| 28 | 25 | return "multipart/form-data; boundary=\(boundary)" | |
| 29 | 26 | } | |
@@ -45,8 +42,6 @@ extension HTTPBody { | |||
| 45 | 42 | print(error) | |
| 46 | 43 | return nil | |
| 47 | 44 | } | |
| 48 | - case .jsonParams(params: let params): | ||
| 49 | - return try? JSONSerialization.data(withJSONObject: params) | ||
| 50 | 45 | case .multipart(params: let params, parts: let parts): | |
| 51 | 46 | return buildMultipartHttpBody(params: params ?? [:], multiparts: parts, boundary: boundary) | |
| 52 | 47 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -17,20 +17,20 @@ public protocol NetworkingJSONDecodable { | |||
| 17 | 17 | public extension NetworkingClient { | |
| 18 | 18 | ||
| 19 | 19 | func get<T: NetworkingJSONDecodable>(_ route: String, | |
| 20 | - urlParams: Params? = nil, | ||
| 20 | + params: Params? = nil, | ||
| 21 | 21 | keypath: String? = nil) -> AnyPublisher<T, Error> { | |
| 22 | - return get(route, urlParams: urlParams) | ||
| 22 | + return get(route, params: params) | ||
| 23 | 23 | .tryMap { json -> T in try self.toModel(json, keypath: keypath) } | |
| 24 | 24 | .receive(on: DispatchQueue.main) | |
| 25 | 25 | .eraseToAnyPublisher() | |
| 26 | 26 | } | |
| 27 | 27 | ||
| 28 | 28 | // Array version | |
| 29 | 29 | func get<T: NetworkingJSONDecodable>(_ route: String, | |
| 30 | - urlParams: Params? = nil, | ||
| 30 | + params: Params? = nil, | ||
| 31 | 31 | keypath: String? = nil) -> AnyPublisher<[T], Error> { | |
| 32 | 32 | let keypath = keypath ?? defaultCollectionParsingKeyPath | |
| 33 | - return get(route, urlParams: urlParams) | ||
| 33 | + return get(route, params: params) | ||
| 34 | 34 | .tryMap { json -> [T] in try self.toModels(json, keypath: keypath) } | |
| 35 | 35 | .receive(on: DispatchQueue.main) | |
| 36 | 36 | .eraseToAnyPublisher() | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -10,8 +10,8 @@ import Combine | |||
| 10 | 10 | ||
| 11 | 11 | public extension NetworkingClient { | |
| 12 | 12 | ||
| 13 | - func getRequest(_ route: String, urlParams: Params? = nil) -> NetworkingRequest { | ||
| 14 | - request(.get, route, urlParams: urlParams) | ||
| 13 | + func getRequest(_ route: String, queryParams: Params? = nil) -> NetworkingRequest { | ||
| 14 | + request(.get, route, queryParams: queryParams) | ||
| 15 | 15 | } | |
| 16 | 16 | ||
| 17 | 17 | func postRequest(_ route: String, body: HTTPBody? = nil) -> NetworkingRequest { | |
@@ -32,13 +32,13 @@ public extension NetworkingClient { | |||
| 32 | 32 | ||
| 33 | 33 | internal func request(_ httpMethod: HTTPMethod, | |
| 34 | 34 | _ route: String, | |
| 35 | - urlParams: Params? = nil, | ||
| 35 | + queryParams: Params? = nil, | ||
| 36 | 36 | body: HTTPBody? = nil | |
| 37 | 37 | ) -> NetworkingRequest { | |
| 38 | 38 | let req = NetworkingRequest() | |
| 39 | 39 | req.httpMethod = httpMethod | |
| 40 | 40 | req.route = route | |
| 41 | - req.queryParams = urlParams | ||
| 41 | + req.queryParams = queryParams | ||
| 42 | 42 | req.httpBody = body | |
| 43 | 43 | ||
| 44 | 44 | let updateRequest = { [weak req, weak self] in | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,6 +1,11 @@ | |||
| 1 | 1 | import Foundation | |
| 2 | 2 | import Combine | |
| 3 | 3 | ||
| 4 | + public enum ParameterEncoding { | ||
| 5 | + case urlEncode | ||
| 6 | + case json | ||
| 7 | + } | ||
| 8 | + | ||
| 4 | 9 | public class NetworkingClient { | |
| 5 | 10 | /** | |
| 6 | 11 | Instead of using the same keypath for every call eg: "collection", | |
@@ -15,6 +20,9 @@ public class NetworkingClient { | |||
| 15 | 20 | public var sessionConfiguration = URLSessionConfiguration.default | |
| 16 | 21 | public var requestRetrier: NetworkRequestRetrier? | |
| 17 | 22 | public var jsonDecoderFactory: (() -> JSONDecoder)? | |
| 23 | + | ||
| 24 | + @available(*, deprecated, message: "Parameter encoding is now done explicitly via `body` param for POST PUT & PATCH requests.") | ||
| 25 | + public var parameterEncoding: ParameterEncoding = .urlEncode | ||
| 18 | 26 | ||
| 19 | 27 | /** | |
| 20 | 28 | Prints network calls to the console. | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -6,7 +6,6 @@ | |||
| 6 | 6 | // | |
| 7 | 7 | ||
| 8 | 8 | import Foundation | |
| 9 | - import Combine | ||
| 10 | 9 | ||
| 11 | 10 | public protocol NetworkingService { | |
| 12 | 11 | var network: NetworkingClient { get } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments