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 {
|
{{#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 {
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} enum DownloadException : Error {
|
||||||
|
@ -48,7 +48,7 @@ extension {{projectName}}API {
|
|||||||
{{#isDeprecated}}
|
{{#isDeprecated}}
|
||||||
@available(*, deprecated, message: "This operation is deprecated.")
|
@available(*, deprecated, message: "This operation is deprecated.")
|
||||||
{{/isDeprecated}}
|
{{/isDeprecated}}
|
||||||
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?,_ error: Error?) -> Void)) {
|
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}open{{/nonPublicApi}} class func {{operationId}}({{#allParams}}{{paramName}}: {{#isEnum}}{{#isContainer}}{{{dataType}}}{{/isContainer}}{{^isContainer}}{{{datatypeWithEnum}}}_{{operationId}}{{/isContainer}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{^required}}? = nil{{/required}}{{^-last}}, {{/-last}}{{/allParams}}{{#hasParams}}, {{/hasParams}}apiResponseQueue: DispatchQueue = {{projectName}}API.apiResponseQueue, completion: @escaping ((_ data: {{#returnType}}{{{returnType}}}{{/returnType}}{{^returnType}}Void{{/returnType}}?, _ error: Error?) -> Void)) {
|
||||||
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
|
{{operationId}}WithRequestBuilder({{#allParams}}{{paramName}}: {{paramName}}{{^-last}}, {{/-last}}{{/allParams}}).execute(apiResponseQueue) { result -> Void in
|
||||||
switch result {
|
switch result {
|
||||||
{{#returnType}}
|
{{#returnType}}
|
||||||
|
@ -103,7 +103,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
|
|||||||
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
|
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
|
||||||
case .failure(let encodingError):
|
case .failure(let encodingError):
|
||||||
apiResponseQueue.async{
|
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):
|
case let .success(value):
|
||||||
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
||||||
case let .failure(error):
|
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)))
|
completion(.success(Response(response: dataResponse.response!, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} 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 {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, dataResponse.data, error)))
|
completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, error)))
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
})
|
})
|
||||||
@ -193,7 +193,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
|
|||||||
case .success:
|
case .success:
|
||||||
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
||||||
case let .failure(error):
|
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:
|
case .success:
|
||||||
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
||||||
case let .failure(error):
|
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):
|
case let .success(value):
|
||||||
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
||||||
case let .failure(error):
|
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:
|
case .success:
|
||||||
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
||||||
case let .failure(error):
|
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:
|
case .success:
|
||||||
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
||||||
case let .failure(error):
|
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()
|
cleanupRequest()
|
||||||
|
|
||||||
guard dataResponse.result.isSuccess else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let data = dataResponse.data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = dataResponse.response else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -348,7 +348,7 @@ private var managerStore = SynchronizedDictionary<String, Alamofire.SessionManag
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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 {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ private var urlSessionStore = SynchronizedDictionary<String, URLSession>()
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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:
|
xml:
|
||||||
name: Order
|
name: Order
|
||||||
Category:
|
Category:
|
||||||
|
x-swift-hashable: true
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- name
|
- name
|
||||||
@ -1124,6 +1125,7 @@ definitions:
|
|||||||
xml:
|
xml:
|
||||||
name: User
|
name: User
|
||||||
Tag:
|
Tag:
|
||||||
|
x-swift-hashable: true
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
id:
|
id:
|
||||||
|
21
pom.xml
21
pom.xml
@ -1429,9 +1429,26 @@
|
|||||||
</property>
|
</property>
|
||||||
</activation>
|
</activation>
|
||||||
<modules>
|
<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/default/SwaggerClientTests</module>
|
||||||
<module>samples/client/petstore/swift5/promisekit/SwaggerClientTests</module>
|
<module>samples/client/petstore/swift5/promisekitLibrary/SwaggerClientTests</module>
|
||||||
<module>samples/client/petstore/swift5/rxswift/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/default/SwaggerClientTests</module>
|
||||||
<module>samples/client/petstore/swift4/promisekit/SwaggerClientTests</module>
|
<module>samples/client/petstore/swift4/promisekit/SwaggerClientTests</module>
|
||||||
<module>samples/client/petstore/swift4/rxswift/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)
|
self.processRequest(request: upload, managerId, apiResponseQueue, completion)
|
||||||
case .failure(let encodingError):
|
case .failure(let encodingError):
|
||||||
apiResponseQueue.async {
|
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):
|
case let .success(value):
|
||||||
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
||||||
case let .failure(error):
|
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)))
|
completion(.success(Response(response: dataResponse.response!, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} 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 {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, dataResponse.data, error)))
|
completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, error)))
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
})
|
})
|
||||||
@ -192,7 +192,7 @@ open class AlamofireRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
case .success:
|
case .success:
|
||||||
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
||||||
case let .failure(error):
|
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:
|
case .success:
|
||||||
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
||||||
case let .failure(error):
|
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):
|
case let .success(value):
|
||||||
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
completion(.success(Response(response: stringResponse.response!, body: value as? T)))
|
||||||
case let .failure(error):
|
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:
|
case .success:
|
||||||
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
completion(.success(Response(response: voidResponse.response!, body: nil)))
|
||||||
case let .failure(error):
|
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:
|
case .success:
|
||||||
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as? T)))
|
||||||
case let .failure(error):
|
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()
|
cleanupRequest()
|
||||||
|
|
||||||
guard dataResponse.result.isSuccess else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let data = dataResponse.data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = dataResponse.response else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -347,7 +347,7 @@ open class AlamofireDecodableRequestBuilder<T: Decodable>: AlamofireRequestBuild
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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 {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -18,7 +18,7 @@ class FileUtils {
|
|||||||
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
||||||
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
||||||
|
|
||||||
//Checks if file exists, removes it if so.
|
// Checks if file exists, removes it if so.
|
||||||
deleteFile(fileURL: fileURL)
|
deleteFile(fileURL: fileURL)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -1 +1 @@
|
|||||||
5.0.0-SNAPSHOT
|
5.0.1-SNAPSHOT
|
@ -11,7 +11,7 @@ protocol JSONEncodable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum ErrorResponse: Error {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
case let .failure(error):
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ class FileUtils {
|
|||||||
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
||||||
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
||||||
|
|
||||||
//Checks if file exists, removes it if so.
|
// Checks if file exists, removes it if so.
|
||||||
deleteFile(fileURL: fileURL)
|
deleteFile(fileURL: fileURL)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -1 +1 @@
|
|||||||
5.0.0-SNAPSHOT
|
5.0.1-SNAPSHOT
|
@ -11,7 +11,7 @@ protocol JSONEncodable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum ErrorResponse: Error {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
case let .failure(error):
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ class FileUtils {
|
|||||||
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
||||||
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
||||||
|
|
||||||
//Checks if file exists, removes it if so.
|
// Checks if file exists, removes it if so.
|
||||||
deleteFile(fileURL: fileURL)
|
deleteFile(fileURL: fileURL)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -15,8 +15,6 @@ PetstoreClient/Classes/OpenAPIs/JSONEncodingHelper.swift
|
|||||||
PetstoreClient/Classes/OpenAPIs/Models.swift
|
PetstoreClient/Classes/OpenAPIs/Models.swift
|
||||||
PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift
|
PetstoreClient/Classes/OpenAPIs/Models/ApiResponse.swift
|
||||||
PetstoreClient/Classes/OpenAPIs/Models/Category.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/Order.swift
|
||||||
PetstoreClient/Classes/OpenAPIs/Models/Pet.swift
|
PetstoreClient/Classes/OpenAPIs/Models/Pet.swift
|
||||||
PetstoreClient/Classes/OpenAPIs/Models/Tag.swift
|
PetstoreClient/Classes/OpenAPIs/Models/Tag.swift
|
||||||
@ -27,8 +25,6 @@ PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift
|
|||||||
README.md
|
README.md
|
||||||
docs/ApiResponse.md
|
docs/ApiResponse.md
|
||||||
docs/Category.md
|
docs/Category.md
|
||||||
docs/InlineObject.md
|
|
||||||
docs/InlineObject1.md
|
|
||||||
docs/Order.md
|
docs/Order.md
|
||||||
docs/Pet.md
|
docs/Pet.md
|
||||||
docs/PetAPI.md
|
docs/PetAPI.md
|
||||||
|
@ -1 +1 @@
|
|||||||
5.0.0-SNAPSHOT
|
5.0.1-SNAPSHOT
|
@ -11,7 +11,7 @@ protocol JSONEncodable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum ErrorResponse: Error {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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)
|
- [ApiResponse](docs/ApiResponse.md)
|
||||||
- [Category](docs/Category.md)
|
- [Category](docs/Category.md)
|
||||||
- [InlineObject](docs/InlineObject.md)
|
|
||||||
- [InlineObject1](docs/InlineObject1.md)
|
|
||||||
- [Order](docs/Order.md)
|
- [Order](docs/Order.md)
|
||||||
- [Pet](docs/Pet.md)
|
- [Pet](docs/Pet.md)
|
||||||
- [Tag](docs/Tag.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 {
|
internal enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
internal enum DownloadException: Error {
|
internal enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
internal struct Category: Codable {
|
internal struct Category: Codable, Hashable {
|
||||||
|
|
||||||
internal var id: Int64?
|
internal var id: Int64?
|
||||||
internal var name: String = "default-name"
|
internal var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
internal struct Tag: Codable {
|
internal struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
internal var id: Int64?
|
internal var id: Int64?
|
||||||
internal var name: String?
|
internal var name: String?
|
||||||
|
@ -167,7 +167,7 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ internal class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ internal class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionReques
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ internal class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionReques
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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 {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
@objc public class Category: NSObject, Codable {
|
@objc public class Category: NSObject, Codable, Hashable {
|
||||||
|
|
||||||
public var _id: Int64?
|
public var _id: Int64?
|
||||||
public var _idNum: NSNumber? {
|
public var _idNum: NSNumber? {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
@objc public class Tag: NSObject, Codable {
|
@objc public class Tag: NSObject, Codable, Hashable {
|
||||||
|
|
||||||
public var _id: Int64?
|
public var _id: Int64?
|
||||||
public var _idNum: NSNumber? {
|
public var _idNum: NSNumber? {
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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 {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
case let .failure(error):
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ class FileUtils {
|
|||||||
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
||||||
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
||||||
|
|
||||||
//Checks if file exists, removes it if so.
|
// Checks if file exists, removes it if so.
|
||||||
deleteFile(fileURL: fileURL)
|
deleteFile(fileURL: fileURL)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -1 +1 @@
|
|||||||
5.0.0-SNAPSHOT
|
5.0.1-SNAPSHOT
|
@ -11,7 +11,7 @@ protocol JSONEncodable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum ErrorResponse: Error {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public private(set) var id: Int64?
|
public private(set) var id: Int64?
|
||||||
public private(set) var name: String = "default-name"
|
public private(set) var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public private(set) var id: Int64?
|
public private(set) var id: Int64?
|
||||||
public private(set) var name: String?
|
public private(set) var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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 {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
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 {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
case let .failure(error):
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ class FileUtils {
|
|||||||
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
||||||
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
||||||
|
|
||||||
//Checks if file exists, removes it if so.
|
// Checks if file exists, removes it if so.
|
||||||
deleteFile(fileURL: fileURL)
|
deleteFile(fileURL: fileURL)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -1 +1 @@
|
|||||||
5.0.0-SNAPSHOT
|
5.0.1-SNAPSHOT
|
@ -11,7 +11,7 @@ protocol JSONEncodable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum ErrorResponse: Error {
|
public enum ErrorResponse: Error {
|
||||||
case error(Int, Data?, Error)
|
case error(Int, Data?, URLResponse?, Error)
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum DownloadException: Error {
|
public enum DownloadException: Error {
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Category: Codable {
|
public struct Category: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String = "default-name"
|
public var name: String = "default-name"
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
public struct Tag: Codable {
|
public struct Tag: Codable, Hashable {
|
||||||
|
|
||||||
public var id: Int64?
|
public var id: Int64?
|
||||||
public var name: String?
|
public var name: String?
|
||||||
|
@ -167,7 +167,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
} catch {
|
} catch {
|
||||||
apiResponseQueue.async {
|
apiResponseQueue.async {
|
||||||
cleanupRequest()
|
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) {
|
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, Error>) -> Void) {
|
||||||
|
|
||||||
if let error = error {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,9 +227,9 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
|
|||||||
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
completion(.success(Response(response: httpResponse, body: filePath as? T)))
|
||||||
|
|
||||||
} catch let requestParserError as DownloadException {
|
} catch let requestParserError as DownloadException {
|
||||||
completion(.failure(ErrorResponse.error(400, data, requestParserError)))
|
completion(.failure(ErrorResponse.error(400, data, response, requestParserError)))
|
||||||
} catch let error {
|
} catch let error {
|
||||||
completion(.failure(ErrorResponse.error(400, data, error)))
|
completion(.failure(ErrorResponse.error(400, data, response, error)))
|
||||||
}
|
}
|
||||||
|
|
||||||
case is Void.Type:
|
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) {
|
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 {
|
if let error = error {
|
||||||
completion(.failure(ErrorResponse.error(-1, data, error)))
|
completion(.failure(ErrorResponse.error(-1, data, response, error)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard let httpResponse = response as? HTTPURLResponse else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
guard httpResponse.isStatusCodeSuccessful else {
|
guard httpResponse.isStatusCodeSuccessful else {
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, DecodableRequestBuilderError.unsuccessfulHTTPStatusCode)))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -343,7 +343,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
default:
|
default:
|
||||||
|
|
||||||
guard let data = data, !data.isEmpty else {
|
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
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,7 +353,7 @@ open class URLSessionDecodableRequestBuilder<T: Decodable>: URLSessionRequestBui
|
|||||||
case let .success(decodableObj):
|
case let .success(decodableObj):
|
||||||
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
completion(.success(Response(response: httpResponse, body: decodableObj)))
|
||||||
case let .failure(error):
|
case let .failure(error):
|
||||||
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, error)))
|
completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ class FileUtils {
|
|||||||
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
let fileURL = documentsDirectory.appendingPathComponent(fileName)
|
||||||
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
guard let data = image.jpegData(compressionQuality: 1) else { return nil }
|
||||||
|
|
||||||
//Checks if file exists, removes it if so.
|
// Checks if file exists, removes it if so.
|
||||||
deleteFile(fileURL: fileURL)
|
deleteFile(fileURL: fileURL)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user