77
88import Foundation
99
10- enum HTTPMethod : String , Equatable {
10+ enum HTTPMethod : String {
1111 case delete = " DELETE "
1212 case get = " GET "
1313 case post = " POST "
@@ -16,14 +16,13 @@ enum HTTPMethod: String, Equatable {
1616}
1717
1818protocol NetworkRequestable {
19- var url : URL { get throws }
2019 var host : String { get }
2120 var path : String { get }
2221 var port : Int ? { get }
2322 var isSecure : Bool { get }
2423 var shouldRunLocal : Bool { get }
2524 var httpMethod : HTTPMethod { get }
26- var queryParameter : [ String : AnyHashable ] ? { get }
25+ var queryParameters : [ String : AnyHashable ] ? { get }
2726}
2827
2928/// Protocol Extension for constructing `URL`
@@ -32,13 +31,17 @@ extension NetworkRequestable {
3231 /// Computed property to construct the URL based on the configuration.
3332 var url : URL {
3433 get throws {
35- var urlComponent = URLComponents ( )
36- urlComponent. path = path
37- urlComponent. port = shouldRunLocal ? port : nil
38- urlComponent. host = shouldRunLocal ? " localhost " : host
39- urlComponent. scheme = isSecure && !shouldRunLocal ? " https " : " http "
40- guard let url = urlComponent. url else { throw URLError ( . badURL) }
41- return url. addQueryParamIfNeeded ( queryParameter)
34+ var urlComponents = URLComponents ( )
35+ urlComponents. path = path
36+ urlComponents. port = shouldRunLocal ? port : nil
37+ urlComponents. host = shouldRunLocal ? " localhost " : host
38+ urlComponents. scheme = isSecure && !shouldRunLocal ? " https " : " http "
39+
40+ guard let url = urlComponents. url else {
41+ throw URLError ( . badURL)
42+ }
43+
44+ return url. addQueryParametersIfNeeded ( queryParameters)
4245 }
4346 }
4447
@@ -61,13 +64,12 @@ extension NetworkRequestable {
6164}
6265
6366fileprivate extension URL {
64-
65- func addQueryParamIfNeeded( _ queryParams: [ String : Any ] ? ) -> URL {
66- guard let queryParams = queryParams,
67+ func addQueryParametersIfNeeded( _ queryParameters: [ String : AnyHashable ] ? ) -> URL {
68+ guard let queryParameters = queryParameters,
6769 var urlComponents = URLComponents ( string: absoluteString) else {
6870 return absoluteURL
6971 }
70- let queryItems = queryParams . map { URLQueryItem ( name: $0, value: " \( $1) " ) }
72+ let queryItems = queryParameters . map { URLQueryItem ( name: $0, value: " \( $1) " ) }
7173 urlComponents. queryItems = queryItems
7274 return urlComponents. url!
7375 }
0 commit comments