Skip to content

Commit

Permalink
Removes unnecessary HTTPBody .jsonParams
Browse files Browse the repository at this point in the history
  • Loading branch information
s4cha committed Nov 15, 2023
1 parent 6b7cb72 commit 47e39cd
Show file tree
Hide file tree
Showing 7 changed files with 62 additions and 60 deletions.
40 changes: 20 additions & 20 deletions Sources/Networking/Async Api/Get.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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<T: Decodable>(_ 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<T: Decodable>(_ 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<T: Decodable>(_ 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<T: Decodable>(_ 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)
}
}
48 changes: 24 additions & 24 deletions Sources/Networking/Combine Api/Get+Combine.swift
Original file line number Diff line number Diff line change
Expand Up @@ -10,78 +10,78 @@ import Combine

public extension NetworkingClient {

func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Void, Error> {
get(route, urlParams: urlParams)
func get(_ route: String, params: Params? = nil) -> AnyPublisher<Void, Error> {
get(route, params: params)
.map { (data: Data) -> Void in () }
.eraseToAnyPublisher()
}

func get<T: Decodable>(_ route: String,
urlParams: Params? = nil,
params: Params? = nil,
keypath: String? = nil) -> AnyPublisher<T, Error> {
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()
}

// Array version
func get<T: Decodable>(_ route: String,
urlParams: Params? = nil,
params: Params? = nil,
keypath: String? = nil) -> AnyPublisher<T, Error> 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<Any, Error> {
get(route, urlParams: urlParams).toJSON()
func get(_ route: String, params: Params? = nil) -> AnyPublisher<Any, Error> {
get(route, params: params).toJSON()
}

func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Data, Error> {
request(.get, route, urlParams: urlParams).publisher()
func get(_ route: String, params: Params? = nil) -> AnyPublisher<Data, Error> {
request(.get, route, queryParams: params).publisher()
}
}

public extension NetworkingService {

func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Void, Error> {
network.get(route, urlParams: urlParams)
func get(_ route: String, params: Params? = nil) -> AnyPublisher<Void, Error> {
network.get(route, params: params)
}

func get<T: Decodable>(_ 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<T: Decodable>(_ route: String,
urlParams: Params? = nil,
params: Params? = nil,
keypath: String? = nil) -> AnyPublisher<T, Error> where T: Collection {
network.get(route, urlParams: urlParams, keypath: keypath)
network.get(route, params: params, keypath: keypath)
}

func get<T: NetworkingJSONDecodable>(_ 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<T: NetworkingJSONDecodable>(_ 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<Any, Error> {
network.get(route, urlParams: urlParams)
func get(_ route: String, params: Params? = nil) -> AnyPublisher<Any, Error> {
network.get(route, params: params)
}

func get(_ route: String, urlParams: Params? = nil) -> AnyPublisher<Data, Error> {
network.get(route, urlParams: urlParams)
func get(_ route: String, params: Params? = nil) -> AnyPublisher<Data, Error> {
network.get(route, params: params)
}


Expand Down
9 changes: 2 additions & 7 deletions Sources/Networking/HTTPBody.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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])
}


Expand All @@ -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)"
}
Expand All @@ -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)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,20 +17,20 @@ public protocol NetworkingJSONDecodable {
public extension NetworkingClient {

func get<T: NetworkingJSONDecodable>(_ route: String,
urlParams: Params? = nil,
params: Params? = nil,
keypath: String? = nil) -> AnyPublisher<T, Error> {
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()
}

// Array version
func get<T: NetworkingJSONDecodable>(_ 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()
Expand Down
8 changes: 4 additions & 4 deletions Sources/Networking/NetworkingClient+Requests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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
Expand Down
8 changes: 8 additions & 0 deletions Sources/Networking/NetworkingClient.swift
Original file line number Diff line number Diff line change
@@ -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",
Expand All @@ -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.
Expand Down
1 change: 0 additions & 1 deletion Sources/Networking/NetworkingService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
//

import Foundation
import Combine

public protocol NetworkingService {
var network: NetworkingClient { get }
Expand Down

0 comments on commit 47e39cd

Please sign in to comment.