From e882421ff313dda54ae3728b79529877898d7ab0 Mon Sep 17 00:00:00 2001 From: Jonas Reichert <75073818+Jonas1893@users.noreply.github.com> Date: Mon, 14 Nov 2022 13:59:25 +0100 Subject: [PATCH] enhance response with bodyData (#14006) --- .../src/main/resources/swift5/Models.mustache | 8 +++++--- .../AlamofireImplementations.mustache | 14 ++++++------- .../URLSessionImplementations.mustache | 20 +++++++++---------- .../OpenAPIs/AlamofireImplementations.swift | 14 ++++++------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- .../Sources/PetstoreClient/Models.swift | 8 +++++--- .../URLSessionImplementations.swift | 20 +++++++++---------- .../Classes/OpenAPIs/Models.swift | 8 +++++--- .../OpenAPIs/URLSessionImplementations.swift | 20 +++++++++---------- 33 files changed, 244 insertions(+), 212 deletions(-) diff --git a/modules/openapi-generator/src/main/resources/swift5/Models.mustache b/modules/openapi-generator/src/main/resources/swift5/Models.mustache index 776a36f9236..abab906fea8 100644 --- a/modules/openapi-generator/src/main/resources/swift5/Models.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/Models.mustache @@ -87,14 +87,16 @@ extension NullEncodable: Codable where Wrapped: Codable { {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let statusCode: Int {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let header: [String: String] {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let body: T + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} let bodyData: Data? - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(statusCode: Int, header: [String: String], body: T) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} convenience init(response: HTTPURLResponse, body: T) { + {{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -102,7 +104,7 @@ extension NullEncodable: Codable where Wrapped: Codable { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache index a2b5502bcf0..36b4e80c06c 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/alamofire/AlamofireImplementations.mustache @@ -176,7 +176,7 @@ private var managerStore = SynchronizedDictionary() switch voidResponse.result { case .success: - completion(.success(Response(response: voidResponse.response!, body: () as! T))) + completion(.success(Response(response: voidResponse.response!, body: () as! T, bodyData: voidResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error))) } @@ -270,7 +270,7 @@ private var managerStore = SynchronizedDictionary() switch stringResponse.result { case let .success(value): - completion(.success(Response(response: stringResponse.response!, body: value as! T))) + completion(.success(Response(response: stringResponse.response!, body: value as! T, bodyData: stringResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error))) } @@ -315,7 +315,7 @@ private var managerStore = SynchronizedDictionary() try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: dataResponse.response!, body: filePath as! T))) + completion(.success(Response(response: dataResponse.response!, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, requestParserError))) @@ -332,7 +332,7 @@ private var managerStore = SynchronizedDictionary() switch voidResponse.result { case .success: - completion(.success(Response(response: voidResponse.response!, body: () as! T))) + completion(.success(Response(response: voidResponse.response!, body: () as! T, bodyData: voidResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error))) } @@ -346,7 +346,7 @@ private var managerStore = SynchronizedDictionary() switch dataResponse.result { case .success: - completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as! T))) + completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as! T, bodyData: dataResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error))) } @@ -370,7 +370,7 @@ private var managerStore = SynchronizedDictionary() guard let data = dataResponse.data, !data.isEmpty else { if T.self is ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: Optional.none as! T))) + completion(.success(Response(response: httpResponse, body: Optional.none as! T, bodyData: dataResponse.data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, httpResponse, DecodableRequestBuilderError.emptyDataResponse))) } @@ -381,7 +381,7 @@ private var managerStore = SynchronizedDictionary() switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: data))) case let .failure(error): completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, httpResponse, error))) } diff --git a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache index 1fc988e327b..b544298de36 100644 --- a/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache +++ b/modules/openapi-generator/src/main/resources/swift5/libraries/urlsession/URLSessionImplementations.mustache @@ -208,7 +208,7 @@ private var credentialStore = SynchronizedDictionary() switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ private var credentialStore = SynchronizedDictionary() let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ private var credentialStore = SynchronizedDictionary() try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ private var credentialStore = SynchronizedDictionary() case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift index a7d8f896651..3ed8fe080f3 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/AlamofireImplementations.swift @@ -176,7 +176,7 @@ open class AlamofireRequestBuilder: RequestBuilder { switch voidResponse.result { case .success: - completion(.success(Response(response: voidResponse.response!, body: () as! T))) + completion(.success(Response(response: voidResponse.response!, body: () as! T, bodyData: voidResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error))) } @@ -270,7 +270,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch stringResponse.result { case let .success(value): - completion(.success(Response(response: stringResponse.response!, body: value as! T))) + completion(.success(Response(response: stringResponse.response!, body: value as! T, bodyData: stringResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(stringResponse.response?.statusCode ?? 500, stringResponse.data, stringResponse.response, error))) } @@ -315,7 +315,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: dataResponse.response!, body: filePath as! T))) + completion(.success(Response(response: dataResponse.response!, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, dataResponse.data, dataResponse.response, requestParserError))) @@ -332,7 +332,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch voidResponse.result { case .success: - completion(.success(Response(response: voidResponse.response!, body: () as! T))) + completion(.success(Response(response: voidResponse.response!, body: () as! T, bodyData: voidResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(voidResponse.response?.statusCode ?? 500, voidResponse.data, voidResponse.response, error))) } @@ -346,7 +346,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch dataResponse.result { case .success: - completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as! T))) + completion(.success(Response(response: dataResponse.response!, body: dataResponse.data as! T, bodyData: dataResponse.data))) case let .failure(error): completion(.failure(ErrorResponse.error(dataResponse.response?.statusCode ?? 500, dataResponse.data, dataResponse.response, error))) } @@ -370,7 +370,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild guard let data = dataResponse.data, !data.isEmpty else { if T.self is ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: Optional.none as! T))) + completion(.success(Response(response: httpResponse, body: Optional.none as! T, bodyData: dataResponse.data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, httpResponse, DecodableRequestBuilderError.emptyDataResponse))) } @@ -381,7 +381,7 @@ open class AlamofireDecodableRequestBuilder: AlamofireRequestBuild switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: data))) case let .failure(error): completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, httpResponse, error))) } diff --git a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift index 28189fb486d..2613cc53b27 100644 --- a/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/alamofireLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -87,14 +87,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -102,7 +104,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift index eb916234ab3..b49cf8d1222 100644 --- a/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/asyncAwaitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/combineLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/default/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/deprecated/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/frozenEnums/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift index 9e20efc58ff..6831ade504c 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ internal class Response { internal let statusCode: Int internal let header: [String: String] internal let body: T + internal let bodyData: Data? - internal init(statusCode: Int, header: [String: String], body: T) { + internal init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - internal convenience init(response: HTTPURLResponse, body: T) { + internal convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ internal class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index fd237a105d9..e8f1e1ec614 100644 --- a/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/nonPublicApi/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ internal class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ internal class URLSessionDecodableRequestBuilder: URLSessionReques let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ internal class URLSessionDecodableRequestBuilder: URLSessionReques try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ internal class URLSessionDecodableRequestBuilder: URLSessionReques case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/objcCompatible/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/oneOf/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/promisekitLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/readonlyProperties/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/resultLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/rxswiftLibrary/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/urlsessionLibrary/Sources/PetstoreClient/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift index 50cd5bff5f2..b73c2b8fde0 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/Models.swift @@ -86,14 +86,16 @@ open class Response { public let statusCode: Int public let header: [String: String] public let body: T + public let bodyData: Data? - public init(statusCode: Int, header: [String: String], body: T) { + public init(statusCode: Int, header: [String: String], body: T, bodyData: Data?) { self.statusCode = statusCode self.header = header self.body = body + self.bodyData = bodyData } - public convenience init(response: HTTPURLResponse, body: T) { + public convenience init(response: HTTPURLResponse, body: T, bodyData: Data?) { let rawHeader = response.allHeaderFields var header = [String: String]() for (key, value) in rawHeader { @@ -101,7 +103,7 @@ open class Response { header[key] = value } } - self.init(statusCode: response.statusCode, header: header, body: body) + self.init(statusCode: response.statusCode, header: header, body: body, bodyData: bodyData) } } diff --git a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift index 3c7d97b4703..635c69cd6a8 100644 --- a/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift +++ b/samples/client/petstore/swift5/x-swift-hashable/PetstoreClient/Classes/OpenAPIs/URLSessionImplementations.swift @@ -208,7 +208,7 @@ open class URLSessionRequestBuilder: RequestBuilder { switch T.self { case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) default: fatalError("Unsupported Response Body Type - \(String(describing: T.self))") @@ -303,7 +303,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui let body = data.flatMap { String(data: $0, encoding: .utf8) } ?? "" - completion(.success(Response(response: httpResponse, body: body as! T))) + completion(.success(Response(response: httpResponse, body: body as! T, bodyData: data))) case is URL.Type: do { @@ -334,7 +334,7 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui try fileManager.createDirectory(atPath: directoryPath, withIntermediateDirectories: true, attributes: nil) try data.write(to: filePath, options: .atomic) - completion(.success(Response(response: httpResponse, body: filePath as! T))) + completion(.success(Response(response: httpResponse, body: filePath as! T, bodyData: data))) } catch let requestParserError as DownloadException { completion(.failure(ErrorResponse.error(400, data, response, requestParserError))) @@ -344,30 +344,30 @@ open class URLSessionDecodableRequestBuilder: URLSessionRequestBui case is Void.Type: - completion(.success(Response(response: httpResponse, body: () as! T))) + completion(.success(Response(response: httpResponse, body: () as! T, bodyData: data))) case is Data.Type: - completion(.success(Response(response: httpResponse, body: data as! T))) + completion(.success(Response(response: httpResponse, body: data as! T, bodyData: data))) default: - guard let data = data, !data.isEmpty else { + guard let unwrappedData = data, !unwrappedData.isEmpty else { if let E = T.self as? ExpressibleByNilLiteral.Type { - completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T))) + completion(.success(Response(response: httpResponse, body: E.init(nilLiteral: ()) as! T, bodyData: data))) } else { completion(.failure(ErrorResponse.error(httpResponse.statusCode, nil, response, DecodableRequestBuilderError.emptyDataResponse))) } return } - let decodeResult = CodableHelper.decode(T.self, from: data) + let decodeResult = CodableHelper.decode(T.self, from: unwrappedData) switch decodeResult { case let .success(decodableObj): - completion(.success(Response(response: httpResponse, body: decodableObj))) + completion(.success(Response(response: httpResponse, body: decodableObj, bodyData: unwrappedData))) case let .failure(error): - completion(.failure(ErrorResponse.error(httpResponse.statusCode, data, response, error))) + completion(.failure(ErrorResponse.error(httpResponse.statusCode, unwrappedData, response, error))) } } }