forked from loafle/openapi-generator-original
[swift5] add URLResponse to ErrorResponse (#8267)
* [swift5] add URLResponse to ErrorResponse * [swift] improve unit tests * [swift] improve unit tests
This commit is contained in:
parent
fd02bc3d84
commit
775b64f6c7
@ -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 {
|
||||
|
@ -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)))
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
21
pom.xml
@ -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>
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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)))
|
||||
}
|
||||
|
||||
})
|
||||
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
internal struct Tag: Codable {
|
||||
internal struct Tag: Codable, Hashable {
|
||||
|
||||
internal var id: Int64?
|
||||
internal var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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? {
|
||||
|
@ -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? {
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -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?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1 +1 @@
|
||||
5.0.0-SNAPSHOT
|
||||
5.0.1-SNAPSHOT
|
@ -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 {
|
||||
|
@ -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"
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
public struct Tag: Codable {
|
||||
public struct Tag: Codable, Hashable {
|
||||
|
||||
public var id: Int64?
|
||||
public var name: String?
|
||||
|
@ -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)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user