Merge remote-tracking branch 'origin/master' into 6.0.x

This commit is contained in:
William Cheng
2022-01-02 15:41:37 +08:00
2007 changed files with 39758 additions and 48375 deletions

View File

@@ -27,6 +27,7 @@ open class RequestBuilder<T> {
public let parameters: [String: Any]?
public let method: String
public let URLString: String
public let requestTask: RequestTask = RequestTask()
/// Optional block to obtain a reference to the request's progress instance when available.
/// With the URLSession http client the request's progress only works on iOS 11.0, macOS 10.13, macCatalyst 13.0, tvOS 11.0, watchOS 4.0.
@@ -49,8 +50,8 @@ open class RequestBuilder<T> {
}
@discardableResult
open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) -> URLSessionTask? {
return nil
open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) -> RequestTask {
return requestTask
}
public func addHeader(name: String, value: String) -> Self {

View File

@@ -22,7 +22,7 @@ open class AnotherFakeAPI {
*/
open class func call123testSpecialTags(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Client> {
return Observable.create { observer -> Disposable in
let task = call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = call123testSpecialTagsWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -33,7 +33,7 @@ open class AnotherFakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}

View File

@@ -21,7 +21,7 @@ open class FakeAPI {
*/
open class func fakeOuterBooleanSerialize(body: Bool? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Bool> {
return Observable.create { observer -> Disposable in
let task = fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = fakeOuterBooleanSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -32,7 +32,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -69,7 +69,7 @@ open class FakeAPI {
*/
open class func fakeOuterCompositeSerialize(body: OuterComposite? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<OuterComposite> {
return Observable.create { observer -> Disposable in
let task = fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = fakeOuterCompositeSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -80,7 +80,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -117,7 +117,7 @@ open class FakeAPI {
*/
open class func fakeOuterNumberSerialize(body: Double? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Double> {
return Observable.create { observer -> Disposable in
let task = fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = fakeOuterNumberSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -128,7 +128,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -165,7 +165,7 @@ open class FakeAPI {
*/
open class func fakeOuterStringSerialize(body: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<String> {
return Observable.create { observer -> Disposable in
let task = fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = fakeOuterStringSerializeWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -176,7 +176,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -213,7 +213,7 @@ open class FakeAPI {
*/
open class func testBodyWithFileSchema(body: FileSchemaTestClass, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = testBodyWithFileSchemaWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -224,7 +224,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -262,7 +262,7 @@ open class FakeAPI {
*/
open class func testBodyWithQueryParams(query: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result in
let requestTask = testBodyWithQueryParamsWithRequestBuilder(query: query, body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -273,7 +273,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -314,7 +314,7 @@ open class FakeAPI {
*/
open class func testClientModel(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Client> {
return Observable.create { observer -> Disposable in
let task = testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = testClientModelWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -325,7 +325,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -377,7 +377,7 @@ open class FakeAPI {
*/
open class func testEndpointParameters(number: Double, double: Double, patternWithoutDelimiter: String, byte: Data, integer: Int? = nil, int32: Int? = nil, int64: Int64? = nil, float: Float? = nil, string: String? = nil, binary: URL? = nil, date: Date? = nil, dateTime: Date? = nil, password: String? = nil, callback: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result in
let requestTask = testEndpointParametersWithRequestBuilder(number: number, double: double, patternWithoutDelimiter: patternWithoutDelimiter, byte: byte, integer: integer, int32: int32, int64: int64, float: float, string: string, binary: binary, date: date, dateTime: dateTime, password: password, callback: callback).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -388,7 +388,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -535,7 +535,7 @@ open class FakeAPI {
*/
open class func testEnumParameters(enumHeaderStringArray: [EnumHeaderStringArray_testEnumParameters]? = nil, enumHeaderString: EnumHeaderString_testEnumParameters? = nil, enumQueryStringArray: [EnumQueryStringArray_testEnumParameters]? = nil, enumQueryString: EnumQueryString_testEnumParameters? = nil, enumQueryInteger: EnumQueryInteger_testEnumParameters? = nil, enumQueryDouble: EnumQueryDouble_testEnumParameters? = nil, enumFormStringArray: [EnumFormStringArray_testEnumParameters]? = nil, enumFormString: EnumFormString_testEnumParameters? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result in
let requestTask = testEnumParametersWithRequestBuilder(enumHeaderStringArray: enumHeaderStringArray, enumHeaderString: enumHeaderString, enumQueryStringArray: enumQueryStringArray, enumQueryString: enumQueryString, enumQueryInteger: enumQueryInteger, enumQueryDouble: enumQueryDouble, enumFormStringArray: enumFormStringArray, enumFormString: enumFormString).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -546,7 +546,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -611,7 +611,7 @@ open class FakeAPI {
*/
open class func testGroupParameters(requiredStringGroup: Int, requiredBooleanGroup: Bool, requiredInt64Group: Int64, stringGroup: Int? = nil, booleanGroup: Bool? = nil, int64Group: Int64? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result in
let requestTask = testGroupParametersWithRequestBuilder(requiredStringGroup: requiredStringGroup, requiredBooleanGroup: requiredBooleanGroup, requiredInt64Group: requiredInt64Group, stringGroup: stringGroup, booleanGroup: booleanGroup, int64Group: int64Group).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -622,7 +622,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -673,7 +673,7 @@ open class FakeAPI {
*/
open class func testInlineAdditionalProperties(param: [String: String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result in
let requestTask = testInlineAdditionalPropertiesWithRequestBuilder(param: param).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -684,7 +684,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -723,7 +723,7 @@ open class FakeAPI {
*/
open class func testJsonFormData(param: String, param2: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result in
let requestTask = testJsonFormDataWithRequestBuilder(param: param, param2: param2).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -734,7 +734,7 @@ open class FakeAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}

View File

@@ -22,7 +22,7 @@ open class FakeClassnameTags123API {
*/
open class func testClassname(body: Client, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Client> {
return Observable.create { observer -> Disposable in
let task = testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = testClassnameWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -33,7 +33,7 @@ open class FakeClassnameTags123API {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}

View File

@@ -22,7 +22,7 @@ open class PetAPI {
*/
open class func addPet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = addPetWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -33,7 +33,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -75,7 +75,7 @@ open class PetAPI {
*/
open class func deletePet(petId: Int64, apiKey: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result in
let requestTask = deletePetWithRequestBuilder(petId: petId, apiKey: apiKey).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -86,7 +86,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -140,7 +140,7 @@ open class PetAPI {
*/
open class func findPetsByStatus(status: [Status_findPetsByStatus], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<[Pet]> {
return Observable.create { observer -> Disposable in
let task = findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result in
let requestTask = findPetsByStatusWithRequestBuilder(status: status).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -151,7 +151,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -197,7 +197,7 @@ open class PetAPI {
@available(*, deprecated, message: "This operation is deprecated.")
open class func findPetsByTags(tags: [String], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<[Pet]> {
return Observable.create { observer -> Disposable in
let task = findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result in
let requestTask = findPetsByTagsWithRequestBuilder(tags: tags).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -208,7 +208,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -254,7 +254,7 @@ open class PetAPI {
*/
open class func getPetById(petId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Pet> {
return Observable.create { observer -> Disposable in
let task = getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result in
let requestTask = getPetByIdWithRequestBuilder(petId: petId).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -265,7 +265,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -310,7 +310,7 @@ open class PetAPI {
*/
open class func updatePet(body: Pet, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = updatePetWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -321,7 +321,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -364,7 +364,7 @@ open class PetAPI {
*/
open class func updatePetWithForm(petId: Int64, name: String? = nil, status: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result in
let requestTask = updatePetWithFormWithRequestBuilder(petId: petId, name: name, status: status).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -375,7 +375,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -429,7 +429,7 @@ open class PetAPI {
*/
open class func uploadFile(petId: Int64, additionalMetadata: String? = nil, file: URL? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<ApiResponse> {
return Observable.create { observer -> Disposable in
let task = uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result in
let requestTask = uploadFileWithRequestBuilder(petId: petId, additionalMetadata: additionalMetadata, file: file).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -440,7 +440,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -494,7 +494,7 @@ open class PetAPI {
*/
open class func uploadFileWithRequiredFile(petId: Int64, requiredFile: URL, additionalMetadata: String? = nil, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<ApiResponse> {
return Observable.create { observer -> Disposable in
let task = uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result in
let requestTask = uploadFileWithRequiredFileWithRequestBuilder(petId: petId, requiredFile: requiredFile, additionalMetadata: additionalMetadata).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -505,7 +505,7 @@ open class PetAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}

View File

@@ -22,7 +22,7 @@ open class StoreAPI {
*/
open class func deleteOrder(orderId: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result in
let requestTask = deleteOrderWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -33,7 +33,7 @@ open class StoreAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -74,7 +74,7 @@ open class StoreAPI {
*/
open class func getInventory(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<[String: Int]> {
return Observable.create { observer -> Disposable in
let task = getInventoryWithRequestBuilder().execute(apiResponseQueue) { result in
let requestTask = getInventoryWithRequestBuilder().execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -85,7 +85,7 @@ open class StoreAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -126,7 +126,7 @@ open class StoreAPI {
*/
open class func getOrderById(orderId: Int64, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Order> {
return Observable.create { observer -> Disposable in
let task = getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result in
let requestTask = getOrderByIdWithRequestBuilder(orderId: orderId).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -137,7 +137,7 @@ open class StoreAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -179,7 +179,7 @@ open class StoreAPI {
*/
open class func placeOrder(body: Order, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Order> {
return Observable.create { observer -> Disposable in
let task = placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = placeOrderWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -190,7 +190,7 @@ open class StoreAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}

View File

@@ -22,7 +22,7 @@ open class UserAPI {
*/
open class func createUser(body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = createUserWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -33,7 +33,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -72,7 +72,7 @@ open class UserAPI {
*/
open class func createUsersWithArrayInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = createUsersWithArrayInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -83,7 +83,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -121,7 +121,7 @@ open class UserAPI {
*/
open class func createUsersWithListInput(body: [User], apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
let requestTask = createUsersWithListInputWithRequestBuilder(body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -132,7 +132,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -170,7 +170,7 @@ open class UserAPI {
*/
open class func deleteUser(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result in
let requestTask = deleteUserWithRequestBuilder(username: username).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -181,7 +181,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -223,7 +223,7 @@ open class UserAPI {
*/
open class func getUserByName(username: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<User> {
return Observable.create { observer -> Disposable in
let task = getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result in
let requestTask = getUserByNameWithRequestBuilder(username: username).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -234,7 +234,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -276,7 +276,7 @@ open class UserAPI {
*/
open class func loginUser(username: String, password: String, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<String> {
return Observable.create { observer -> Disposable in
let task = loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result in
let requestTask = loginUserWithRequestBuilder(username: username, password: password).execute(apiResponseQueue) { result in
switch result {
case let .success(response):
observer.onNext(response.body)
@@ -287,7 +287,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -330,7 +330,7 @@ open class UserAPI {
*/
open class func logoutUser(apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = logoutUserWithRequestBuilder().execute(apiResponseQueue) { result in
let requestTask = logoutUserWithRequestBuilder().execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -341,7 +341,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}
@@ -379,7 +379,7 @@ open class UserAPI {
*/
open class func updateUser(username: String, body: User, apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue) -> Observable<Void> {
return Observable.create { observer -> Disposable in
let task = updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result in
let requestTask = updateUserWithRequestBuilder(username: username, body: body).execute(apiResponseQueue) { result in
switch result {
case .success:
observer.onNext(())
@@ -390,7 +390,7 @@ open class UserAPI {
}
return Disposables.create {
task?.cancel()
requestTask.cancel()
}
}
}

View File

@@ -36,6 +36,36 @@ extension CaseIterableDefaultsLast {
}
}
/// A flexible type that can be encoded (`.encodeNull` or `.encodeValue`)
/// or not encoded (`.encodeNothing`). Intended for request payloads.
public enum NullEncodable<Wrapped: Hashable>: Hashable {
case encodeNothing
case encodeNull
case encodeValue(Wrapped)
}
extension NullEncodable: Codable where Wrapped: Codable {
public init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
if let value = try? container.decode(Wrapped.self) {
self = .encodeValue(value)
} else if container.decodeNil() {
self = .encodeNull
} else {
self = .encodeNothing
}
}
public func encode(to encoder: Encoder) throws {
var container = encoder.singleValueContainer()
switch self {
case .encodeNothing: return
case .encodeNull: try container.encodeNil()
case .encodeValue(let wrapped): try container.encode(wrapped)
}
}
}
public enum ErrorResponse: Error {
case error(Int, Data?, URLResponse?, Error)
}
@@ -78,3 +108,16 @@ open class Response<T> {
self.init(statusCode: response.statusCode, header: header, body: body)
}
}
public final class RequestTask {
private var task: URLSessionTask?
internal func set(task: URLSessionTask) {
self.task = task
}
public func cancel() {
task?.cancel()
task = nil
}
}

View File

@@ -14,11 +14,11 @@ import AnyCodable
public struct Name: Codable, Hashable {
public var name: Int
public var snakeCase: Int?
public var snakeCase: NullEncodable<Int> = .encodeValue(11033)
public var property: String?
public var _123number: Int?
public init(name: Int, snakeCase: Int? = nil, property: String? = nil, _123number: Int? = nil) {
public init(name: Int, snakeCase: NullEncodable<Int> = .encodeValue(11033), property: String? = nil, _123number: Int? = nil) {
self.name = name
self.snakeCase = snakeCase
self.property = property
@@ -37,7 +37,10 @@ public struct Name: Codable, Hashable {
public func encode(to encoder: Encoder) throws {
var container = encoder.container(keyedBy: CodingKeys.self)
try container.encode(name, forKey: .name)
try container.encodeIfPresent(snakeCase, forKey: .snakeCase)
switch snakeCase {
case .encodeNothing: break
case .encodeNull, .encodeValue: try container.encode(snakeCase, forKey: .snakeCase)
}
try container.encodeIfPresent(property, forKey: .property)
try container.encodeIfPresent(_123number, forKey: ._123number)
}

View File

@@ -23,9 +23,9 @@ public struct Pet: Codable, Hashable {
public var photoUrls: [String]
public var tags: [Tag]?
/** pet status in the store */
public var status: Status?
public var status: NullEncodable<Status>
public init(id: Int64? = nil, category: Category? = nil, name: String, photoUrls: [String], tags: [Tag]? = nil, status: Status? = nil) {
public init(id: Int64? = nil, category: Category? = nil, name: String, photoUrls: [String], tags: [Tag]? = nil, status: NullEncodable<Status> = .encodeNull) {
self.id = id
self.category = category
self.name = name
@@ -52,7 +52,10 @@ public struct Pet: Codable, Hashable {
try container.encode(name, forKey: .name)
try container.encode(photoUrls, forKey: .photoUrls)
try container.encodeIfPresent(tags, forKey: .tags)
try container.encodeIfPresent(status, forKey: .status)
switch status {
case .encodeNothing: break
case .encodeNull, .encodeValue: try container.encode(status, forKey: .status)
}
}
}

View File

@@ -100,7 +100,7 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
}
@discardableResult
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) -> URLSessionTask? {
override open func execute(_ apiResponseQueue: DispatchQueue = PetstoreClientAPI.apiResponseQueue, _ completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) -> RequestTask {
let urlSession = createURLSession()
guard let xMethod = HTTPMethod(rawValue: method) else {
@@ -172,14 +172,14 @@ open class URLSessionRequestBuilder<T>: RequestBuilder<T> {
dataTask.resume()
return dataTask
requestTask.set(task: dataTask)
} catch {
apiResponseQueue.async {
completion(.failure(ErrorResponse.error(415, nil, nil, error)))
}
return nil
}
return requestTask
}
fileprivate func processRequestResponse(urlRequest: URLRequest, data: Data?, response: URLResponse?, error: Error?, completion: @escaping (_ result: Swift.Result<Response<T>, ErrorResponse>) -> Void) {
@@ -477,6 +477,15 @@ private class FormDataEncoding: ParameterEncoding {
)
}
case let data as Data:
urlRequest = configureDataUploadRequest(
urlRequest: urlRequest,
boundary: boundary,
name: key,
data: data
)
default:
fatalError("Unprocessable value \(value) with key \(key)")
}

View File

@@ -6,13 +6,13 @@
"repositoryURL": "https://github.com/Flight-School/AnyCodable",
"state": {
"branch": null,
"revision": "876d162385e9862ae8b3c8d65dc301312b040005",
"version": "0.6.0"
"revision": "b1a7a8a6186f2fcb28f7bda67cfc545de48b3c80",
"version": "0.6.2"
}
},
{
"package": "RxSwift",
"repositoryURL": "https://github.com/ReactiveX/RxSwift.git",
"repositoryURL": "https://github.com/ReactiveX/RxSwift",
"state": {
"branch": null,
"revision": "7c17a6ccca06b5c107cfa4284e634562ddaf5951",

View File

@@ -28,9 +28,9 @@ class PetAPITests: XCTestCase {
func test1CreatePet() {
let expectation = self.expectation(description: "testCreatePet")
let category = PetstoreClient.Category(id: 1234, name: "eyeColor")
let category = Category(id: 1234, name: "eyeColor")
let tags = [Tag(id: 1234, name: "New York"), Tag(id: 124321, name: "Jose")]
let newPet = Pet(id: 1000, category: category, name: "Fluffy", photoUrls: ["https://petstore.com/sample/photo1.jpg", "https://petstore.com/sample/photo2.jpg"], tags: tags, status: .available)
let newPet = Pet(id: 1000, category: category, name: "Fluffy", photoUrls: ["https://petstore.com/sample/photo1.jpg", "https://petstore.com/sample/photo2.jpg"], tags: tags, status: .encodeValue(.available))
PetAPI.addPet(body: newPet).subscribe(onNext: {
expectation.fulfill()

View File

@@ -1,5 +1,3 @@
#!/bin/sh
pod install
xcodebuild -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" test -destination "platform=iOS Simulator,name=iPhone 8,OS=latest" | xcpretty && exit ${PIPESTATUS[0]}
xcodebuild clean build-for-testing -workspace "SwaggerClient.xcworkspace" -scheme "SwaggerClient" -destination "platform=iOS Simulator,name=iPhone 8,OS=latest" | xcpretty && exit ${PIPESTATUS[0]}

View File

@@ -4,7 +4,7 @@
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**name** | **Int** | |
**snakeCase** | **Int** | | [optional] [readonly]
**snakeCase** | **Int** | | [optional] [readonly] [default to .encodeValue(11033)]
**property** | **String** | | [optional]
**_123number** | **Int** | | [optional] [readonly]