@@ -47,48 +47,48 @@ public protocol Server: Actor {
4747 ///
4848 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
4949 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the specified return type is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
50- func get< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> T
50+ func get< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> T
5151
5252 /// Sends a POST request and returns the specified value type from the given API.
5353 ///
5454 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
5555 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the specified return type is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
56- func post< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> T
56+ func post< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> T
5757
5858 /// Sends a POST request and returns the specified value type from the given API.
5959 ///
6060 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
6161 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the return type of `Bool` is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
62- func post( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> Bool
62+ func post( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> Bool
6363
6464 /// Sends a PUT request and returns the specified value type from the given API.
6565 ///
6666 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
6767 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the specified return type is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
68- func put< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> T
68+ func put< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> T
6969
7070 /// Sends a PUT request and returns the specified value type from the given API.
7171 ///
7272 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
7373 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the return type of `Bool` is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
74- func put( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> Bool
74+ func put( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> Bool
7575
7676 /// Sends a DELETE request and returns the specified value type from the given API.
7777 ///
7878 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
7979 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the specified return type is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
80- func delete< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> T
80+ func delete< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> T
8181
8282 /// Sends a DELETE request and returns the specified value type from the given API.
8383 ///
8484 /// - Note: `additionalHeaders` will override a key-value in `additionalHTTPHeaders`.
8585 /// - Note: The server automatically checks against these values to check whether they're supported by the API or not. For instance, if the return type of `Bool` is not supported, a `ServerAPIError.badRequest` error is thrown. If the specified API doesn't support this function, a `ServerAPIError.badRequest` error is thrown.
86- func delete( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> Bool
86+ func delete( using api: any ServerAPI , to endpoint: String ? , additionalHeaders: [ String : String ] ? , queries: [ URLQueryItem ] ? , httpBodyOverride httpBody: Data ? , timeoutInterval: TimeInterval ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> Bool
8787
8888 /// Send the given request to the server and return the decoded object.
8989 /// - Returns: The given decoded type or an `APIError`.
9090 /// - Throws: A `ServerAPIError` if unable to decode or an error encountered during the request.
91- func sendRequest< T: Decodable > ( _ request: URLRequest , requestUID: UUID , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ) async throws -> T
91+ func sendRequest< T: Decodable > ( _ request: URLRequest , requestUID: UUID , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? ) async throws -> T
9292
9393 /// Send the given request to the server.
9494 /// - Returns: A boolean indicating the success of the request.
@@ -116,7 +116,7 @@ public extension Server {
116116 var blockAllAPIsNotSupported : Bool { true }
117117
118118 // GETs
119- func get< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> T {
119+ func get< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> T {
120120 if self . blockAllAPIsNotSupported {
121121 try self . _checkAPIsContainAPI ( api)
122122
@@ -150,7 +150,7 @@ public extension Server {
150150 }
151151
152152 // POSTs
153- func post< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> T {
153+ func post< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> T {
154154 if self . blockAllAPIsNotSupported {
155155 try self . _checkAPIsContainAPI ( api)
156156
@@ -182,7 +182,7 @@ public extension Server {
182182 return decoded
183183 }
184184
185- func post( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> Bool {
185+ func post( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> Bool {
186186 if self . blockAllAPIsNotSupported {
187187 try self . _checkAPIsContainAPI ( api)
188188 }
@@ -213,7 +213,7 @@ public extension Server {
213213 }
214214
215215 // PUTs
216- func put< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> T {
216+ func put< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> T {
217217 if self . blockAllAPIsNotSupported {
218218 try self . _checkAPIsContainAPI ( api)
219219
@@ -246,7 +246,7 @@ public extension Server {
246246 return decoded
247247 }
248248
249- func put( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> Bool {
249+ func put( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> Bool {
250250 if self . blockAllAPIsNotSupported {
251251 try self . _checkAPIsContainAPI ( api)
252252 }
@@ -278,7 +278,7 @@ public extension Server {
278278 }
279279
280280 // DELETEs
281- func delete< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> T {
281+ func delete< T: Decodable > ( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> T {
282282 if self . blockAllAPIsNotSupported {
283283 try self . _checkAPIsContainAPI ( api)
284284
@@ -310,7 +310,7 @@ public extension Server {
310310 return decoded
311311 }
312312
313- func delete( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> Bool {
313+ func delete( using api: any ServerAPI , to endpoint: String ? = nil , additionalHeaders: [ String : String ] ? = nil , queries: [ URLQueryItem ] ? = nil , httpBodyOverride httpBody: Data ? = nil , timeoutInterval: TimeInterval ? = nil , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> Bool {
314314 if self . blockAllAPIsNotSupported {
315315 try self . _checkAPIsContainAPI ( api)
316316 }
@@ -340,7 +340,7 @@ public extension Server {
340340 return wasSuccessful
341341 }
342342
343- func sendRequest< T: Decodable > ( _ request: URLRequest , requestUID: UUID , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) async throws -> T {
343+ func sendRequest< T: Decodable > ( _ request: URLRequest , requestUID: UUID , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) async throws -> T {
344344 if self . logActivity == . all {
345345 self . logger. info ( " \( Date ( ) ) - ( \( requestUID) ) Request to \( String ( describing: request. url? . description) ) [Start] " )
346346 }
@@ -423,15 +423,19 @@ public extension Server {
423423}
424424
425425extension Server {
426- private func _decode< DecodableType: Decodable > ( data: Data ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy = . iso8601 , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy = . useDefaultKeys ) throws -> DecodableType {
426+ private func _decode< DecodableType: Decodable > ( data: Data ? , dateDecodingStrategy: JSONDecoder . DateDecodingStrategy ? = nil , keyDecodingStrategy: JSONDecoder . KeyDecodingStrategy ? = nil ) throws -> DecodableType {
427427 guard let data else {
428428 throw ServerAPIError . incorrectReponseData ( description: NSLocalizedString ( " Unexpected empty response returned. " , comment: " " ) )
429429 }
430430
431431 do {
432432 let decoder = JSONDecoder ( )
433- decoder. dateDecodingStrategy = dateDecodingStrategy
434- decoder. keyDecodingStrategy = keyDecodingStrategy
433+ if let dateDecodingStrategy {
434+ decoder. dateDecodingStrategy = dateDecodingStrategy
435+ }
436+ if let keyDecodingStrategy {
437+ decoder. keyDecodingStrategy = keyDecodingStrategy
438+ }
435439
436440 return try decoder. decode ( DecodableType . self, from: data)
437441 } catch let decodingError as DecodingError {
0 commit comments