[swift5] add URLResponse to ErrorResponse (#8267)

* [swift5] add URLResponse to ErrorResponse

* [swift] improve unit tests

* [swift] improve unit tests
This commit is contained in:
Bruno Coelho 2020-12-29 15:31:12 +00:00 committed by GitHub
parent fd02bc3d84
commit 775b64f6c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
67 changed files with 218 additions and 205 deletions

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum ErrorResponse : Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum DownloadException : Error {

View File

@ -103,7 +103,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
case .failure(let encodingError):
apiResponseQueue.async{
completion(.failure(ErrorResponse.error(415, nil, encodingError)))
completion(.failure(ErrorResponse.error(415, nil, nil, encodingError)))
}
}
})
@ -137,7 +137,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case let .success(value):
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, error)))
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error)))
}
})
@ -179,9 +179,9 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
completion(.success(Response(response: dataResponse.response!, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, dataResponse.data, requestParserError)))
completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, dataResponse.data, error)))
completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, error)))
}
return
})
@ -193,7 +193,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case .success:
completion(.success(Response(response: voidResponse.response!, body: nil)))
case let .failure(error):
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, error)))
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error)))
}
})
@ -205,7 +205,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case .success:
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, error)))
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error)))
}
})
@ -295,7 +295,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case let .success(value):
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, error)))
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error)))
}
})
@ -307,7 +307,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case .success:
completion(.success(Response(response: voidResponse.response!, body: nil)))
case let .failure(error):
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, error)))
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error)))
}
})
@ -319,7 +319,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case .success:
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, error)))
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error)))
}
})
@ -328,17 +328,17 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
cleanupRequest()
guard dataResponse.result.isSuccess else {
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!)))
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, dataResponse.result.error!)))
return
}
guard let data = dataResponse.data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(-1, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(-1, nil, dataResponse.response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
guard let httpResponse = dataResponse.response else {
completion(.failure(ErrorResponse.error(-2, nil, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, nil, dataResponse.response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
@ -348,7 +348,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, httpResponse, error)))
}
})

View File

@ -167,7 +167,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1086,6 +1086,7 @@ definitions:
xml:
name: Order
Category:
x-swift-hashable: true
type: object
required:
- name
@ -1124,6 +1125,7 @@ definitions:
xml:
name: User
Tag:
x-swift-hashable: true
type: object
properties:
id:

21
pom.xml
View File

@ -1429,9 +1429,26 @@
</property>
</activation>
<modules>
<!-- swift 5 samples -->
<module>samples/client/petstore/swift5/alamofireLibrary</module>
<module>samples/client/petstore/swift5/combineLibrary</module>
<module>samples/client/petstore/swift5/default</module>
<module>samples/client/petstore/swift5/deprecated</module>
<module>samples/client/petstore/swift5/nonPublicApi</module>
<module>samples/client/petstore/swift5/objcCompatible</module>
<module>samples/client/petstore/swift5/promisekitLibrary</module>
<module>samples/client/petstore/swift5/readonlyProperties</module>
<module>samples/client/petstore/swift5/resultLibrary</module>
<module>samples/client/petstore/swift5/rxswiftLibrary</module>
<module>samples/client/petstore/swift5/urlsessionLibrary</module>
<!-- swift 5 tests -->
<module>samples/client/petstore/swift5/alamofireLibrary/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/combineLibrary/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/default/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/promisekit/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/rxswift/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/rxswiftLibrary/SwaggerClientTests</module>
<module>samples/client/petstore/swift5/urlsessionLibrary/SwaggerClientTests</module>
<!-- swift 4 tests -->
<module>samples/client/petstore/swift4/default/SwaggerClientTests</module>
<module>samples/client/petstore/swift4/promisekit/SwaggerClientTests</module>
<module>samples/client/petstore/swift4/rxswift/SwaggerClientTests</module>

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -102,7 +102,7 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
case .failure(let encodingError):
apiResponseQueue.async {
completion(.failure(ErrorResponse.error(415, nil, encodingError)))
completion(.failure(ErrorResponse.error(415, nil, nil, encodingError)))
}
}
})
@ -136,7 +136,7 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
case let .success(value):
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, error)))
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error)))
}
})
@ -178,9 +178,9 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: dataResponse.response!, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, dataResponse.data, requestParserError)))
completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, dataResponse.data, error)))
completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, error)))
}
return
})
@ -192,7 +192,7 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
case .success:
completion(.success(Response(response: voidResponse.response!, body: nil)))
case let .failure(error):
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, error)))
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error)))
}
})
@ -204,7 +204,7 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
case .success:
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, error)))
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error)))
}
})
@ -294,7 +294,7 @@ open class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuild
case let .success(value):
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, error)))
completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error)))
}
})
@ -306,7 +306,7 @@ open class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuild
case .success:
completion(.success(Response(response: voidResponse.response!, body: nil)))
case let .failure(error):
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, error)))
completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error)))
}
})
@ -318,7 +318,7 @@ open class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuild
case .success:
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
case let .failure(error):
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, error)))
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error)))
}
})
@ -327,17 +327,17 @@ open class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuild
cleanupRequest()
guard dataResponse.result.isSuccess else {
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.result.error!)))
completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, dataResponse.result.error!)))
return
}
guard let data = dataResponse.data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(-1, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(-1, nil, dataResponse.response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
guard let httpResponse = dataResponse.response else {
completion(.failure(ErrorResponse.error(-2, nil, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, nil, dataResponse.response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
@ -347,7 +347,7 @@ open class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuild
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, httpResponse, error)))
}
})

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -15,8 +15,6 @@ PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift
PetstoreClient/Classes/OpenAPIs/Models.swift
PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift
PetstoreClient/Classes/OpenAPIs/Models/Category.swift
PetstoreClient/Classes/OpenAPIs/Models/InlineObject.swift
PetstoreClient/Classes/OpenAPIs/Models/InlineObject1.swift
PetstoreClient/Classes/OpenAPIs/Models/Order.swift
PetstoreClient/Classes/OpenAPIs/Models/Pet.swift
PetstoreClient/Classes/OpenAPIs/Models/Tag.swift
@ -27,8 +25,6 @@ PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift
README.md
docs/ApiResponse.md
docs/Category.md
docs/InlineObject.md
docs/InlineObject1.md
docs/Order.md
docs/Pet.md
docs/PetAPI.md

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -51,8 +51,6 @@ Class | Method | HTTP request | Description
- [ApiResponse](docs/ApiResponse.md)
- [Category](docs/Category.md)
- [InlineObject](docs/InlineObject.md)
- [InlineObject1](docs/InlineObject1.md)
- [Order](docs/Order.md)
- [Pet](docs/Pet.md)
- [Tag](docs/Tag.md)

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
internal enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
internal enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
internal struct Category: Codable {
internal struct Category: Codable, Hashable {
internal var id: Int64?
internal var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
internal struct Tag: Codable {
internal struct Tag: Codable, Hashable {
internal var id: Int64?
internal var name: String?

View File

@ -167,7 +167,7 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ internal class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionReques
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ internal class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionReques
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ internal class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionReques
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
@objc public class Category: NSObject, Codable {
@objc public class Category: NSObject, Codable, Hashable {
public var _id: Int64?
public var _idNum: NSNumber? {

View File

@ -7,7 +7,7 @@
import Foundation
@objc public class Tag: NSObject, Codable {
@objc public class Tag: NSObject, Codable, Hashable {
public var _id: Int64?
public var _idNum: NSNumber? {

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public private(set) var id: Int64?
public private(set) var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public private(set) var id: Int64?
public private(set) var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}

View File

@ -1 +1 @@
5.0.0-SNAPSHOT
5.0.1-SNAPSHOT

View File

@ -11,7 +11,7 @@ protocol JSONEncodable {
}
public enum ErrorResponse: Error {
case error(Int, Data?, Error)
case error(Int, Data?, URLResponse?, Error)
}
public enum DownloadException: Error {

View File

@ -7,7 +7,7 @@
import Foundation
public struct Category: Codable {
public struct Category: Codable, Hashable {
public var id: Int64?
public var name: String = "default-name"

View File

@ -7,7 +7,7 @@
import Foundation
public struct Tag: Codable {
public struct Tag: Codable, Hashable {
public var id: Int64?
public var name: String?

View File

@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
} catch {
apiResponseQueue.async {
cleanupRequest()
completion(.failure(ErrorResponse.error(415, nil, error)))
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
}
@ -176,17 +176,17 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
completion(.success(Response(response: httpResponse, body: filePath as? T)))
} catch let requestParserError as DownloadException {
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
} catch let error {
completion(.failure(ErrorResponse.error(400, data, error)))
completion(.failure(ErrorResponse.error(400, data, response, error)))
}
case is Void.Type:
@ -311,17 +311,17 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
override fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
if let error = error {
completion(.failure(ErrorResponse.error(-1, data, error)))
completion(.failure(ErrorResponse.error(-1, data, response, error)))
return
}
guard let httpResponse = response as? HTTPURLResponse else {
completion(.failure(ErrorResponse.error(-2, data, DecodableRequestBuilderError.nilHTTPResponse)))
completion(.failure(ErrorResponse.error(-2, data, response, DecodableRequestBuilderError.nilHTTPResponse)))
return
}
guard httpResponse.isStatusCodeSuccessful else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
return
}
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
default:
guard let data = data, !data.isEmpty else {
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, DecodableRequestBuilderError.emptyDataResponse)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse)))
return
}
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
case let .success(decodableObj):
completion(.success(Response(response: httpResponse, body: decodableObj)))
case let .failure(error):
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
}
}
}