From 6e7c70f247921a1dc8d8ca17416691398ff42d13 Mon Sep 17 00:00:00 2001 From: wing328 Date: Mon, 13 Jul 2015 17:43:18 +0800 Subject: [PATCH 01/22] fix sinatra outdated tag, use version tag --- .../src/main/resources/sinatra/api.mustache | 12 +++++----- .../main/resources/sinatra/my_app.mustache | 4 ++-- .../server/petstore/sinatra/api/pet_api.rb | 24 +++++++++---------- .../server/petstore/sinatra/api/store_api.rb | 6 ++--- .../server/petstore/sinatra/api/user_api.rb | 22 ++++++++--------- samples/server/petstore/sinatra/my_app.rb | 2 +- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/sinatra/api.mustache b/modules/swagger-codegen/src/main/resources/sinatra/api.mustache index cfeae19de7a..7dffb94cdf0 100644 --- a/modules/swagger-codegen/src/main/resources/sinatra/api.mustache +++ b/modules/swagger-codegen/src/main/resources/sinatra/api.mustache @@ -15,18 +15,18 @@ MyApp.add_route('{{httpMethod}}', '{{path}}', { { "name" => "{{paramName}}", "description" => "{{description}}", - "dataType" => "{{swaggerDataType}}", + "dataType" => "{{dataType}}", "paramType" => "query", - "allowMultiple" => {{allowMultiple}}, + {{#collectionFormat}}"collectionFormat" => "{{collectionFormat}}",{{/collectionFormat}} "allowableValues" => "{{allowableValues}}", - {{#defaultValue}}"defaultValue" => {{{defaultValue}}}{{/defaultValue}} + {{#defaultValue}}"defaultValue" => "{{{defaultValue}}}"{{/defaultValue}} }, {{/queryParams}} {{#pathParams}} { "name" => "{{paramName}}", "description" => "{{description}}", - "dataType" => "{{swaggerDataType}}", + "dataType" => "{{dataType}}", "paramType" => "path", }, {{/pathParams}} @@ -34,7 +34,7 @@ MyApp.add_route('{{httpMethod}}', '{{path}}', { { "name" => "{{paramName}}", "description" => "{{description}}", - "dataType" => "{{swaggerDataType}}", + "dataType" => "{{dataType}}", "paramType" => "header", }, {{/headerParams}} @@ -42,7 +42,7 @@ MyApp.add_route('{{httpMethod}}', '{{path}}', { { "name" => "body", "description" => "{{description}}", - "dataType" => "{{swaggerDataType}}", + "dataType" => "{{dataType}}", "paramType" => "body", } {{/bodyParams}} diff --git a/modules/swagger-codegen/src/main/resources/sinatra/my_app.mustache b/modules/swagger-codegen/src/main/resources/sinatra/my_app.mustache index 72b5267a140..8c4a16d7ff5 100644 --- a/modules/swagger-codegen/src/main/resources/sinatra/my_app.mustache +++ b/modules/swagger-codegen/src/main/resources/sinatra/my_app.mustache @@ -3,10 +3,10 @@ require './lib/swaggering' # only need to extend if you want special configuration! class MyApp < Swaggering self.configure do |config| - config.api_version = '0.2' + config.api_version = '{{version}}' end end {{#apis}} require './lib/{{className}}.rb' -{{/apis}} \ No newline at end of file +{{/apis}} diff --git a/samples/server/petstore/sinatra/api/pet_api.rb b/samples/server/petstore/sinatra/api/pet_api.rb index 2fdc1f2a6e6..5f995c531d8 100644 --- a/samples/server/petstore/sinatra/api/pet_api.rb +++ b/samples/server/petstore/sinatra/api/pet_api.rb @@ -16,7 +16,7 @@ MyApp.add_route('PUT', '/pet', { { "name" => "body", "description" => "Pet object that needs to be added to the store", - "dataType" => "", + "dataType" => "Pet", "paramType" => "body", } @@ -43,7 +43,7 @@ MyApp.add_route('POST', '/pet', { { "name" => "body", "description" => "Pet object that needs to be added to the store", - "dataType" => "", + "dataType" => "Pet", "paramType" => "body", } @@ -67,11 +67,11 @@ MyApp.add_route('GET', '/pet/findByStatus', { { "name" => "status", "description" => "Status values that need to be considered for filter", - "dataType" => "", + "dataType" => "array[string]", "paramType" => "query", - "allowMultiple" => , + "collectionFormat" => "multi", "allowableValues" => "", - "defaultValue" => available + "defaultValue" => "available" }, @@ -97,9 +97,9 @@ MyApp.add_route('GET', '/pet/findByTags', { { "name" => "tags", "description" => "Tags to filter by", - "dataType" => "", + "dataType" => "array[string]", "paramType" => "query", - "allowMultiple" => , + "collectionFormat" => "multi", "allowableValues" => "", }, @@ -128,7 +128,7 @@ MyApp.add_route('GET', '/pet/{petId}', { { "name" => "pet_id", "description" => "ID of pet that needs to be fetched", - "dataType" => "", + "dataType" => "int", "paramType" => "path", }, @@ -155,7 +155,7 @@ MyApp.add_route('POST', '/pet/{petId}', { { "name" => "pet_id", "description" => "ID of pet that needs to be updated", - "dataType" => "", + "dataType" => "string", "paramType" => "path", }, @@ -182,7 +182,7 @@ MyApp.add_route('DELETE', '/pet/{petId}', { { "name" => "pet_id", "description" => "Pet id to delete", - "dataType" => "", + "dataType" => "int", "paramType" => "path", }, @@ -190,7 +190,7 @@ MyApp.add_route('DELETE', '/pet/{petId}', { { "name" => "api_key", "description" => "", - "dataType" => "", + "dataType" => "string", "paramType" => "header", }, @@ -216,7 +216,7 @@ MyApp.add_route('POST', '/pet/{petId}/uploadImage', { { "name" => "pet_id", "description" => "ID of pet to update", - "dataType" => "", + "dataType" => "int", "paramType" => "path", }, diff --git a/samples/server/petstore/sinatra/api/store_api.rb b/samples/server/petstore/sinatra/api/store_api.rb index 245ae23bff7..24498387412 100644 --- a/samples/server/petstore/sinatra/api/store_api.rb +++ b/samples/server/petstore/sinatra/api/store_api.rb @@ -36,7 +36,7 @@ MyApp.add_route('POST', '/store/order', { { "name" => "body", "description" => "order placed for purchasing the pet", - "dataType" => "", + "dataType" => "Order", "paramType" => "body", } @@ -61,7 +61,7 @@ MyApp.add_route('GET', '/store/order/{orderId}', { { "name" => "order_id", "description" => "ID of pet that needs to be fetched", - "dataType" => "", + "dataType" => "string", "paramType" => "path", }, @@ -88,7 +88,7 @@ MyApp.add_route('DELETE', '/store/order/{orderId}', { { "name" => "order_id", "description" => "ID of the order that needs to be deleted", - "dataType" => "", + "dataType" => "string", "paramType" => "path", }, diff --git a/samples/server/petstore/sinatra/api/user_api.rb b/samples/server/petstore/sinatra/api/user_api.rb index 8cbd49d72a0..98f50549ba1 100644 --- a/samples/server/petstore/sinatra/api/user_api.rb +++ b/samples/server/petstore/sinatra/api/user_api.rb @@ -16,7 +16,7 @@ MyApp.add_route('POST', '/user', { { "name" => "body", "description" => "Created user object", - "dataType" => "", + "dataType" => "User", "paramType" => "body", } @@ -43,7 +43,7 @@ MyApp.add_route('POST', '/user/createWithArray', { { "name" => "body", "description" => "List of user object", - "dataType" => "", + "dataType" => "array[User]", "paramType" => "body", } @@ -70,7 +70,7 @@ MyApp.add_route('POST', '/user/createWithList', { { "name" => "body", "description" => "List of user object", - "dataType" => "", + "dataType" => "array[User]", "paramType" => "body", } @@ -94,9 +94,9 @@ MyApp.add_route('GET', '/user/login', { { "name" => "username", "description" => "The user name for login", - "dataType" => "", + "dataType" => "string", "paramType" => "query", - "allowMultiple" => , + "allowableValues" => "", }, @@ -104,9 +104,9 @@ MyApp.add_route('GET', '/user/login', { { "name" => "password", "description" => "The password for login in clear text", - "dataType" => "", + "dataType" => "string", "paramType" => "query", - "allowMultiple" => , + "allowableValues" => "", }, @@ -155,7 +155,7 @@ MyApp.add_route('GET', '/user/{username}', { { "name" => "username", "description" => "The name that needs to be fetched. Use user1 for testing. ", - "dataType" => "", + "dataType" => "string", "paramType" => "path", }, @@ -182,7 +182,7 @@ MyApp.add_route('PUT', '/user/{username}', { { "name" => "username", "description" => "name that need to be deleted", - "dataType" => "", + "dataType" => "string", "paramType" => "path", }, @@ -191,7 +191,7 @@ MyApp.add_route('PUT', '/user/{username}', { { "name" => "body", "description" => "Updated user object", - "dataType" => "", + "dataType" => "User", "paramType" => "body", } @@ -216,7 +216,7 @@ MyApp.add_route('DELETE', '/user/{username}', { { "name" => "username", "description" => "The name that needs to be deleted", - "dataType" => "", + "dataType" => "string", "paramType" => "path", }, diff --git a/samples/server/petstore/sinatra/my_app.rb b/samples/server/petstore/sinatra/my_app.rb index 4e692eb53bc..9f4d991d0f1 100644 --- a/samples/server/petstore/sinatra/my_app.rb +++ b/samples/server/petstore/sinatra/my_app.rb @@ -3,7 +3,7 @@ require './lib/swaggering' # only need to extend if you want special configuration! class MyApp < Swaggering self.configure do |config| - config.api_version = '0.2' + config.api_version = '1.0.0' end end From 88e5860d9b07a4165696652b43b4bd9ae4324bee Mon Sep 17 00:00:00 2001 From: geekerzp Date: Fri, 5 Jun 2015 15:25:33 +0800 Subject: [PATCH 02/22] support asynchronous request in python client --- .../src/main/resources/python/api.mustache | 16 ++- .../main/resources/python/api_client.mustache | 35 ++++- .../python/swagger_client/api_client.py | 37 ++++- .../python/swagger_client/apis/pet_api.py | 129 +++++++++++++++++- .../python/swagger_client/apis/store_api.py | 57 ++++++++ .../python/swagger_client/apis/user_api.py | 127 +++++++++++++++++ .../petstore/python/tests/test_pet_api.py | 19 +++ 7 files changed, 403 insertions(+), 17 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/python/api.mustache b/modules/swagger-codegen/src/main/resources/python/api.mustache index 8c9e719e005..4ed4e8e5608 100644 --- a/modules/swagger-codegen/src/main/resources/python/api.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api.mustache @@ -47,9 +47,17 @@ class {{classname}}(object): {{{summary}}} {{{notes}}} - {{#allParams}}:param {{dataType}} {{paramName}}: {{{description}}} {{#required}}(required){{/required}}{{^required}}(optional){{/required}} + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.{{nickname}}({{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}callback=callback_function) + + {{#allParams}}:param {{dataType}} {{paramName}}: {{{description}}} {{#required}}(required){{/required}}{{#optional}}(optional){{/optional}} {{/allParams}} :return: {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}None{{/returnType}} + If the method called asynchronously, returns the request thread. """ {{#allParams}}{{#required}} # verify the required parameter '{{paramName}}' is set @@ -57,6 +65,7 @@ class {{classname}}(object): raise ValueError("Missing the required parameter `{{paramName}}` when calling `{{nickname}}`") {{/required}}{{/allParams}} all_params = [{{#allParams}}'{{paramName}}'{{#hasMore}}, {{/hasMore}}{{/allParams}}] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -107,10 +116,9 @@ class {{classname}}(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, - response_type={{#returnType}}'{{returnType}}'{{/returnType}}{{^returnType}}None{{/returnType}}, auth_settings=auth_settings) - {{#returnType}} + response={{#returnType}}'{{returnType}}'{{/returnType}}{{^returnType}}None{{/returnType}}, auth_settings=auth_settings, callback=params.get('callback')) return response - {{/returnType}}{{/operation}} + {{/operation}} {{/operations}} diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index 9188c851327..95f727ff374 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -19,6 +19,7 @@ import datetime import mimetypes import random import tempfile +import threading # python 2 and python 3 compatibility library from six import iteritems @@ -60,8 +61,8 @@ class ApiClient(object): def set_default_header(self, header_name, header_value): self.default_headers[header_name] = header_value - def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, - body=None, post_params=None, files=None, response_type=None, auth_settings=None): + def __call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, response=None, auth_settings=None, callback=None): # headers parameters header_params = header_params or {} @@ -106,9 +107,14 @@ class ApiClient(object): # deserialize response data if response_type: - return self.deserialize(response_data, response_type) + deserialized_data = self.deserialize(response_data, response_type) else: - return None + deserialized_data = None + + if callback: + callback(deserialized_data) + else: + return deserialized_data def to_path_value(self, obj): """ @@ -212,7 +218,26 @@ class ApiClient(object): else: return self.__deserialize_model(data, klass) - def request(self, method, url, query_params=None, headers=None, post_params=None, body=None): + def call_api(self, resource_path, method, + path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, + response=None, auth_settings=None, callback=None): + if callback is None: + return self.__call_api(resource_path, method, + path_params, query_params, header_params, + body, post_params, files, + response, auth_settings, callback) + else: + thread = threading.Thread(target=self.__call_api, + args=(resource_path, method, + path_params, query_params, header_params, + body, post_params, files, + response, auth_settings, callback)) + thread.start() + return thread + + def request(self, method, url, query_params=None, headers=None, + post_params=None, body=None): """ Perform http request using RESTClient. """ diff --git a/samples/client/petstore/python/swagger_client/api_client.py b/samples/client/petstore/python/swagger_client/api_client.py index 9188c851327..57abdb847e2 100644 --- a/samples/client/petstore/python/swagger_client/api_client.py +++ b/samples/client/petstore/python/swagger_client/api_client.py @@ -19,6 +19,7 @@ import datetime import mimetypes import random import tempfile +import threading # python 2 and python 3 compatibility library from six import iteritems @@ -60,8 +61,8 @@ class ApiClient(object): def set_default_header(self, header_name, header_value): self.default_headers[header_name] = header_value - def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, - body=None, post_params=None, files=None, response_type=None, auth_settings=None): + def __call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, response=None, auth_settings=None, callback=None): # headers parameters header_params = header_params or {} @@ -105,10 +106,15 @@ class ApiClient(object): self.last_response = response_data # deserialize response data - if response_type: - return self.deserialize(response_data, response_type) + if response: + deserialized_data = self.deserialize(response_data, response) else: - return None + deserialized_data = None + + if callback: + callback(deserialized_data) + else: + return deserialized_data def to_path_value(self, obj): """ @@ -212,7 +218,26 @@ class ApiClient(object): else: return self.__deserialize_model(data, klass) - def request(self, method, url, query_params=None, headers=None, post_params=None, body=None): + def call_api(self, resource_path, method, + path_params=None, query_params=None, header_params=None, + body=None, post_params=None, files=None, + response=None, auth_settings=None, callback=None): + if callback is None: + return self.__call_api(resource_path, method, + path_params, query_params, header_params, + body, post_params, files, + response, auth_settings, callback) + else: + thread = threading.Thread(target=self.__call_api, + args=(resource_path, method, + path_params, query_params, header_params, + body, post_params, files, + response, auth_settings, callback)) + thread.start() + return thread + + def request(self, method, url, query_params=None, headers=None, + post_params=None, body=None): """ Perform http request using RESTClient. """ diff --git a/samples/client/petstore/python/swagger_client/apis/pet_api.py b/samples/client/petstore/python/swagger_client/apis/pet_api.py index 683e807adb9..eb34eb9dd10 100644 --- a/samples/client/petstore/python/swagger_client/apis/pet_api.py +++ b/samples/client/petstore/python/swagger_client/apis/pet_api.py @@ -46,12 +46,21 @@ class PetApi(object): Update an existing pet - :param Pet body: Pet object that needs to be added to the store (optional) + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.update_pet(callback=callback_function) + + :param Pet body: Pet object that needs to be added to the store :return: None + If the method called asynchronously, returns the request thread. """ all_params = ['body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -90,19 +99,33 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, - response_type=None, auth_settings=auth_settings) + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response def add_pet(self, **kwargs): """ Add a new pet to the store +<<<<<<< HEAD :param Pet body: Pet object that needs to be added to the store (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.add_pet(callback=callback_function) + + :param Pet body: Pet object that needs to be added to the store +>>>>>>> support asynchronous request in python client :return: None + If the method called asynchronously, returns the request thread. """ all_params = ['body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -141,19 +164,37 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def find_pets_by_status(self, **kwargs): """ Finds Pets by status Multiple status values can be provided with comma seperated strings +<<<<<<< HEAD :param list[str] status: Status values that need to be considered for filter (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.find_pets_by_status(callback=callback_function) + + :param list[str] status: Status values that need to be considered for filter +>>>>>>> support asynchronous request in python client :return: list[Pet] + If the method called asynchronously, returns the request thread. """ all_params = ['status'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -192,8 +233,12 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='list[Pet]', auth_settings=auth_settings) +======= + response='list[Pet]', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def find_pets_by_tags(self, **kwargs): @@ -201,12 +246,25 @@ class PetApi(object): Finds Pets by tags Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. +<<<<<<< HEAD :param list[str] tags: Tags to filter by (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.find_pets_by_tags(callback=callback_function) + + :param list[str] tags: Tags to filter by +>>>>>>> support asynchronous request in python client :return: list[Pet] + If the method called asynchronously, returns the request thread. """ all_params = ['tags'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -245,8 +303,12 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='list[Pet]', auth_settings=auth_settings) +======= + response='list[Pet]', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def get_pet_by_id(self, pet_id, **kwargs): @@ -254,9 +316,17 @@ class PetApi(object): Find pet by ID Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.get_pet_by_id(pet_id, callback=callback_function) + :param int pet_id: ID of pet that needs to be fetched (required) :return: Pet + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set @@ -264,6 +334,7 @@ class PetApi(object): raise ValueError("Missing the required parameter `pet_id` when calling `get_pet_by_id`") all_params = ['pet_id'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -302,8 +373,12 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='Pet', auth_settings=auth_settings) +======= + response='Pet', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def update_pet_with_form(self, pet_id, **kwargs): @@ -311,11 +386,19 @@ class PetApi(object): Updates a pet in the store with form data + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.update_pet_with_form(pet_id, callback=callback_function) + :param str pet_id: ID of pet that needs to be updated (required) :param str name: Updated name of the pet (optional) :param str status: Updated status of the pet (optional) :return: None + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set @@ -323,6 +406,7 @@ class PetApi(object): raise ValueError("Missing the required parameter `pet_id` when calling `update_pet_with_form`") all_params = ['pet_id', 'name', 'status'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -367,24 +451,46 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def delete_pet(self, pet_id, **kwargs): """ Deletes a pet +<<<<<<< HEAD +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.delete_pet(pet_id, callback=callback_function) + + :param str api_key: +>>>>>>> support asynchronous request in python client :param int pet_id: Pet id to delete (required) :param str api_key: (optional) :return: None + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set if pet_id is None: raise ValueError("Missing the required parameter `pet_id` when calling `delete_pet`") +<<<<<<< HEAD all_params = ['pet_id', 'api_key'] +======= + all_params = ['api_key', 'pet_id'] + all_params.append('callback') +>>>>>>> support asynchronous request in python client params = locals() for key, val in iteritems(params['kwargs']): @@ -426,18 +532,31 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def upload_file(self, pet_id, **kwargs): """ uploads an image + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.upload_file(pet_id, callback=callback_function) + :param int pet_id: ID of pet to update (required) :param str additional_metadata: Additional data to pass to server (optional) :param file file: file to upload (optional) :return: None + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set @@ -445,6 +564,7 @@ class PetApi(object): raise ValueError("Missing the required parameter `pet_id` when calling `upload_file`") all_params = ['pet_id', 'additional_metadata', 'file'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -489,7 +609,12 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client diff --git a/samples/client/petstore/python/swagger_client/apis/store_api.py b/samples/client/petstore/python/swagger_client/apis/store_api.py index 06775fdc860..a76fa5d3539 100644 --- a/samples/client/petstore/python/swagger_client/apis/store_api.py +++ b/samples/client/petstore/python/swagger_client/apis/store_api.py @@ -46,11 +46,20 @@ class StoreApi(object): Returns pet inventories by status Returns a map of status codes to quantities + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.get_inventory(callback=callback_function) + :return: dict(str, int) + If the method called asynchronously, returns the request thread. """ all_params = [] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -86,8 +95,12 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='dict(str, int)', auth_settings=auth_settings) +======= + response='dict(str, int)', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def place_order(self, **kwargs): @@ -95,12 +108,25 @@ class StoreApi(object): Place an order for a pet +<<<<<<< HEAD :param Order body: order placed for purchasing the pet (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.place_order(callback=callback_function) + + :param Order body: order placed for purchasing the pet +>>>>>>> support asynchronous request in python client :return: Order + If the method called asynchronously, returns the request thread. """ all_params = ['body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -139,8 +165,12 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='Order', auth_settings=auth_settings) +======= + response='Order', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def get_order_by_id(self, order_id, **kwargs): @@ -148,9 +178,17 @@ class StoreApi(object): Find purchase order by ID For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.get_order_by_id(order_id, callback=callback_function) + :param str order_id: ID of pet that needs to be fetched (required) :return: Order + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'order_id' is set @@ -158,6 +196,7 @@ class StoreApi(object): raise ValueError("Missing the required parameter `order_id` when calling `get_order_by_id`") all_params = ['order_id'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -196,8 +235,12 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='Order', auth_settings=auth_settings) +======= + response='Order', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def delete_order(self, order_id, **kwargs): @@ -205,9 +248,17 @@ class StoreApi(object): Delete purchase order by ID For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.delete_order(order_id, callback=callback_function) + :param str order_id: ID of the order that needs to be deleted (required) :return: None + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'order_id' is set @@ -215,6 +266,7 @@ class StoreApi(object): raise ValueError("Missing the required parameter `order_id` when calling `delete_order`") all_params = ['order_id'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -253,7 +305,12 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client diff --git a/samples/client/petstore/python/swagger_client/apis/user_api.py b/samples/client/petstore/python/swagger_client/apis/user_api.py index 8299a95c2a0..b3f5baf60b8 100644 --- a/samples/client/petstore/python/swagger_client/apis/user_api.py +++ b/samples/client/petstore/python/swagger_client/apis/user_api.py @@ -46,12 +46,25 @@ class UserApi(object): Create user This can only be done by the logged in user. +<<<<<<< HEAD :param User body: Created user object (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.create_user(callback=callback_function) + + :param User body: Created user object +>>>>>>> support asynchronous request in python client :return: None + If the method called asynchronously, returns the request thread. """ all_params = ['body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -90,19 +103,37 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def create_users_with_array_input(self, **kwargs): """ Creates list of users with given input array +<<<<<<< HEAD :param list[User] body: List of user object (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.create_users_with_array_input(callback=callback_function) + + :param list[User] body: List of user object +>>>>>>> support asynchronous request in python client :return: None + If the method called asynchronously, returns the request thread. """ all_params = ['body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -141,19 +172,37 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def create_users_with_list_input(self, **kwargs): """ Creates list of users with given input array +<<<<<<< HEAD :param list[User] body: List of user object (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.create_users_with_list_input(callback=callback_function) + + :param list[User] body: List of user object +>>>>>>> support asynchronous request in python client :return: None + If the method called asynchronously, returns the request thread. """ all_params = ['body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -192,20 +241,39 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def login_user(self, **kwargs): """ Logs user into the system +<<<<<<< HEAD :param str username: The user name for login (optional) :param str password: The password for login in clear text (optional) +======= + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.login_user(callback=callback_function) + + :param str username: The user name for login + :param str password: The password for login in clear text +>>>>>>> support asynchronous request in python client :return: str + If the method called asynchronously, returns the request thread. """ all_params = ['username', 'password'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -247,8 +315,12 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='str', auth_settings=auth_settings) +======= + response='str', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def logout_user(self, **kwargs): @@ -256,11 +328,20 @@ class UserApi(object): Logs out current logged in user session + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.logout_user(callback=callback_function) + :return: None + If the method called asynchronously, returns the request thread. """ all_params = [] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -296,16 +377,29 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def get_user_by_name(self, username, **kwargs): """ Get user by user name + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.get_user_by_name(username, callback=callback_function) + :param str username: The name that needs to be fetched. Use user1 for testing. (required) :return: User + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'username' is set @@ -313,6 +407,7 @@ class UserApi(object): raise ValueError("Missing the required parameter `username` when calling `get_user_by_name`") all_params = ['username'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -351,8 +446,12 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type='User', auth_settings=auth_settings) +======= + response='User', auth_settings=auth_settings, callback=params.get('callback')) +>>>>>>> support asynchronous request in python client return response def update_user(self, username, **kwargs): @@ -360,10 +459,18 @@ class UserApi(object): Updated user This can only be done by the logged in user. + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.update_user(username, callback=callback_function) + :param str username: name that need to be deleted (required) :param User body: Updated user object (optional) :return: None + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'username' is set @@ -371,6 +478,7 @@ class UserApi(object): raise ValueError("Missing the required parameter `username` when calling `update_user`") all_params = ['username', 'body'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -412,16 +520,29 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client def delete_user(self, username, **kwargs): """ Delete user This can only be done by the logged in user. + SDK also supports asynchronous requests in which you can define a `callback` function + to be passed along and invoked when recives response: + >>> def callback_function(response): + >>> pprint(response) + >>> + >>> thread = api.delete_user(username, callback=callback_function) + :param str username: The name that needs to be deleted (required) :return: None + If the method called asynchronously, returns the request thread. """ # verify the required parameter 'username' is set @@ -429,6 +550,7 @@ class UserApi(object): raise ValueError("Missing the required parameter `username` when calling `delete_user`") all_params = ['username'] + all_params.append('callback') params = locals() for key, val in iteritems(params['kwargs']): @@ -467,7 +589,12 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, +<<<<<<< HEAD response_type=None, auth_settings=auth_settings) +======= + response=None, auth_settings=auth_settings, callback=params.get('callback')) + return response +>>>>>>> support asynchronous request in python client diff --git a/samples/client/petstore/python/tests/test_pet_api.py b/samples/client/petstore/python/tests/test_pet_api.py index 5397c0b50ef..f78a301a9dc 100644 --- a/samples/client/petstore/python/tests/test_pet_api.py +++ b/samples/client/petstore/python/tests/test_pet_api.py @@ -68,6 +68,25 @@ class PetApiTests(unittest.TestCase): self.assertNotEqual(pet_api3.api_client, swagger_client.configuration.api_client) # customized pet api not using the old pet api's api client self.assertNotEqual(pet_api3.api_client, pet_api2.api_client) + + def test_async_request(self): + self.pet_api.add_pet(body=self.pet) + + def callback_function(data): + self.assertIsNotNone(data) + self.assertEqual(data.id, self.pet.id) + self.assertEqual(data.name, self.pet.name) + self.assertIsNotNone(data.category) + self.assertEqual(data.category.id, self.pet.category.id) + self.assertEqual(data.category.name, self.pet.category.name) + self.assertTrue(isinstance(data.tags, list)) + self.assertEqual(data.tags[0].id, self.pet.tags[0].id) + self.assertEqual(data.tags[0].name, self.pet.tags[0].name) + + thread = self.pet_api.get_pet_by_id(pet_id=self.pet.id, callback=callback_function) + thread.join(10) + if thread.isAlive(): + self.fail("Request timeout") def test_add_pet_and_get_pet_by_id(self): self.pet_api.add_pet(body=self.pet) From 0e8cf70dc4f4248b9404a237a0707895e55821cb Mon Sep 17 00:00:00 2001 From: geekerzp Date: Thu, 2 Jul 2015 15:13:54 +0800 Subject: [PATCH 03/22] Fix typo --- .../src/main/resources/python/api.mustache | 5 ++- .../python/swagger_client/apis/pet_api.py | 40 +++++++++++-------- .../python/swagger_client/apis/store_api.py | 20 ++++++---- .../python/swagger_client/apis/user_api.py | 40 +++++++++++-------- 4 files changed, 63 insertions(+), 42 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/python/api.mustache b/modules/swagger-codegen/src/main/resources/python/api.mustache index 4ed4e8e5608..4ce4e76629a 100644 --- a/modules/swagger-codegen/src/main/resources/python/api.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api.mustache @@ -48,16 +48,17 @@ class {{classname}}(object): {{{notes}}} SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.{{nickname}}({{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) {{#allParams}}:param {{dataType}} {{paramName}}: {{{description}}} {{#required}}(required){{/required}}{{#optional}}(optional){{/optional}} {{/allParams}} :return: {{#returnType}}{{returnType}}{{/returnType}}{{^returnType}}None{{/returnType}} - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ {{#allParams}}{{#required}} # verify the required parameter '{{paramName}}' is set diff --git a/samples/client/petstore/python/swagger_client/apis/pet_api.py b/samples/client/petstore/python/swagger_client/apis/pet_api.py index eb34eb9dd10..e780fa326b1 100644 --- a/samples/client/petstore/python/swagger_client/apis/pet_api.py +++ b/samples/client/petstore/python/swagger_client/apis/pet_api.py @@ -47,16 +47,17 @@ class PetApi(object): SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.update_pet(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param Pet body: Pet object that needs to be added to the store :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['body'] @@ -111,17 +112,18 @@ class PetApi(object): :param Pet body: Pet object that needs to be added to the store (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.add_pet(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param Pet body: Pet object that needs to be added to the store >>>>>>> support asynchronous request in python client :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['body'] @@ -180,17 +182,18 @@ class PetApi(object): :param list[str] status: Status values that need to be considered for filter (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.find_pets_by_status(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param list[str] status: Status values that need to be considered for filter >>>>>>> support asynchronous request in python client :return: list[Pet] - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['status'] @@ -250,17 +253,18 @@ class PetApi(object): :param list[str] tags: Tags to filter by (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.find_pets_by_tags(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param list[str] tags: Tags to filter by >>>>>>> support asynchronous request in python client :return: list[Pet] - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['tags'] @@ -317,16 +321,17 @@ class PetApi(object): Returns a pet when ID < 10. ID > 10 or nonintegers will simulate API error conditions SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.get_pet_by_id(pet_id, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param int pet_id: ID of pet that needs to be fetched (required) :return: Pet - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set @@ -387,18 +392,19 @@ class PetApi(object): SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.update_pet_with_form(pet_id, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str pet_id: ID of pet that needs to be updated (required) :param str name: Updated name of the pet (optional) :param str status: Updated status of the pet (optional) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set @@ -466,19 +472,20 @@ class PetApi(object): <<<<<<< HEAD ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.delete_pet(pet_id, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str api_key: >>>>>>> support asynchronous request in python client :param int pet_id: Pet id to delete (required) :param str api_key: (optional) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set @@ -545,18 +552,19 @@ class PetApi(object): SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.upload_file(pet_id, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param int pet_id: ID of pet to update (required) :param str additional_metadata: Additional data to pass to server (optional) :param file file: file to upload (optional) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'pet_id' is set diff --git a/samples/client/petstore/python/swagger_client/apis/store_api.py b/samples/client/petstore/python/swagger_client/apis/store_api.py index a76fa5d3539..87c90e7b65d 100644 --- a/samples/client/petstore/python/swagger_client/apis/store_api.py +++ b/samples/client/petstore/python/swagger_client/apis/store_api.py @@ -47,15 +47,16 @@ class StoreApi(object): Returns a map of status codes to quantities SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.get_inventory(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :return: dict(str, int) - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = [] @@ -112,17 +113,18 @@ class StoreApi(object): :param Order body: order placed for purchasing the pet (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.place_order(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param Order body: order placed for purchasing the pet >>>>>>> support asynchronous request in python client :return: Order - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['body'] @@ -179,16 +181,17 @@ class StoreApi(object): For valid response try integer IDs with value <= 5 or > 10. Other values will generated exceptions SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.get_order_by_id(order_id, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str order_id: ID of pet that needs to be fetched (required) :return: Order - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'order_id' is set @@ -249,16 +252,17 @@ class StoreApi(object): For valid response try integer IDs with value < 1000. Anything above 1000 or nonintegers will generate API errors SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.delete_order(order_id, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str order_id: ID of the order that needs to be deleted (required) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'order_id' is set diff --git a/samples/client/petstore/python/swagger_client/apis/user_api.py b/samples/client/petstore/python/swagger_client/apis/user_api.py index b3f5baf60b8..36e80efb67e 100644 --- a/samples/client/petstore/python/swagger_client/apis/user_api.py +++ b/samples/client/petstore/python/swagger_client/apis/user_api.py @@ -50,17 +50,18 @@ class UserApi(object): :param User body: Created user object (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.create_user(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param User body: Created user object >>>>>>> support asynchronous request in python client :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['body'] @@ -119,17 +120,18 @@ class UserApi(object): :param list[User] body: List of user object (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.create_users_with_array_input(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param list[User] body: List of user object >>>>>>> support asynchronous request in python client :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['body'] @@ -188,17 +190,18 @@ class UserApi(object): :param list[User] body: List of user object (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.create_users_with_list_input(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param list[User] body: List of user object >>>>>>> support asynchronous request in python client :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['body'] @@ -258,18 +261,19 @@ class UserApi(object): :param str password: The password for login in clear text (optional) ======= SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.login_user(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str username: The user name for login :param str password: The password for login in clear text >>>>>>> support asynchronous request in python client :return: str - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = ['username', 'password'] @@ -329,15 +333,16 @@ class UserApi(object): SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.logout_user(callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ all_params = [] @@ -390,16 +395,17 @@ class UserApi(object): SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.get_user_by_name(username, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str username: The name that needs to be fetched. Use user1 for testing. (required) :return: User - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'username' is set @@ -460,17 +466,18 @@ class UserApi(object): This can only be done by the logged in user. SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.update_user(username, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str username: name that need to be deleted (required) :param User body: Updated user object (optional) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'username' is set @@ -533,16 +540,17 @@ class UserApi(object): This can only be done by the logged in user. SDK also supports asynchronous requests in which you can define a `callback` function - to be passed along and invoked when recives response: + to be passed along and invoked when receiving response: >>> def callback_function(response): >>> pprint(response) >>> >>> thread = api.delete_user(username, callback=callback_function) + :param callback function: The callback function for asynchronous request. (optional) :param str username: The name that needs to be deleted (required) :return: None - If the method called asynchronously, returns the request thread. + If the method is called asynchronously, returns the request thread. """ # verify the required parameter 'username' is set From d97b0984cb10107de9f74db4ff0c90927dcc8859 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Thu, 2 Jul 2015 15:43:05 +0800 Subject: [PATCH 04/22] Update ApiClient of python client. Add docstring for method call_api. --- .../main/resources/python/api_client.mustache | 21 +++++++++++++++++++ .../python/swagger_client/api_client.py | 21 +++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index 95f727ff374..4ed65ede697 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -222,6 +222,27 @@ class ApiClient(object): path_params=None, query_params=None, header_params=None, body=None, post_params=None, files=None, response=None, auth_settings=None, callback=None): + """ + Perform http request and return deserialized data + + + :param resource_path: Path to method endpoint. + :param method: Method to call. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param response: Response data type. + :param files dict: key -> filename, value -> filepath, for `multipart/form-data`. + :param callback function: Callback function for asynchronous request. + If provide this parameter, the request will be called asynchronously. + :return: + If provide parameter callback, the request will be called asynchronously. + The method will return the request thread. + If parameter callback is None, then the method will return the response directly. + """ if callback is None: return self.__call_api(resource_path, method, path_params, query_params, header_params, diff --git a/samples/client/petstore/python/swagger_client/api_client.py b/samples/client/petstore/python/swagger_client/api_client.py index 57abdb847e2..7afe93f01d4 100644 --- a/samples/client/petstore/python/swagger_client/api_client.py +++ b/samples/client/petstore/python/swagger_client/api_client.py @@ -222,6 +222,27 @@ class ApiClient(object): path_params=None, query_params=None, header_params=None, body=None, post_params=None, files=None, response=None, auth_settings=None, callback=None): + """ + Perform http request and return deserialized data + + + :param resource_path: Path to method endpoint. + :param method: Method to call. + :param path_params: Path parameters in the url. + :param query_params: Query parameters in the url. + :param header_params: Header parameters to be placed in the request header. + :param body: Request body. + :param post_params dict: Request post form parameters, for `application/x-www-form-urlencoded`, `multipart/form-data`. + :param auth_settings list: Auth Settings names for the request. + :param response: Response data type. + :param files dict: key -> filename, value -> filepath, for `multipart/form-data`. + :param callback function: Callback function for asynchronous request. + If provide this parameter, the request will be called asynchronously. + :return: + If provide parameter callback, the request will be called asynchronously. + The method will return the request thread. + If parameter callback is None, then the method will return the response directly. + """ if callback is None: return self.__call_api(resource_path, method, path_params, query_params, header_params, From 8a3c64aa411273a6a945fea698726d6faba86426 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Thu, 9 Jul 2015 10:11:25 +0800 Subject: [PATCH 05/22] Add logging and debug report for python client. --- .../resources/python/configuration.mustache | 25 +++++++++++++++++++ .../src/main/resources/python/rest.mustache | 13 ++++++++++ .../python/swagger_client/configuration.py | 24 ++++++++++++++++++ .../petstore/python/swagger_client/rest.py | 16 ++++++++++++ 4 files changed, 78 insertions(+) diff --git a/modules/swagger-codegen/src/main/resources/python/configuration.mustache b/modules/swagger-codegen/src/main/resources/python/configuration.mustache index 2dd1045307f..a8065705fb4 100644 --- a/modules/swagger-codegen/src/main/resources/python/configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/python/configuration.mustache @@ -1,6 +1,9 @@ from __future__ import absolute_import import base64 import urllib3 +import httplib +import sys +import logging def get_api_key_with_prefix(key): global api_key @@ -11,6 +14,22 @@ def get_api_key_with_prefix(key): elif api_key.get(key): return api_key[key] +def setting_logging_enabled(): + global logging_file + format = '%(asctime)s %(levelname)s %(message)s' + if logging_file: + logging.basicConfig(filename=logging_file, level=logging.DEBUG, format=format) + else: + logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format=format) + httplib.HTTPConnection.debuglevel = 1 + +def to_debug_report(): + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: {{version}}\n"\ + "SDK Package Version: {{packageVersion}}".format(env=sys.platform, pyversion=sys.version) + def get_basic_auth_token(): global username global password @@ -50,3 +69,9 @@ password = '' # Temp foloder for file download temp_folder_path = None + +# Logging settings +logging_file = None + + + diff --git a/modules/swagger-codegen/src/main/resources/python/rest.mustache b/modules/swagger-codegen/src/main/resources/python/rest.mustache index 25cf702766e..a5290d7225a 100644 --- a/modules/swagger-codegen/src/main/resources/python/rest.mustache +++ b/modules/swagger-codegen/src/main/resources/python/rest.mustache @@ -10,6 +10,7 @@ import io import json import ssl import certifi +import logging # python 2 and python 3 compatibility library from six import iteritems @@ -27,6 +28,9 @@ except ImportError: from urllib import urlencode +logger = logging.getLogger(__name__) + + class RESTResponse(io.IOBase): def __init__(self, resp): @@ -125,6 +129,15 @@ class RESTClientObject(object): headers=headers) r = RESTResponse(r) + # log response body + logger.debug("response body: %s" % r.data) + + if r.status not in range(200, 206): + raise ApiException(r) + + return self.process_response(r) + + def process_response(self, response): # In the python 3, the response.data is bytes. # we need to decode it to string. if sys.version_info > (3,): diff --git a/samples/client/petstore/python/swagger_client/configuration.py b/samples/client/petstore/python/swagger_client/configuration.py index 7b6f4023914..2ae779e5b22 100644 --- a/samples/client/petstore/python/swagger_client/configuration.py +++ b/samples/client/petstore/python/swagger_client/configuration.py @@ -1,6 +1,9 @@ from __future__ import absolute_import import base64 import urllib3 +import httplib +import sys +import logging def get_api_key_with_prefix(key): global api_key @@ -11,6 +14,22 @@ def get_api_key_with_prefix(key): elif api_key.get(key): return api_key[key] +def setting_logging_enabled(): + global logging_file + format = '%(asctime)s %(levelname)s %(message)s' + if logging_file: + logging.basicConfig(filename=logging_file, level=logging.DEBUG, format=format) + else: + logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format=format) + httplib.HTTPConnection.debuglevel = 1 + +def to_debug_report(): + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: 1.0.0\n"\ + "SDK Package Version: 1.0.0".format(env=sys.platform, pyversion=sys.version) + def get_basic_auth_token(): global username global password @@ -41,5 +60,10 @@ api_key_prefix = {} username = '' password = '' +<<<<<<< HEAD # Temp foloder for file download temp_folder_path = None +======= +# Logging settings +logging_file = None +>>>>>>> Add logging and debug report for python client. diff --git a/samples/client/petstore/python/swagger_client/rest.py b/samples/client/petstore/python/swagger_client/rest.py index 25cf702766e..2759e754fd2 100644 --- a/samples/client/petstore/python/swagger_client/rest.py +++ b/samples/client/petstore/python/swagger_client/rest.py @@ -10,6 +10,7 @@ import io import json import ssl import certifi +import logging # python 2 and python 3 compatibility library from six import iteritems @@ -27,6 +28,9 @@ except ImportError: from urllib import urlencode +logger = logging.getLogger(__name__) + + class RESTResponse(io.IOBase): def __init__(self, resp): @@ -125,6 +129,18 @@ class RESTClientObject(object): headers=headers) r = RESTResponse(r) +<<<<<<< HEAD +======= + # log response body + logger.debug("response body: %s" % r.data) + + if r.status not in range(200, 206): + raise ApiException(r) + + return self.process_response(r) + + def process_response(self, response): +>>>>>>> Add logging and debug report for python client. # In the python 3, the response.data is bytes. # we need to decode it to string. if sys.version_info > (3,): From b42ead3c0f4d533bb08cb8e9448189c68af3ce1c Mon Sep 17 00:00:00 2001 From: geekerzp Date: Fri, 10 Jul 2015 11:29:42 +0800 Subject: [PATCH 06/22] Replace `urllib3.util.url.parse_url` with `urllib3.util.parse_url` --- modules/swagger-codegen/src/main/resources/python/rest.mustache | 2 +- samples/client/petstore/python/swagger_client/rest.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/python/rest.mustache b/modules/swagger-codegen/src/main/resources/python/rest.mustache index a5290d7225a..5d8a47c2207 100644 --- a/modules/swagger-codegen/src/main/resources/python/rest.mustache +++ b/modules/swagger-codegen/src/main/resources/python/rest.mustache @@ -71,7 +71,7 @@ class RESTClientObject(object): """ Return proper pool manager for the http\https schemes. """ - url = urllib3.util.url.parse_url(url) + url = urllib3.util.parse_url(url) scheme = url.scheme if scheme == 'https': return self.ssl_pool_manager diff --git a/samples/client/petstore/python/swagger_client/rest.py b/samples/client/petstore/python/swagger_client/rest.py index 2759e754fd2..3b186181008 100644 --- a/samples/client/petstore/python/swagger_client/rest.py +++ b/samples/client/petstore/python/swagger_client/rest.py @@ -71,7 +71,7 @@ class RESTClientObject(object): """ Return proper pool manager for the http\https schemes. """ - url = urllib3.util.url.parse_url(url) + url = urllib3.util.parse_url(url) scheme = url.scheme if scheme == 'https': return self.ssl_pool_manager From 517717958d1c2ee20243e495a16c3c6501213ef4 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Fri, 10 Jul 2015 12:10:58 +0800 Subject: [PATCH 07/22] Update doc string of RESTClientObject#agent method of python client --- .../swagger-codegen/src/main/resources/python/rest.mustache | 3 ++- samples/client/petstore/python/swagger_client/rest.py | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/python/rest.mustache b/modules/swagger-codegen/src/main/resources/python/rest.mustache index 5d8a47c2207..fcefdac0a7c 100644 --- a/modules/swagger-codegen/src/main/resources/python/rest.mustache +++ b/modules/swagger-codegen/src/main/resources/python/rest.mustache @@ -69,7 +69,8 @@ class RESTClientObject(object): def agent(self, url): """ - Return proper pool manager for the http\https schemes. + Use `urllib3.util.parse_url` for backward compatibility. + Return proper pool manager for the http/https schemes. """ url = urllib3.util.parse_url(url) scheme = url.scheme diff --git a/samples/client/petstore/python/swagger_client/rest.py b/samples/client/petstore/python/swagger_client/rest.py index 3b186181008..50c41fc4e0d 100644 --- a/samples/client/petstore/python/swagger_client/rest.py +++ b/samples/client/petstore/python/swagger_client/rest.py @@ -69,7 +69,8 @@ class RESTClientObject(object): def agent(self, url): """ - Return proper pool manager for the http\https schemes. + Use `urllib3.util.parse_url` for backward compatibility. + Return proper pool manager for the http/https schemes. """ url = urllib3.util.parse_url(url) scheme = url.scheme From 4d302683f341b04792cf8a1558e79c7ed9c6a2ee Mon Sep 17 00:00:00 2001 From: geekerzp Date: Sat, 11 Jul 2015 11:52:12 +0800 Subject: [PATCH 08/22] Update logging of python client --- .../resources/python/__init__package.mustache | 4 + .../src/main/resources/python/api.mustache | 20 +-- .../main/resources/python/api_client.mustache | 16 +- .../resources/python/configuration.mustache | 158 +++++++++++------- .../src/main/resources/python/rest.mustache | 12 +- .../python/swagger_client/__init__.py | 4 + .../python/swagger_client/api_client.py | 20 ++- .../python/swagger_client/apis/pet_api.py | 95 ++--------- .../python/swagger_client/apis/store_api.py | 49 +----- .../python/swagger_client/apis/user_api.py | 87 ++-------- .../python/swagger_client/configuration.py | 149 +++++++++++------ .../petstore/python/swagger_client/rest.py | 15 +- 12 files changed, 279 insertions(+), 350 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/python/__init__package.mustache b/modules/swagger-codegen/src/main/resources/python/__init__package.mustache index 921f4dac0eb..76b4fcedd45 100644 --- a/modules/swagger-codegen/src/main/resources/python/__init__package.mustache +++ b/modules/swagger-codegen/src/main/resources/python/__init__package.mustache @@ -8,3 +8,7 @@ from __future__ import absolute_import {{/apis}}{{/apiInfo}} # import ApiClient from .api_client import ApiClient + +from .configuration import Configuration + +configuration = Configuration() diff --git a/modules/swagger-codegen/src/main/resources/python/api.mustache b/modules/swagger-codegen/src/main/resources/python/api.mustache index 4ce4e76629a..11c96b5b622 100644 --- a/modules/swagger-codegen/src/main/resources/python/api.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api.mustache @@ -27,19 +27,20 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from .. import configuration +from ..configuration import Configuration from ..api_client import ApiClient {{#operations}} class {{classname}}(object): def __init__(self, api_client=None): + config = Configuration() if api_client: self.api_client = api_client else: - if not configuration.api_client: - configuration.api_client = ApiClient('{{basePath}}') - self.api_client = configuration.api_client + if not config.api_client: + config.api_client = ApiClient('{{basePath}}') + self.api_client = config.api_client {{#operation}} def {{nickname}}(self, {{#allParams}}{{#required}}{{paramName}}, {{/required}}{{/allParams}}**kwargs): @@ -117,16 +118,7 @@ class {{classname}}(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, - response={{#returnType}}'{{returnType}}'{{/returnType}}{{^returnType}}None{{/returnType}}, auth_settings=auth_settings, callback=params.get('callback')) + response_type={{#returnType}}'{{returnType}}'{{/returnType}}{{^returnType}}None{{/returnType}}, auth_settings=auth_settings, callback=params.get('callback')) return response {{/operation}} {{/operations}} - - - - - - - - - diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index 4ed65ede697..a4e4a69b85d 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -31,7 +31,7 @@ except ImportError: # for python2 from urllib import quote -from . import configuration +from .configuration import Configuration class ApiClient(object): """ @@ -41,7 +41,7 @@ class ApiClient(object): :param header_name: a header to pass when making calls to the API :param header_value: a header value to pass when making calls to the API """ - def __init__(self, host=configuration.host, header_name=None, header_value=None): + def __init__(self, host=Configuration().host, header_name=None, header_value=None): self.default_headers = {} if header_name is not None: self.default_headers[header_name] = header_value @@ -62,7 +62,7 @@ class ApiClient(object): self.default_headers[header_name] = header_value def __call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, - body=None, post_params=None, files=None, response=None, auth_settings=None, callback=None): + body=None, post_params=None, files=None, response_type=None, auth_settings=None, callback=None): # headers parameters header_params = header_params or {} @@ -221,7 +221,7 @@ class ApiClient(object): def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, body=None, post_params=None, files=None, - response=None, auth_settings=None, callback=None): + response_type=None, auth_settings=None, callback=None): """ Perform http request and return deserialized data @@ -247,13 +247,13 @@ class ApiClient(object): return self.__call_api(resource_path, method, path_params, query_params, header_params, body, post_params, files, - response, auth_settings, callback) + response_type, auth_settings, callback) else: thread = threading.Thread(target=self.__call_api, args=(resource_path, method, path_params, query_params, header_params, body, post_params, files, - response, auth_settings, callback)) + response_type, auth_settings, callback)) thread.start() return thread @@ -326,11 +326,13 @@ class ApiClient(object): """ Update header and query params based on authentication setting """ + config = Configuration() + if not auth_settings: return for auth in auth_settings: - auth_setting = configuration.auth_settings().get(auth) + auth_setting = config.auth_settings().get(auth) if auth_setting: if auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] diff --git a/modules/swagger-codegen/src/main/resources/python/configuration.mustache b/modules/swagger-codegen/src/main/resources/python/configuration.mustache index a8065705fb4..0feb7af5d59 100644 --- a/modules/swagger-codegen/src/main/resources/python/configuration.mustache +++ b/modules/swagger-codegen/src/main/resources/python/configuration.mustache @@ -5,73 +5,117 @@ import httplib import sys import logging -def get_api_key_with_prefix(key): - global api_key - global api_key_prefix +def singleton(cls, *args, **kw): + instances = {} - if api_key.get(key) and api_key_prefix.get(key): - return api_key_prefix[key] + ' ' + api_key[key] - elif api_key.get(key): - return api_key[key] + def _singleton(): + if cls not in instances: + instances[cls] = cls(*args, **kw) + return instances[cls] + return _singleton -def setting_logging_enabled(): - global logging_file - format = '%(asctime)s %(levelname)s %(message)s' - if logging_file: - logging.basicConfig(filename=logging_file, level=logging.DEBUG, format=format) - else: - logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format=format) - httplib.HTTPConnection.debuglevel = 1 -def to_debug_report(): - return "Python SDK Debug Report:\n"\ - "OS: {env}\n"\ - "Python Version: {pyversion}\n"\ - "Version of the API: {{version}}\n"\ - "SDK Package Version: {{packageVersion}}".format(env=sys.platform, pyversion=sys.version) +@singleton +class Configuration(object): -def get_basic_auth_token(): - global username - global password + def __init__(self): + # Default Base url + self.host = "{{basePath}}" + # Default api client + self.api_client = None + # Authentication Settings + self.api_key = {} + self.api_key_prefix = {} + self.username = "" + self.password = "" + # Logging Settings + self.logging_format = '%(asctime)s %(levelname)s %(message)s' + self.__logging_file = None + self.__debug = False + self.init_logger() - return urllib3.util.make_headers(basic_auth=username + ':' + password).get('authorization') + def init_logger(self): + self.logger = logging.getLogger() + formatter = logging.Formatter(self.logging_format) + stream_handler = logging.StreamHandler() + stream_handler.setFormatter(formatter) + self.logger.addHandler(stream_handler) + if self.__debug: + self.logger.setLevel(logging.DEBUG) + else: + self.logger.setLevel(logging.WARNING) + if self.__logging_file: + file_handler = logging.FileHandler(self.__logging_file) + file_handler.setFormatter(formatter) + self.logger.addFilter(file_handler) -def auth_settings(): - return { {{#authMethods}}{{#isApiKey}} - '{{name}}': { - 'type': 'api_key', - 'in': {{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}, - 'key': '{{keyParamName}}', - 'value': get_api_key_with_prefix('{{keyParamName}}') - }, - {{/isApiKey}}{{#isBasic}} - '{{name}}': { - 'type': 'basic', - 'in': 'header', - 'key': 'Authorization', - 'value': get_basic_auth_token() - }, - {{/isBasic}}{{/authMethods}} - } + @property + def logging_file(self): + return self.__logging_file -# Default Base url -host = "{{basePath}}" + @logging_file.setter + def logging_file(self, value): + self.__logging_file = value + if self.__logging_file: + formater = logging.Formatter(self.logging_format) + file_handler = logging.FileHandler(self.__logging_file) + file_handler.setFormatter(formater) + self.logger.addHandler(file_handler) -# Default api client -api_client = None - -# Authentication settings + @property + def debug(self): + return self.__debug -api_key = {} -api_key_prefix = {} -username = '' -password = '' + @debug.setter + def debug(self, value): + self.__debug = value + if self.__debug: + # if debug status is True, turn on debug logging + self.logger.setLevel(logging.DEBUG) + # turn on httplib debug + httplib.HTTPConnection.debuglevel = 1 + else: + # if debug status is False, turn off debug logging, + # setting log level to default `logging.WARNING` + self.logger.setLevel(logging.WARNING) -# Temp foloder for file download -temp_folder_path = None - -# Logging settings -logging_file = None + def get_api_key_with_prefix(self, key): + """ Return api key prepend prefix for key """ + if self.api_key.get(key) and self.api_key_prefix.get(key): + return self.api_key_prefix[key] + ' ' + self.api_key[key] + elif self.api_key.get(key): + return self.api_key[key] + + def get_basic_auth_token(self): + """ Return basic auth header string """ + return urllib3.util.make_headers(basic_auth=self.username + ':' + self.password)\ + .get('authorization') + + def auth_settings(self): + """ Return Auth Settings for api client """ + return { {{#authMethods}}{{#isApiKey}} + '{{name}}': { + 'type': 'api_key', + 'in': {{#isKeyInHeader}}'header'{{/isKeyInHeader}}{{#isKeyInQuery}}'query'{{/isKeyInQuery}}, + 'key': '{{keyParamName}}', + 'value': self.get_api_key_with_prefix('{{keyParamName}}') + }, + {{/isApiKey}}{{#isBasic}} + '{{name}}': { + 'type': 'basic', + 'in': 'header', + 'key': 'Authorization', + 'value': self.get_basic_auth_token() + }, + {{/isBasic}}{{/authMethods}} + } + + def to_debug_report(self): + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: {{version}}\n"\ + "SDK Package Version: {{packageVersion}}".format(env=sys.platform, pyversion=sys.version) diff --git a/modules/swagger-codegen/src/main/resources/python/rest.mustache b/modules/swagger-codegen/src/main/resources/python/rest.mustache index fcefdac0a7c..7cf08f50429 100644 --- a/modules/swagger-codegen/src/main/resources/python/rest.mustache +++ b/modules/swagger-codegen/src/main/resources/python/rest.mustache @@ -130,20 +130,14 @@ class RESTClientObject(object): headers=headers) r = RESTResponse(r) - # log response body - logger.debug("response body: %s" % r.data) - - if r.status not in range(200, 206): - raise ApiException(r) - - return self.process_response(r) - - def process_response(self, response): # In the python 3, the response.data is bytes. # we need to decode it to string. if sys.version_info > (3,): r.data = r.data.decode('utf8') + # log response body + logger.debug("response body: %s" % r.data) + if r.status not in range(200, 206): raise ApiException(http_resp=r) diff --git a/samples/client/petstore/python/swagger_client/__init__.py b/samples/client/petstore/python/swagger_client/__init__.py index 3e7b51b8467..f61c5d55262 100644 --- a/samples/client/petstore/python/swagger_client/__init__.py +++ b/samples/client/petstore/python/swagger_client/__init__.py @@ -14,3 +14,7 @@ from .apis.store_api import StoreApi # import ApiClient from .api_client import ApiClient + +from .configuration import Configuration + +configuration = Configuration() diff --git a/samples/client/petstore/python/swagger_client/api_client.py b/samples/client/petstore/python/swagger_client/api_client.py index 7afe93f01d4..a4e4a69b85d 100644 --- a/samples/client/petstore/python/swagger_client/api_client.py +++ b/samples/client/petstore/python/swagger_client/api_client.py @@ -31,7 +31,7 @@ except ImportError: # for python2 from urllib import quote -from . import configuration +from .configuration import Configuration class ApiClient(object): """ @@ -41,7 +41,7 @@ class ApiClient(object): :param header_name: a header to pass when making calls to the API :param header_value: a header value to pass when making calls to the API """ - def __init__(self, host=configuration.host, header_name=None, header_value=None): + def __init__(self, host=Configuration().host, header_name=None, header_value=None): self.default_headers = {} if header_name is not None: self.default_headers[header_name] = header_value @@ -62,7 +62,7 @@ class ApiClient(object): self.default_headers[header_name] = header_value def __call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, - body=None, post_params=None, files=None, response=None, auth_settings=None, callback=None): + body=None, post_params=None, files=None, response_type=None, auth_settings=None, callback=None): # headers parameters header_params = header_params or {} @@ -106,8 +106,8 @@ class ApiClient(object): self.last_response = response_data # deserialize response data - if response: - deserialized_data = self.deserialize(response_data, response) + if response_type: + deserialized_data = self.deserialize(response_data, response_type) else: deserialized_data = None @@ -221,7 +221,7 @@ class ApiClient(object): def call_api(self, resource_path, method, path_params=None, query_params=None, header_params=None, body=None, post_params=None, files=None, - response=None, auth_settings=None, callback=None): + response_type=None, auth_settings=None, callback=None): """ Perform http request and return deserialized data @@ -247,13 +247,13 @@ class ApiClient(object): return self.__call_api(resource_path, method, path_params, query_params, header_params, body, post_params, files, - response, auth_settings, callback) + response_type, auth_settings, callback) else: thread = threading.Thread(target=self.__call_api, args=(resource_path, method, path_params, query_params, header_params, body, post_params, files, - response, auth_settings, callback)) + response_type, auth_settings, callback)) thread.start() return thread @@ -326,11 +326,13 @@ class ApiClient(object): """ Update header and query params based on authentication setting """ + config = Configuration() + if not auth_settings: return for auth in auth_settings: - auth_setting = configuration.auth_settings().get(auth) + auth_setting = config.auth_settings().get(auth) if auth_setting: if auth_setting['in'] == 'header': headers[auth_setting['key']] = auth_setting['value'] diff --git a/samples/client/petstore/python/swagger_client/apis/pet_api.py b/samples/client/petstore/python/swagger_client/apis/pet_api.py index e780fa326b1..7c43a72077e 100644 --- a/samples/client/petstore/python/swagger_client/apis/pet_api.py +++ b/samples/client/petstore/python/swagger_client/apis/pet_api.py @@ -27,18 +27,19 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from .. import configuration +from ..configuration import Configuration from ..api_client import ApiClient class PetApi(object): def __init__(self, api_client=None): + config = Configuration() if api_client: self.api_client = api_client else: - if not configuration.api_client: - configuration.api_client = ApiClient('http://petstore.swagger.io/v2') - self.api_client = configuration.api_client + if not config.api_client: + config.api_client = ApiClient('http://petstore.swagger.io/v2') + self.api_client = config.api_client def update_pet(self, **kwargs): @@ -100,7 +101,7 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response def add_pet(self, **kwargs): @@ -108,9 +109,6 @@ class PetApi(object): Add a new pet to the store -<<<<<<< HEAD - :param Pet body: Pet object that needs to be added to the store (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -120,7 +118,6 @@ class PetApi(object): :param callback function: The callback function for asynchronous request. (optional) :param Pet body: Pet object that needs to be added to the store ->>>>>>> support asynchronous request in python client :return: None If the method is called asynchronously, returns the request thread. @@ -166,21 +163,14 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def find_pets_by_status(self, **kwargs): """ Finds Pets by status Multiple status values can be provided with comma seperated strings -<<<<<<< HEAD - :param list[str] status: Status values that need to be considered for filter (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -190,7 +180,6 @@ class PetApi(object): :param callback function: The callback function for asynchronous request. (optional) :param list[str] status: Status values that need to be considered for filter ->>>>>>> support asynchronous request in python client :return: list[Pet] If the method is called asynchronously, returns the request thread. @@ -236,12 +225,7 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='list[Pet]', auth_settings=auth_settings) - -======= - response='list[Pet]', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='list[Pet]', auth_settings=auth_settings, callback=params.get('callback')) return response def find_pets_by_tags(self, **kwargs): @@ -249,9 +233,6 @@ class PetApi(object): Finds Pets by tags Muliple tags can be provided with comma seperated strings. Use tag1, tag2, tag3 for testing. -<<<<<<< HEAD - :param list[str] tags: Tags to filter by (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -261,7 +242,6 @@ class PetApi(object): :param callback function: The callback function for asynchronous request. (optional) :param list[str] tags: Tags to filter by ->>>>>>> support asynchronous request in python client :return: list[Pet] If the method is called asynchronously, returns the request thread. @@ -307,12 +287,7 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='list[Pet]', auth_settings=auth_settings) - -======= - response='list[Pet]', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='list[Pet]', auth_settings=auth_settings, callback=params.get('callback')) return response def get_pet_by_id(self, pet_id, **kwargs): @@ -378,12 +353,7 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='Pet', auth_settings=auth_settings) - -======= - response='Pet', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='Pet', auth_settings=auth_settings, callback=params.get('callback')) return response def update_pet_with_form(self, pet_id, **kwargs): @@ -400,8 +370,8 @@ class PetApi(object): :param callback function: The callback function for asynchronous request. (optional) :param str pet_id: ID of pet that needs to be updated (required) - :param str name: Updated name of the pet (optional) - :param str status: Updated status of the pet (optional) + :param str name: Updated name of the pet + :param str status: Updated status of the pet :return: None If the method is called asynchronously, returns the request thread. @@ -457,20 +427,14 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def delete_pet(self, pet_id, **kwargs): """ Deletes a pet -<<<<<<< HEAD -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -479,10 +443,8 @@ class PetApi(object): >>> thread = api.delete_pet(pet_id, callback=callback_function) :param callback function: The callback function for asynchronous request. (optional) - :param str api_key: ->>>>>>> support asynchronous request in python client :param int pet_id: Pet id to delete (required) - :param str api_key: (optional) + :param str api_key: :return: None If the method is called asynchronously, returns the request thread. @@ -492,12 +454,8 @@ class PetApi(object): if pet_id is None: raise ValueError("Missing the required parameter `pet_id` when calling `delete_pet`") -<<<<<<< HEAD all_params = ['pet_id', 'api_key'] -======= - all_params = ['api_key', 'pet_id'] all_params.append('callback') ->>>>>>> support asynchronous request in python client params = locals() for key, val in iteritems(params['kwargs']): @@ -539,12 +497,8 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def upload_file(self, pet_id, **kwargs): """ @@ -560,8 +514,8 @@ class PetApi(object): :param callback function: The callback function for asynchronous request. (optional) :param int pet_id: ID of pet to update (required) - :param str additional_metadata: Additional data to pass to server (optional) - :param file file: file to upload (optional) + :param str additional_metadata: Additional data to pass to server + :param file file: file to upload :return: None If the method is called asynchronously, returns the request thread. @@ -617,19 +571,6 @@ class PetApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client - - - - - - - - - diff --git a/samples/client/petstore/python/swagger_client/apis/store_api.py b/samples/client/petstore/python/swagger_client/apis/store_api.py index 87c90e7b65d..702cd814aa6 100644 --- a/samples/client/petstore/python/swagger_client/apis/store_api.py +++ b/samples/client/petstore/python/swagger_client/apis/store_api.py @@ -27,18 +27,19 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from .. import configuration +from ..configuration import Configuration from ..api_client import ApiClient class StoreApi(object): def __init__(self, api_client=None): + config = Configuration() if api_client: self.api_client = api_client else: - if not configuration.api_client: - configuration.api_client = ApiClient('http://petstore.swagger.io/v2') - self.api_client = configuration.api_client + if not config.api_client: + config.api_client = ApiClient('http://petstore.swagger.io/v2') + self.api_client = config.api_client def get_inventory(self, **kwargs): @@ -96,12 +97,7 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='dict(str, int)', auth_settings=auth_settings) - -======= - response='dict(str, int)', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='dict(str, int)', auth_settings=auth_settings, callback=params.get('callback')) return response def place_order(self, **kwargs): @@ -109,9 +105,6 @@ class StoreApi(object): Place an order for a pet -<<<<<<< HEAD - :param Order body: order placed for purchasing the pet (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -121,7 +114,6 @@ class StoreApi(object): :param callback function: The callback function for asynchronous request. (optional) :param Order body: order placed for purchasing the pet ->>>>>>> support asynchronous request in python client :return: Order If the method is called asynchronously, returns the request thread. @@ -167,12 +159,7 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='Order', auth_settings=auth_settings) - -======= - response='Order', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='Order', auth_settings=auth_settings, callback=params.get('callback')) return response def get_order_by_id(self, order_id, **kwargs): @@ -238,12 +225,7 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='Order', auth_settings=auth_settings) - -======= - response='Order', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='Order', auth_settings=auth_settings, callback=params.get('callback')) return response def delete_order(self, order_id, **kwargs): @@ -309,19 +291,6 @@ class StoreApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client - - - - - - - - - diff --git a/samples/client/petstore/python/swagger_client/apis/user_api.py b/samples/client/petstore/python/swagger_client/apis/user_api.py index 36e80efb67e..83b6941e002 100644 --- a/samples/client/petstore/python/swagger_client/apis/user_api.py +++ b/samples/client/petstore/python/swagger_client/apis/user_api.py @@ -27,18 +27,19 @@ import os # python 2 and python 3 compatibility library from six import iteritems -from .. import configuration +from ..configuration import Configuration from ..api_client import ApiClient class UserApi(object): def __init__(self, api_client=None): + config = Configuration() if api_client: self.api_client = api_client else: - if not configuration.api_client: - configuration.api_client = ApiClient('http://petstore.swagger.io/v2') - self.api_client = configuration.api_client + if not config.api_client: + config.api_client = ApiClient('http://petstore.swagger.io/v2') + self.api_client = config.api_client def create_user(self, **kwargs): @@ -46,9 +47,6 @@ class UserApi(object): Create user This can only be done by the logged in user. -<<<<<<< HEAD - :param User body: Created user object (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -58,7 +56,6 @@ class UserApi(object): :param callback function: The callback function for asynchronous request. (optional) :param User body: Created user object ->>>>>>> support asynchronous request in python client :return: None If the method is called asynchronously, returns the request thread. @@ -104,21 +101,14 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def create_users_with_array_input(self, **kwargs): """ Creates list of users with given input array -<<<<<<< HEAD - :param list[User] body: List of user object (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -128,7 +118,6 @@ class UserApi(object): :param callback function: The callback function for asynchronous request. (optional) :param list[User] body: List of user object ->>>>>>> support asynchronous request in python client :return: None If the method is called asynchronously, returns the request thread. @@ -174,21 +163,14 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def create_users_with_list_input(self, **kwargs): """ Creates list of users with given input array -<<<<<<< HEAD - :param list[User] body: List of user object (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -198,7 +180,6 @@ class UserApi(object): :param callback function: The callback function for asynchronous request. (optional) :param list[User] body: List of user object ->>>>>>> support asynchronous request in python client :return: None If the method is called asynchronously, returns the request thread. @@ -244,22 +225,14 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def login_user(self, **kwargs): """ Logs user into the system -<<<<<<< HEAD - :param str username: The user name for login (optional) - :param str password: The password for login in clear text (optional) -======= SDK also supports asynchronous requests in which you can define a `callback` function to be passed along and invoked when receiving response: >>> def callback_function(response): @@ -270,7 +243,6 @@ class UserApi(object): :param callback function: The callback function for asynchronous request. (optional) :param str username: The user name for login :param str password: The password for login in clear text ->>>>>>> support asynchronous request in python client :return: str If the method is called asynchronously, returns the request thread. @@ -319,12 +291,7 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='str', auth_settings=auth_settings) - -======= - response='str', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='str', auth_settings=auth_settings, callback=params.get('callback')) return response def logout_user(self, **kwargs): @@ -382,12 +349,8 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def get_user_by_name(self, username, **kwargs): """ @@ -452,12 +415,7 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type='User', auth_settings=auth_settings) - -======= - response='User', auth_settings=auth_settings, callback=params.get('callback')) ->>>>>>> support asynchronous request in python client + response_type='User', auth_settings=auth_settings, callback=params.get('callback')) return response def update_user(self, username, **kwargs): @@ -474,7 +432,7 @@ class UserApi(object): :param callback function: The callback function for asynchronous request. (optional) :param str username: name that need to be deleted (required) - :param User body: Updated user object (optional) + :param User body: Updated user object :return: None If the method is called asynchronously, returns the request thread. @@ -527,12 +485,8 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client def delete_user(self, username, **kwargs): """ @@ -597,19 +551,6 @@ class UserApi(object): response = self.api_client.call_api(resource_path, method, path_params, query_params, header_params, body=body_params, post_params=form_params, files=files, -<<<<<<< HEAD - response_type=None, auth_settings=auth_settings) -======= - response=None, auth_settings=auth_settings, callback=params.get('callback')) + response_type=None, auth_settings=auth_settings, callback=params.get('callback')) return response ->>>>>>> support asynchronous request in python client - - - - - - - - - diff --git a/samples/client/petstore/python/swagger_client/configuration.py b/samples/client/petstore/python/swagger_client/configuration.py index 2ae779e5b22..aff44cd2fa3 100644 --- a/samples/client/petstore/python/swagger_client/configuration.py +++ b/samples/client/petstore/python/swagger_client/configuration.py @@ -5,65 +5,110 @@ import httplib import sys import logging -def get_api_key_with_prefix(key): - global api_key - global api_key_prefix +def singleton(cls, *args, **kw): + instances = {} - if api_key.get(key) and api_key_prefix.get(key): - return api_key_prefix[key] + ' ' + api_key[key] - elif api_key.get(key): - return api_key[key] + def _singleton(): + if cls not in instances: + instances[cls] = cls(*args, **kw) + return instances[cls] + return _singleton -def setting_logging_enabled(): - global logging_file - format = '%(asctime)s %(levelname)s %(message)s' - if logging_file: - logging.basicConfig(filename=logging_file, level=logging.DEBUG, format=format) - else: - logging.basicConfig(stream=sys.stdout, level=logging.DEBUG, format=format) - httplib.HTTPConnection.debuglevel = 1 -def to_debug_report(): - return "Python SDK Debug Report:\n"\ - "OS: {env}\n"\ - "Python Version: {pyversion}\n"\ - "Version of the API: 1.0.0\n"\ - "SDK Package Version: 1.0.0".format(env=sys.platform, pyversion=sys.version) +@singleton +class Configuration(object): -def get_basic_auth_token(): - global username - global password + def __init__(self): + # Default Base url + self.host = "http://petstore.swagger.io/v2" + # Default api client + self.api_client = None + # Authentication Settings + self.api_key = {} + self.api_key_prefix = {} + self.username = "" + self.password = "" + # Logging Settings + self.logging_format = '%(asctime)s %(levelname)s %(message)s' + self.__logging_file = None + self.__debug = False + self.init_logger() - return urllib3.util.make_headers(basic_auth=username + ':' + password).get('authorization') + def init_logger(self): + self.logger = logging.getLogger() + formatter = logging.Formatter(self.logging_format) + stream_handler = logging.StreamHandler() + stream_handler.setFormatter(formatter) + self.logger.addHandler(stream_handler) + if self.__debug: + self.logger.setLevel(logging.DEBUG) + else: + self.logger.setLevel(logging.WARNING) + if self.__logging_file: + file_handler = logging.FileHandler(self.__logging_file) + file_handler.setFormatter(formatter) + self.logger.addFilter(file_handler) -def auth_settings(): - return { - 'api_key': { - 'type': 'api_key', - 'in': 'header', - 'key': 'api_key', - 'value': get_api_key_with_prefix('api_key') - }, - - } + @property + def logging_file(self): + return self.__logging_file -# Default Base url -host = "http://petstore.swagger.io/v2" + @logging_file.setter + def logging_file(self, value): + self.__logging_file = value + if self.__logging_file: + formater = logging.Formatter(self.logging_format) + file_handler = logging.FileHandler(self.__logging_file) + file_handler.setFormatter(formater) + self.logger.addHandler(file_handler) + + @property + def debug(self): + return self.__debug + + @debug.setter + def debug(self, value): + self.__debug = value + if self.__debug: + # if debug status is True, turn on debug logging + self.logger.setLevel(logging.DEBUG) + # turn on httplib debug + httplib.HTTPConnection.debuglevel = 1 + else: + # if debug status is False, turn off debug logging, + # setting log level to default `logging.WARNING` + self.logger.setLevel(logging.WARNING) + + def get_api_key_with_prefix(self, key): + """ Return api key prepend prefix for key """ + if self.api_key.get(key) and self.api_key_prefix.get(key): + return self.api_key_prefix[key] + ' ' + self.api_key[key] + elif self.api_key.get(key): + return self.api_key[key] + + def get_basic_auth_token(self): + """ Return basic auth header string """ + return urllib3.util.make_headers(basic_auth=self.username + ':' + self.password)\ + .get('authorization') + + def auth_settings(self): + """ Return Auth Settings for api client """ + return { + 'api_key': { + 'type': 'api_key', + 'in': 'header', + 'key': 'api_key', + 'value': self.get_api_key_with_prefix('api_key') + }, + + } + + def to_debug_report(self): + return "Python SDK Debug Report:\n"\ + "OS: {env}\n"\ + "Python Version: {pyversion}\n"\ + "Version of the API: 1.0.0\n"\ + "SDK Package Version: 1.0.0".format(env=sys.platform, pyversion=sys.version) -# Default api client -api_client = None - -# Authentication settings -api_key = {} -api_key_prefix = {} -username = '' -password = '' -<<<<<<< HEAD -# Temp foloder for file download -temp_folder_path = None -======= -# Logging settings -logging_file = None ->>>>>>> Add logging and debug report for python client. diff --git a/samples/client/petstore/python/swagger_client/rest.py b/samples/client/petstore/python/swagger_client/rest.py index 50c41fc4e0d..7cf08f50429 100644 --- a/samples/client/petstore/python/swagger_client/rest.py +++ b/samples/client/petstore/python/swagger_client/rest.py @@ -130,23 +130,14 @@ class RESTClientObject(object): headers=headers) r = RESTResponse(r) -<<<<<<< HEAD -======= - # log response body - logger.debug("response body: %s" % r.data) - - if r.status not in range(200, 206): - raise ApiException(r) - - return self.process_response(r) - - def process_response(self, response): ->>>>>>> Add logging and debug report for python client. # In the python 3, the response.data is bytes. # we need to decode it to string. if sys.version_info > (3,): r.data = r.data.decode('utf8') + # log response body + logger.debug("response body: %s" % r.data) + if r.status not in range(200, 206): raise ApiException(http_resp=r) From 0a652a3d1344b3534fdc1d871773a025d782f30e Mon Sep 17 00:00:00 2001 From: geekerzp Date: Thu, 25 Jun 2015 11:45:38 +0800 Subject: [PATCH 09/22] Fix issue#896 https://github.com/swagger-api/swagger-codegen/issues/896 --- .../codegen/languages/ObjcClientCodegen.java | 7 +- .../resources/objc/SWGApiClient-body.mustache | 18 +- .../objc/SWGApiClient-header.mustache | 3 +- .../SWGJSONRequestSerializer-body.mustache | 35 ++++ .../SWGJSONRequestSerializer-header.mustache | 5 + .../src/main/resources/objc/api-body.mustache | 48 +++-- .../UserInterfaceState.xcuserstate | Bin 16336 -> 22901 bytes .../SwaggerClient.xcodeproj/project.pbxproj | 18 ++ .../SwaggerClient/ViewController.m | 55 ++---- .../petstore/objc/client/SWGApiClient.h | 3 +- .../petstore/objc/client/SWGApiClient.m | 18 +- .../objc/client/SWGJSONRequestSerializer.h | 5 + .../objc/client/SWGJSONRequestSerializer.m | 35 ++++ .../client/petstore/objc/client/SWGOrder.h | 2 +- .../client/petstore/objc/client/SWGPetApi.m | 146 +++++++--------- .../client/petstore/objc/client/SWGStoreApi.m | 58 +++---- .../client/petstore/objc/client/SWGUserApi.m | 164 +++++++----------- 17 files changed, 311 insertions(+), 309 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-body.mustache create mode 100644 modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-header.mustache create mode 100644 samples/client/petstore/objc/client/SWGJSONRequestSerializer.h create mode 100644 samples/client/petstore/objc/client/SWGJSONRequestSerializer.m diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 03905cbdfaf..5bfc5e59339 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -70,14 +70,15 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { "double", "protocol", "interface", "implementation", "NSObject", "NSInteger", "NSNumber", "CGFloat", "property", "nonatomic", "retain", "strong", - "weak", "unsafe_unretained", "readwrite", "readonly" + "weak", "unsafe_unretained", "readwrite", "readonly", + "description" )); typeMapping = new HashMap(); typeMapping.put("enum", "NSString"); typeMapping.put("Date", "NSDate"); typeMapping.put("DateTime", "NSDate"); - typeMapping.put("boolean", "BOOL"); + typeMapping.put("boolean", "NSNumber"); typeMapping.put("string", "NSString"); typeMapping.put("integer", "NSNumber"); typeMapping.put("int", "NSNumber"); @@ -147,6 +148,8 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("SWGApiClient-body.mustache", sourceFolder, "SWGApiClient.m")); supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-header.mustache", sourceFolder, "SWGJSONResponseSerializer.h")); supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-body.mustache", sourceFolder, "SWGJSONResponseSerializer.m")); + supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-body.mustache", sourceFolder, "SWGJSONRequestSerializer.m")); + supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-header.mustache", sourceFolder, "SWGJSONRequestSerializer.h")); supportingFiles.add(new SupportingFile("SWGFile.h", sourceFolder, "SWGFile.h")); supportingFiles.add(new SupportingFile("SWGFile.m", sourceFolder, "SWGFile.m")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", sourceFolder, "JSONValueTransformer+ISO8601.m")); diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-body.mustache index 1b479d039e6..d7e6fac8385 100644 --- a/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-body.mustache @@ -486,7 +486,7 @@ static bool loggingEnabled = true; completionBlock: (void (^)(id, NSError *))completionBlock { // setting request serializer if ([requestContentType isEqualToString:@"application/json"]) { - self.requestSerializer = [AFJSONRequestSerializer serializer]; + self.requestSerializer = [SWGJSONRequestSerializer serializer]; } else if ([requestContentType isEqualToString:@"application/x-www-form-urlencoded"]) { self.requestSerializer = [AFHTTPRequestSerializer serializer]; @@ -569,9 +569,11 @@ static bool loggingEnabled = true; parameters: body error: nil]; } + BOOL hasHeaderParams = false; - if(headerParams != nil && [headerParams count] > 0) + if(headerParams != nil && [headerParams count] > 0) { hasHeaderParams = true; + } if(offlineState) { NSLog(@"%@ cache forced", path); [request setCachePolicy:NSURLRequestReturnCacheDataDontLoad]; @@ -585,17 +587,7 @@ static bool loggingEnabled = true; [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; } - - if(body != nil) { - if([body isKindOfClass:[NSDictionary class]] || [body isKindOfClass:[NSArray class]]){ - [self.requestSerializer setValue:requestContentType forHTTPHeaderField:@"Content-Type"]; - } - else if ([body isKindOfClass:[SWGFile class]]){} - else { - NSAssert(false, @"unsupported post type!"); - } - } - if(headerParams != nil){ + if(hasHeaderParams){ for(NSString * key in [headerParams keyEnumerator]){ [request setValue:[headerParams valueForKey:key] forHTTPHeaderField:key]; } diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-header.mustache index 691c92cc625..d4bc3e3b81d 100644 --- a/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-header.mustache @@ -1,7 +1,8 @@ #import #import #import "AFHTTPRequestOperationManager.h" -#import "SWGJSONResponseSerializer.h" +#import "SWGJSONResponseSerializer.h" +#import "SWGJSONRequestSerializer.h" {{#models}}{{#model}}#import "{{classname}}.h" {{/model}}{{/models}} diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-body.mustache new file mode 100644 index 00000000000..631a20a5a6e --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-body.mustache @@ -0,0 +1,35 @@ +#import "SWGJSONRequestSerializer.h" + +@implementation SWGJSONRequestSerializer + +/// +/// When customize a request serializer, +/// the serializer must conform the protocol `AFURLRequestSerialization` +/// and implements the protocol method `requestBySerializingRequest:withParameters:error:` +/// +/// @param request The original request. +/// @param parameters The parameters to be encoded. +/// @param error The error that occurred while attempting to encode the request parameters. +/// +/// @return A serialized request. +/// +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + // If the body data which will be serialized isn't NSArray or NSDictionary + // then put the data in the http request body directly. + if ([parameters isKindOfClass:[NSArray class]] || [parameters isKindOfClass:[NSDictionary class]]) { + return [super requestBySerializingRequest:request withParameters:parameters error:error]; + } else { + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + if (parameters) { + [mutableRequest setHTTPBody:[parameters dataUsingEncoding:self.stringEncoding]]; + } + + return mutableRequest; + } +} + +@end diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-header.mustache new file mode 100644 index 00000000000..49dd7fca3e2 --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-header.mustache @@ -0,0 +1,5 @@ +#import +#import + +@interface SWGJSONRequestSerializer : AFJSONRequestSerializer +@end diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 29dca1f4a7a..5bebfa063c2 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -89,7 +89,9 @@ static NSString * basePath = @"{{basePath}}"; {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set - NSAssert({{paramName}} != nil, @"Missing the required parameter `{{paramName}}` when calling {{nickname}}"); + if ({{paramName}} == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `{{paramName}}` when calling `{{nickname}}`"]; + } {{/required}}{{/allParams}} NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@{{path}}", basePath]; @@ -135,14 +137,14 @@ static NSString * basePath = @"{{basePath}}"; // Authentication setting NSArray *authSettings = @[{{#authMethods}}@"{{name}}"{{#hasMore}}, {{/hasMore}}{{/authMethods}}]; - - id bodyDictionary = nil; - {{#bodyParam}} - id __body = {{paramName}}; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + {{#bodyParam}} + bodyParam = {{paramName}}; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -150,20 +152,10 @@ static NSString * basePath = @"{{basePath}}"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } {{/bodyParam}} {{^bodyParam}} @@ -175,18 +167,18 @@ static NSString * basePath = @"{{basePath}}"; formParams[@"{{paramName}}"] = {{paramName}}; {{/notFile}}{{#isFile}} requestContentType = @"multipart/form-data"; - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } if({{paramName}} != nil) { - [bodyDictionary addObject:{{paramName}}]; + [bodyParam addObject:{{paramName}}]; {{paramName}}.paramName = @"{{baseName}}"; } {{/isFile}} - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } - [bodyDictionary addObject:formParams]; + [bodyParam addObject:formParams]; {{/formParams}} {{/bodyParam}} @@ -200,7 +192,7 @@ static NSString * basePath = @"{{basePath}}"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"{{httpMethod}}" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType diff --git a/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate index d8a48b72bc2eb6cb0a734c22a88f15e99e0edb35..fe0defcf775e1b7d2fc2e827c6672586a76ac126 100644 GIT binary patch literal 22901 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 delta 9722 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 diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj index ac15f78e357..1424f7b9cfe 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj @@ -11,10 +11,13 @@ CF0560EB1B1855CF00C0D4EC /* SWGConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = CF0560EA1B1855CF00C0D4EC /* SWGConfiguration.m */; }; CF31D0991B105E4B00509935 /* SWGApiClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CF31D0981B105E4B00509935 /* SWGApiClientTest.m */; }; CF5B6E2D1B2BD70800862A1C /* UserApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5B6E2C1B2BD70800862A1C /* UserApiTest.m */; }; + CF8F85811B3A4796000DE569 /* SWGMythingApi.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8F85801B3A4796000DE569 /* SWGMythingApi.m */; }; + CF8F85841B3A4913000DE569 /* SWGMyresult.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8F85831B3A4913000DE569 /* SWGMyresult.m */; }; CFB37D061B2B11DD00D2E5F1 /* StoreApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFB37D051B2B11DC00D2E5F1 /* StoreApiTest.m */; }; CFCEFE511B2C1330006313BE /* SWGJSONResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCEFE501B2C1330006313BE /* SWGJSONResponseSerializer.m */; }; CFD1B6701B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */; }; CFD1B6711B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */; }; + CFE1E0391B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CFE1E0381B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m */; }; EA66999A1811D2FA00A70D03 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA6699991811D2FA00A70D03 /* Foundation.framework */; }; EA66999C1811D2FA00A70D03 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA66999B1811D2FA00A70D03 /* CoreGraphics.framework */; }; EA66999E1811D2FA00A70D03 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA66999D1811D2FA00A70D03 /* UIKit.framework */; }; @@ -64,11 +67,17 @@ CF0560EA1B1855CF00C0D4EC /* SWGConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGConfiguration.m; sourceTree = ""; }; CF31D0981B105E4B00509935 /* SWGApiClientTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGApiClientTest.m; sourceTree = ""; }; CF5B6E2C1B2BD70800862A1C /* UserApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserApiTest.m; sourceTree = ""; }; + CF8F857F1B3A4796000DE569 /* SWGMythingApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGMythingApi.h; sourceTree = ""; }; + CF8F85801B3A4796000DE569 /* SWGMythingApi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGMythingApi.m; sourceTree = ""; }; + CF8F85821B3A4913000DE569 /* SWGMyresult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGMyresult.h; sourceTree = ""; }; + CF8F85831B3A4913000DE569 /* SWGMyresult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGMyresult.m; sourceTree = ""; }; CFB37D051B2B11DC00D2E5F1 /* StoreApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreApiTest.m; sourceTree = ""; }; CFCEFE4F1B2C1330006313BE /* SWGJSONResponseSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGJSONResponseSerializer.h; sourceTree = ""; }; CFCEFE501B2C1330006313BE /* SWGJSONResponseSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGJSONResponseSerializer.m; sourceTree = ""; }; CFD1B66E1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSONValueTransformer+ISO8601.h"; sourceTree = ""; }; CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JSONValueTransformer+ISO8601.m"; sourceTree = ""; }; + CFE1E0371B3AA4EE0030FE7C /* SWGJSONRequestSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGJSONRequestSerializer.h; sourceTree = ""; }; + CFE1E0381B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGJSONRequestSerializer.m; sourceTree = ""; }; E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "../Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; EA6699961811D2FA00A70D03 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; EA6699991811D2FA00A70D03 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; @@ -253,11 +262,17 @@ EAEA85D21811D3AE00F06E69 /* SWGFile.h */, EAEA85D31811D3AE00F06E69 /* SWGFile.m */, EAEA85D41811D3AE00F06E69 /* SWGObject.h */, + CF8F85821B3A4913000DE569 /* SWGMyresult.h */, + CF8F85831B3A4913000DE569 /* SWGMyresult.m */, + CF8F857F1B3A4796000DE569 /* SWGMythingApi.h */, + CF8F85801B3A4796000DE569 /* SWGMythingApi.m */, EAEA85D51811D3AE00F06E69 /* SWGObject.m */, EAEA85D61811D3AE00F06E69 /* SWGOrder.h */, EAEA85D71811D3AE00F06E69 /* SWGOrder.m */, EAB26B0E1AC8E692002F5C7A /* SWGPet.h */, CFCEFE4F1B2C1330006313BE /* SWGJSONResponseSerializer.h */, + CFE1E0371B3AA4EE0030FE7C /* SWGJSONRequestSerializer.h */, + CFE1E0381B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m */, CFCEFE501B2C1330006313BE /* SWGJSONResponseSerializer.m */, EAEA85D91811D3AE00F06E69 /* SWGPet.m */, EAEA85DA1811D3AE00F06E69 /* SWGPetApi.h */, @@ -420,13 +435,16 @@ EAEA85EB1811D3AE00F06E69 /* SWGPetApi.m in Sources */, EA6699A61811D2FA00A70D03 /* main.m in Sources */, CFD1B6701B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */, + CF8F85841B3A4913000DE569 /* SWGMyresult.m in Sources */, EAEA85EA1811D3AE00F06E69 /* SWGPet.m in Sources */, EAEA85E41811D3AE00F06E69 /* SWGApiClient.m in Sources */, EAEA85EC1811D3AE00F06E69 /* SWGStoreApi.m in Sources */, EAEA85E91811D3AE00F06E69 /* SWGOrder.m in Sources */, + CF8F85811B3A4796000DE569 /* SWGMythingApi.m in Sources */, EAEA85E81811D3AE00F06E69 /* SWGObject.m in Sources */, EA8B8AA41AC6683700638FBB /* SWGQueryParamCollection.m in Sources */, CFCEFE511B2C1330006313BE /* SWGJSONResponseSerializer.m in Sources */, + CFE1E0391B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m in Sources */, EAEA85E71811D3AE00F06E69 /* SWGFile.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m index 388cacbb157..df696b0562b 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m +++ b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m @@ -7,10 +7,14 @@ // #import "ViewController.h" +#import "SWGPet.h" +#import "SWGCategory.h" +#import "SWGTag.h" #import "SWGPetApi.h" #import "SWGStoreApi.h" #import "SWGUserApi.h" #import "SWGConfiguration.h" +#import "SWGMythingApi.h" @interface ViewController () @@ -21,49 +25,20 @@ - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. -/* - SWGPetApi * api = [[SWGPetApi alloc] init]; - [api getPetByIdWithCompletionBlock:@10 completionHandler:^(SWGPet *output, NSError *error) { - NSLog(@"%@", [output asDictionary]); - [output set_id:@101]; - [api addPetWithCompletionBlock:output completionHandler:^(NSError *error) { - NSLog(@"Done!"); - }]; - -// load data into file - }]; - NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test-1" ofType:@"png"]; - NSData *myData = [NSData dataWithContentsOfFile:filePath]; + /* + NSDictionary *cateHash = @{ @"id": @123, @"name": @"test name" }; + NSDictionary *tagHash = @{ @"id": @123, @"name": @"test name" }; + NSDictionary *petHash = @{ @"id": @123, @"test": @(YES), @"name": @"test name", @"category": cateHash, @"tags": @[tagHash], @"photoUrls": @[@"test url"] }; + SWGPet *pet = [[SWGPet alloc] initWithDictionary:petHash + error:nil]; - SWGFile *file = [[SWGFile alloc] initWithNameData:@"test-2.png" mimeType:@"image/png" data:myData]; - [api uploadFileWithCompletionBlock:@1 - additionalMetadata:@"some metadata" - file:file - completionHandler:^(NSError *error) { - if(error) { - NSLog(@"%@", error); - } - } -// completionHandler:^(SWGApiResponse *output, NSError *error) { -// if(error) { -// NSLog(@"%@", error); -// } -// else { -// NSLog(@"%@", [output asDictionary]); -// } -// } - ]; - */ SWGPetApi *api = [[SWGPetApi alloc] init]; - [api deletePetWithCompletionBlock:@"hello" - petId:@1434529787992 - completionHandler:^(NSError *error) { - if (error) { - NSLog(@"%@", error); - } - }]; + [api addPetWithCompletionBlock:pet completionHandler:^(NSError *error) { + NSLog(@"%@", error); + }]; + */ + } - (void)didReceiveMemoryWarning diff --git a/samples/client/petstore/objc/client/SWGApiClient.h b/samples/client/petstore/objc/client/SWGApiClient.h index 6ede775cb02..34722ed3ad9 100644 --- a/samples/client/petstore/objc/client/SWGApiClient.h +++ b/samples/client/petstore/objc/client/SWGApiClient.h @@ -1,7 +1,8 @@ #import #import #import "AFHTTPRequestOperationManager.h" -#import "SWGJSONResponseSerializer.h" +#import "SWGJSONResponseSerializer.h" +#import "SWGJSONRequestSerializer.h" #import "SWGUser.h" #import "SWGCategory.h" diff --git a/samples/client/petstore/objc/client/SWGApiClient.m b/samples/client/petstore/objc/client/SWGApiClient.m index 1b479d039e6..d7e6fac8385 100644 --- a/samples/client/petstore/objc/client/SWGApiClient.m +++ b/samples/client/petstore/objc/client/SWGApiClient.m @@ -486,7 +486,7 @@ static bool loggingEnabled = true; completionBlock: (void (^)(id, NSError *))completionBlock { // setting request serializer if ([requestContentType isEqualToString:@"application/json"]) { - self.requestSerializer = [AFJSONRequestSerializer serializer]; + self.requestSerializer = [SWGJSONRequestSerializer serializer]; } else if ([requestContentType isEqualToString:@"application/x-www-form-urlencoded"]) { self.requestSerializer = [AFHTTPRequestSerializer serializer]; @@ -569,9 +569,11 @@ static bool loggingEnabled = true; parameters: body error: nil]; } + BOOL hasHeaderParams = false; - if(headerParams != nil && [headerParams count] > 0) + if(headerParams != nil && [headerParams count] > 0) { hasHeaderParams = true; + } if(offlineState) { NSLog(@"%@ cache forced", path); [request setCachePolicy:NSURLRequestReturnCacheDataDontLoad]; @@ -585,17 +587,7 @@ static bool loggingEnabled = true; [request setCachePolicy:NSURLRequestReloadIgnoringLocalCacheData]; } - - if(body != nil) { - if([body isKindOfClass:[NSDictionary class]] || [body isKindOfClass:[NSArray class]]){ - [self.requestSerializer setValue:requestContentType forHTTPHeaderField:@"Content-Type"]; - } - else if ([body isKindOfClass:[SWGFile class]]){} - else { - NSAssert(false, @"unsupported post type!"); - } - } - if(headerParams != nil){ + if(hasHeaderParams){ for(NSString * key in [headerParams keyEnumerator]){ [request setValue:[headerParams valueForKey:key] forHTTPHeaderField:key]; } diff --git a/samples/client/petstore/objc/client/SWGJSONRequestSerializer.h b/samples/client/petstore/objc/client/SWGJSONRequestSerializer.h new file mode 100644 index 00000000000..49dd7fca3e2 --- /dev/null +++ b/samples/client/petstore/objc/client/SWGJSONRequestSerializer.h @@ -0,0 +1,5 @@ +#import +#import + +@interface SWGJSONRequestSerializer : AFJSONRequestSerializer +@end diff --git a/samples/client/petstore/objc/client/SWGJSONRequestSerializer.m b/samples/client/petstore/objc/client/SWGJSONRequestSerializer.m new file mode 100644 index 00000000000..631a20a5a6e --- /dev/null +++ b/samples/client/petstore/objc/client/SWGJSONRequestSerializer.m @@ -0,0 +1,35 @@ +#import "SWGJSONRequestSerializer.h" + +@implementation SWGJSONRequestSerializer + +/// +/// When customize a request serializer, +/// the serializer must conform the protocol `AFURLRequestSerialization` +/// and implements the protocol method `requestBySerializingRequest:withParameters:error:` +/// +/// @param request The original request. +/// @param parameters The parameters to be encoded. +/// @param error The error that occurred while attempting to encode the request parameters. +/// +/// @return A serialized request. +/// +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + // If the body data which will be serialized isn't NSArray or NSDictionary + // then put the data in the http request body directly. + if ([parameters isKindOfClass:[NSArray class]] || [parameters isKindOfClass:[NSDictionary class]]) { + return [super requestBySerializingRequest:request withParameters:parameters error:error]; + } else { + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + if (parameters) { + [mutableRequest setHTTPBody:[parameters dataUsingEncoding:self.stringEncoding]]; + } + + return mutableRequest; + } +} + +@end diff --git a/samples/client/petstore/objc/client/SWGOrder.h b/samples/client/petstore/objc/client/SWGOrder.h index c4f4f6e81ad..2e71906cd53 100644 --- a/samples/client/petstore/objc/client/SWGOrder.h +++ b/samples/client/petstore/objc/client/SWGOrder.h @@ -19,6 +19,6 @@ */ @property(nonatomic) NSString* status; -@property(nonatomic) BOOL complete; +@property(nonatomic) NSNumber* complete; @end diff --git a/samples/client/petstore/objc/client/SWGPetApi.m b/samples/client/petstore/objc/client/SWGPetApi.m index e4306f1b235..01d127bc283 100644 --- a/samples/client/petstore/objc/client/SWGPetApi.m +++ b/samples/client/petstore/objc/client/SWGPetApi.m @@ -121,14 +121,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -136,20 +136,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -158,7 +148,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"PUT" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -218,14 +208,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -233,20 +223,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -255,7 +235,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -321,8 +301,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -335,7 +315,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -401,8 +381,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -415,7 +395,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -441,7 +421,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'petId' is set - NSAssert(petId != nil, @"Missing the required parameter `petId` when calling getPetById"); + if (petId == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `getPetById`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/pet/{petId}", basePath]; @@ -479,8 +461,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"api_key", @"petstore_auth"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -493,7 +475,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -525,7 +507,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'petId' is set - NSAssert(petId != nil, @"Missing the required parameter `petId` when calling updatePetWithForm"); + if (petId == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `updatePetWithForm`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/pet/{petId}", basePath]; @@ -563,8 +547,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -574,18 +558,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; formParams[@"name"] = name; - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } - [bodyDictionary addObject:formParams]; + [bodyParam addObject:formParams]; formParams[@"status"] = status; - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } - [bodyDictionary addObject:formParams]; + [bodyParam addObject:formParams]; @@ -593,7 +577,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -622,7 +606,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'petId' is set - NSAssert(petId != nil, @"Missing the required parameter `petId` when calling deletePet"); + if (petId == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `deletePet`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/pet/{petId}", basePath]; @@ -662,8 +648,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -676,7 +662,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"DELETE" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -708,7 +694,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'petId' is set - NSAssert(petId != nil, @"Missing the required parameter `petId` when calling uploadFile"); + if (petId == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `petId` when calling `uploadFile`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/pet/{petId}/uploadImage", basePath]; @@ -746,8 +734,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"petstore_auth"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -757,25 +745,25 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; formParams[@"additionalMetadata"] = additionalMetadata; - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } - [bodyDictionary addObject:formParams]; + [bodyParam addObject:formParams]; requestContentType = @"multipart/form-data"; - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } if(file != nil) { - [bodyDictionary addObject:file]; + [bodyParam addObject:file]; file.paramName = @"file"; } - if(bodyDictionary == nil) { - bodyDictionary = [[NSMutableArray alloc] init]; + if(bodyParam == nil) { + bodyParam = [[NSMutableArray alloc] init]; } - [bodyDictionary addObject:formParams]; + [bodyParam addObject:formParams]; @@ -783,7 +771,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType diff --git a/samples/client/petstore/objc/client/SWGStoreApi.m b/samples/client/petstore/objc/client/SWGStoreApi.m index 98582602027..71b5af87744 100644 --- a/samples/client/petstore/objc/client/SWGStoreApi.m +++ b/samples/client/petstore/objc/client/SWGStoreApi.m @@ -117,8 +117,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[@"api_key"]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -131,7 +131,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -191,14 +191,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -206,20 +206,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -228,7 +218,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -254,7 +244,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'orderId' is set - NSAssert(orderId != nil, @"Missing the required parameter `orderId` when calling getOrderById"); + if (orderId == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `orderId` when calling `getOrderById`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/store/order/{orderId}", basePath]; @@ -292,8 +284,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -306,7 +298,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -332,7 +324,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'orderId' is set - NSAssert(orderId != nil, @"Missing the required parameter `orderId` when calling deleteOrder"); + if (orderId == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `orderId` when calling `deleteOrder`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/store/order/{orderId}", basePath]; @@ -370,8 +364,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -384,7 +378,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"DELETE" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType diff --git a/samples/client/petstore/objc/client/SWGUserApi.m b/samples/client/petstore/objc/client/SWGUserApi.m index 2e8ce66b74e..06b6d2ce666 100644 --- a/samples/client/petstore/objc/client/SWGUserApi.m +++ b/samples/client/petstore/objc/client/SWGUserApi.m @@ -120,14 +120,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -135,20 +135,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -157,7 +147,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -217,14 +207,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -232,20 +222,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -254,7 +234,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -314,14 +294,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -329,20 +309,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -351,7 +321,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -422,8 +392,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -436,7 +406,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -493,8 +463,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -507,7 +477,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -533,7 +503,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'username' is set - NSAssert(username != nil, @"Missing the required parameter `username` when calling getUserByName"); + if (username == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `username` when calling `getUserByName`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/user/{username}", basePath]; @@ -571,8 +543,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -585,7 +557,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -614,7 +586,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'username' is set - NSAssert(username != nil, @"Missing the required parameter `username` when calling updateUser"); + if (username == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `username` when calling `updateUser`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/user/{username}", basePath]; @@ -652,14 +626,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; - - id __body = body; - if(__body != nil && [__body isKindOfClass:[NSArray class]]){ - NSMutableArray * objs = [[NSMutableArray alloc] init]; - for (id dict in (NSArray*)__body) { + id bodyParam = nil; + + bodyParam = body; + + if(bodyParam != nil && [bodyParam isKindOfClass:[NSArray class]]){ + NSMutableArray *objs = [[NSMutableArray alloc] init]; + for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { [objs addObject:[(SWGObject*)dict toDictionary]]; } @@ -667,20 +641,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; [objs addObject:dict]; } } - bodyDictionary = objs; + bodyParam = objs; } - else if([__body respondsToSelector:@selector(toDictionary)]) { - bodyDictionary = [(SWGObject*)__body toDictionary]; - } - else if([__body isKindOfClass:[NSString class]]) { - // convert it to a dictionary - NSError * error; - NSString * str = (NSString*)__body; - NSDictionary *JSON = - [NSJSONSerialization JSONObjectWithData: [str dataUsingEncoding: NSUTF8StringEncoding] - options: NSJSONReadingMutableContainers - error: &error]; - bodyDictionary = JSON; + else if([bodyParam respondsToSelector:@selector(toDictionary)]) { + bodyParam = [(SWGObject*)bodyParam toDictionary]; } @@ -689,7 +653,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"PUT" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType @@ -715,7 +679,9 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // verify the required parameter 'username' is set - NSAssert(username != nil, @"Missing the required parameter `username` when calling deleteUser"); + if (username == nil) { + [NSException raise:@"Invalid parameter" format:@"Missing the required parameter `username` when calling `deleteUser`"]; + } NSMutableString* requestUrl = [NSMutableString stringWithFormat:@"%@/user/{username}", basePath]; @@ -753,8 +719,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; // Authentication setting NSArray *authSettings = @[]; - - id bodyDictionary = nil; + + id bodyParam = nil; @@ -767,7 +733,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"DELETE" queryParams: queryParams - body: bodyDictionary + body: bodyParam headerParams: headerParams authSettings: authSettings requestContentType: requestContentType From 412b6b3839955ad0cdfa546673ce83b16d93af35 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Sat, 27 Jun 2015 09:58:19 +0800 Subject: [PATCH 10/22] Update objc client. * Package objc client using cocoapods. * Support cli options. --- .../codegen/languages/ObjcClientCodegen.java | 167 +- .../src/main/resources/objc/Podfile.mustache | 5 - .../src/main/resources/objc/podspec.mustache | 31 + samples/client/petstore/objc/LICENSE | 19 + samples/client/petstore/objc/Podfile | 5 - samples/client/petstore/objc/README.md | 29 + .../petstore/objc/SwaggerClient.podspec | 40 + .../xcshareddata/SwaggerClient.xccheckout | 41 - .../UserInterfaceState.xcuserstate | Bin 22901 -> 0 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 17 - .../JSONValueTransformer+ISO8601.h | 0 .../JSONValueTransformer+ISO8601.m | 0 .../{client => SwaggerClient}/SWGApiClient.h | 2 +- .../{client => SwaggerClient}/SWGApiClient.m | 0 .../{client => SwaggerClient}/SWGCategory.h | 0 .../{client => SwaggerClient}/SWGCategory.m | 0 .../SWGConfiguration.h | 0 .../SWGConfiguration.m | 0 .../objc/{client => SwaggerClient}/SWGFile.h | 0 .../objc/{client => SwaggerClient}/SWGFile.m | 0 .../SWGJSONRequestSerializer.h | 0 .../SWGJSONRequestSerializer.m | 0 .../SWGJSONResponseSerializer.h | 0 .../SWGJSONResponseSerializer.m | 0 .../{client => SwaggerClient}/SWGObject.h | 0 .../{client => SwaggerClient}/SWGObject.m | 0 .../objc/{client => SwaggerClient}/SWGOrder.h | 0 .../objc/{client => SwaggerClient}/SWGOrder.m | 0 .../objc/{client => SwaggerClient}/SWGPet.h | 0 .../objc/{client => SwaggerClient}/SWGPet.m | 0 .../{client => SwaggerClient}/SWGPetApi.h | 0 .../{client => SwaggerClient}/SWGPetApi.m | 0 .../SWGQueryParamCollection.h | 0 .../SWGQueryParamCollection.m | 0 .../{client => SwaggerClient}/SWGStoreApi.h | 0 .../{client => SwaggerClient}/SWGStoreApi.m | 0 .../objc/{client => SwaggerClient}/SWGTag.h | 0 .../objc/{client => SwaggerClient}/SWGTag.m | 0 .../objc/{client => SwaggerClient}/SWGUser.h | 0 .../objc/{client => SwaggerClient}/SWGUser.m | 0 .../{client => SwaggerClient}/SWGUserApi.h | 0 .../{client => SwaggerClient}/SWGUserApi.m | 0 .../SwaggerClient.xcodeproj/project.pbxproj | 706 ---- .../xcshareddata/PetstoreClient.xccheckout | 41 - .../UserInterfaceState.xcuserstate | Bin 8581 -> 0 bytes .../xcschemes/xcschememanagement.plist | 27 - .../xcschemes/PetstoreClient.xcscheme | 98 - .../SwaggerClient/SwaggerClient/AppDelegate.h | 15 - .../Base.lproj/Main_iPad.storyboard | 26 - .../Base.lproj/Main_iPhone.storyboard | 26 - .../AppIcon.appiconset/Contents.json | 58 - .../LaunchImage.launchimage/Contents.json | 51 - .../SwaggerClient/ViewController.h | 13 - .../SwaggerClient/ViewController.m | 50 - .../objc/SwaggerClient/SwaggerClient/main.m | 18 - .../SwaggerClient/SwaggerClient/test-1.png | Bin 734124 -> 0 bytes .../SwaggerClientTests/PetApiTest.h | 9 - .../petstore/objc/SwaggerClient/pom.xml | 24 - .../petstore/objc/SwaggerClientTests/Podfile | 13 + .../{ => SwaggerClientTests}/Podfile.lock | 19 +- .../AFNetworking/AFHTTPRequestOperation.h | 66 + .../AFNetworking/AFHTTPRequestOperation.m | 206 + .../AFHTTPRequestOperationManager.h | 323 ++ .../AFHTTPRequestOperationManager.m | 284 ++ .../AFNetworking/AFHTTPSessionManager.h | 247 ++ .../AFNetworking/AFHTTPSessionManager.m | 321 ++ .../AFNetworkReachabilityManager.h | 200 + .../AFNetworkReachabilityManager.m | 259 ++ .../AFNetworking/AFNetworking/AFNetworking.h | 44 + .../AFNetworking/AFSecurityPolicy.h | 142 + .../AFNetworking/AFSecurityPolicy.m | 308 ++ .../AFNetworking/AFURLConnectionOperation.h | 343 ++ .../AFNetworking/AFURLConnectionOperation.m | 788 ++++ .../AFNetworking/AFURLRequestSerialization.h | 467 +++ .../AFNetworking/AFURLRequestSerialization.m | 1384 +++++++ .../AFNetworking/AFURLResponseSerialization.h | 309 ++ .../AFNetworking/AFURLResponseSerialization.m | 797 ++++ .../AFNetworking/AFURLSessionManager.h | 546 +++ .../AFNetworking/AFURLSessionManager.m | 1156 ++++++ .../Pods/AFNetworking/LICENSE | 19 + .../Pods/AFNetworking/README.md | 385 ++ .../AFNetworkActivityIndicatorManager.h | 75 + .../AFNetworkActivityIndicatorManager.m | 172 + .../UIActivityIndicatorView+AFNetworking.h | 63 + .../UIActivityIndicatorView+AFNetworking.m | 96 + .../UIAlertView+AFNetworking.h | 95 + .../UIAlertView+AFNetworking.m | 141 + .../UIButton+AFNetworking.h | 180 + .../UIButton+AFNetworking.m | 293 ++ .../UIImageView+AFNetworking.h | 142 + .../UIImageView+AFNetworking.m | 215 ++ .../UIKit+AFNetworking/UIKit+AFNetworking.h | 38 + .../UIProgressView+AFNetworking.h | 87 + .../UIProgressView+AFNetworking.m | 182 + .../UIRefreshControl+AFNetworking.h | 64 + .../UIRefreshControl+AFNetworking.m | 93 + .../UIWebView+AFNetworking.h | 82 + .../UIWebView+AFNetworking.m | 159 + .../Expecta/Expecta/EXPBlockDefinedMatcher.h | 25 + .../Expecta/Expecta/EXPBlockDefinedMatcher.m | 60 + .../Pods/Expecta/Expecta/EXPDefines.h | 17 + .../Pods/Expecta/Expecta/EXPDoubleTuple.h | 13 + .../Pods/Expecta/Expecta/EXPDoubleTuple.m | 42 + .../Pods/Expecta/Expecta/EXPExpect.h | 45 + .../Pods/Expecta/Expecta/EXPExpect.m | 214 ++ .../Pods/Expecta/Expecta/EXPFloatTuple.h | 13 + .../Pods/Expecta/Expecta/EXPFloatTuple.m | 52 + .../Pods/Expecta/Expecta/EXPMatcher.h | 20 + .../Expecta/Expecta/EXPUnsupportedObject.h | 11 + .../Expecta/Expecta/EXPUnsupportedObject.m | 20 + .../Pods/Expecta/Expecta/Expecta.h | 15 + .../Pods/Expecta/Expecta/ExpectaObject.h | 18 + .../Pods/Expecta/Expecta/ExpectaObject.m | 15 + .../Pods/Expecta/Expecta/ExpectaSupport.h | 73 + .../Pods/Expecta/Expecta/ExpectaSupport.m | 176 + .../Expecta/Matchers/EXPMatcherHelpers.h | 4 + .../Expecta/Matchers/EXPMatcherHelpers.m | 9 + .../Expecta/Matchers/EXPMatchers+beCloseTo.h | 7 + .../Expecta/Matchers/EXPMatchers+beCloseTo.m | 49 + .../Expecta/Matchers/EXPMatchers+beFalsy.h | 3 + .../Expecta/Matchers/EXPMatchers+beFalsy.m | 24 + .../Matchers/EXPMatchers+beGreaterThan.h | 6 + .../Matchers/EXPMatchers+beGreaterThan.m | 20 + .../EXPMatchers+beGreaterThanOrEqualTo.h | 6 + .../EXPMatchers+beGreaterThanOrEqualTo.m | 20 + .../Matchers/EXPMatchers+beIdenticalTo.h | 10 + .../Matchers/EXPMatchers+beIdenticalTo.m | 24 + .../Matchers/EXPMatchers+beInTheRangeOf.h | 6 + .../Matchers/EXPMatchers+beInTheRangeOf.m | 30 + .../Matchers/EXPMatchers+beInstanceOf.h | 6 + .../Matchers/EXPMatchers+beInstanceOf.m | 31 + .../Expecta/Matchers/EXPMatchers+beKindOf.h | 4 + .../Expecta/Matchers/EXPMatchers+beKindOf.m | 29 + .../Expecta/Matchers/EXPMatchers+beLessThan.h | 6 + .../Expecta/Matchers/EXPMatchers+beLessThan.m | 20 + .../EXPMatchers+beLessThanOrEqualTo.h | 6 + .../EXPMatchers+beLessThanOrEqualTo.m | 20 + .../Expecta/Matchers/EXPMatchers+beNil.h | 4 + .../Expecta/Matchers/EXPMatchers+beNil.m | 18 + .../Matchers/EXPMatchers+beSubclassOf.h | 4 + .../Matchers/EXPMatchers+beSubclassOf.m | 29 + .../Matchers/EXPMatchers+beSupersetOf.h | 4 + .../Matchers/EXPMatchers+beSupersetOf.m | 62 + .../Expecta/Matchers/EXPMatchers+beTruthy.h | 3 + .../Expecta/Matchers/EXPMatchers+beTruthy.m | 24 + .../Expecta/Matchers/EXPMatchers+beginWith.h | 4 + .../Expecta/Matchers/EXPMatchers+beginWith.m | 51 + .../Expecta/Matchers/EXPMatchers+conformTo.h | 3 + .../Expecta/Matchers/EXPMatchers+conformTo.m | 33 + .../Expecta/Matchers/EXPMatchers+contain.h | 5 + .../Expecta/Matchers/EXPMatchers+contain.m | 38 + .../Expecta/Matchers/EXPMatchers+endWith.h | 3 + .../Expecta/Matchers/EXPMatchers+endWith.m | 49 + .../Expecta/Matchers/EXPMatchers+equal.h | 5 + .../Expecta/Matchers/EXPMatchers+equal.m | 31 + .../Matchers/EXPMatchers+haveCountOf.h | 10 + .../Matchers/EXPMatchers+haveCountOf.m | 42 + .../Expecta/Matchers/EXPMatchers+match.h | 3 + .../Expecta/Matchers/EXPMatchers+match.m | 38 + .../Matchers/EXPMatchers+postNotification.h | 4 + .../Matchers/EXPMatchers+postNotification.m | 88 + .../Expecta/Matchers/EXPMatchers+raise.h | 4 + .../Expecta/Matchers/EXPMatchers+raise.m | 30 + .../Matchers/EXPMatchers+raiseWithReason.h | 3 + .../Matchers/EXPMatchers+raiseWithReason.m | 35 + .../Expecta/Matchers/EXPMatchers+respondTo.h | 3 + .../Expecta/Matchers/EXPMatchers+respondTo.m | 28 + .../Expecta/Expecta/Matchers/EXPMatchers.h | 25 + .../Pods/Expecta/Expecta/NSObject+Expecta.h | 10 + .../Pods/Expecta/Expecta/NSValue+Expecta.h | 7 + .../Pods/Expecta/Expecta/NSValue+Expecta.m | 21 + .../SwaggerClientTests/Pods/Expecta/LICENSE | 19 + .../SwaggerClientTests/Pods/Expecta/README.md | 293 ++ .../AFNetworking/AFHTTPRequestOperation.h | 1 + .../AFHTTPRequestOperationManager.h | 1 + .../AFNetworking/AFHTTPSessionManager.h | 1 + .../AFNetworkActivityIndicatorManager.h | 1 + .../AFNetworkReachabilityManager.h | 1 + .../Private/AFNetworking/AFNetworking.h | 1 + .../Private/AFNetworking/AFSecurityPolicy.h | 1 + .../AFNetworking/AFURLConnectionOperation.h | 1 + .../AFNetworking/AFURLRequestSerialization.h | 1 + .../AFNetworking/AFURLResponseSerialization.h | 1 + .../AFNetworking/AFURLSessionManager.h | 1 + .../UIActivityIndicatorView+AFNetworking.h | 1 + .../AFNetworking/UIAlertView+AFNetworking.h | 1 + .../AFNetworking/UIButton+AFNetworking.h | 1 + .../AFNetworking/UIImageView+AFNetworking.h | 1 + .../Private/AFNetworking/UIKit+AFNetworking.h | 1 + .../UIProgressView+AFNetworking.h | 1 + .../UIRefreshControl+AFNetworking.h | 1 + .../AFNetworking/UIWebView+AFNetworking.h | 1 + .../Private/Expecta/EXPBlockDefinedMatcher.h | 1 + .../Pods/Headers/Private/Expecta/EXPDefines.h | 1 + .../Headers/Private/Expecta/EXPDoubleTuple.h | 1 + .../Pods/Headers/Private/Expecta/EXPExpect.h | 1 + .../Headers/Private/Expecta/EXPFloatTuple.h | 1 + .../Pods/Headers/Private/Expecta/EXPMatcher.h | 1 + .../Private/Expecta/EXPMatcherHelpers.h | 1 + .../Private/Expecta/EXPMatchers+beCloseTo.h | 1 + .../Private/Expecta/EXPMatchers+beFalsy.h | 1 + .../Expecta/EXPMatchers+beGreaterThan.h | 1 + .../EXPMatchers+beGreaterThanOrEqualTo.h | 1 + .../Expecta/EXPMatchers+beIdenticalTo.h | 1 + .../Expecta/EXPMatchers+beInTheRangeOf.h | 1 + .../Expecta/EXPMatchers+beInstanceOf.h | 1 + .../Private/Expecta/EXPMatchers+beKindOf.h | 1 + .../Private/Expecta/EXPMatchers+beLessThan.h | 1 + .../Expecta/EXPMatchers+beLessThanOrEqualTo.h | 1 + .../Private/Expecta/EXPMatchers+beNil.h | 1 + .../Expecta/EXPMatchers+beSubclassOf.h | 1 + .../Expecta/EXPMatchers+beSupersetOf.h | 1 + .../Private/Expecta/EXPMatchers+beTruthy.h | 1 + .../Private/Expecta/EXPMatchers+beginWith.h | 1 + .../Private/Expecta/EXPMatchers+conformTo.h | 1 + .../Private/Expecta/EXPMatchers+contain.h | 1 + .../Private/Expecta/EXPMatchers+endWith.h | 1 + .../Private/Expecta/EXPMatchers+equal.h | 1 + .../Private/Expecta/EXPMatchers+haveCountOf.h | 1 + .../Private/Expecta/EXPMatchers+match.h | 1 + .../Expecta/EXPMatchers+postNotification.h | 1 + .../Private/Expecta/EXPMatchers+raise.h | 1 + .../Expecta/EXPMatchers+raiseWithReason.h | 1 + .../Private/Expecta/EXPMatchers+respondTo.h | 1 + .../Headers/Private/Expecta/EXPMatchers.h | 1 + .../Private/Expecta/EXPUnsupportedObject.h | 1 + .../Pods/Headers/Private/Expecta/Expecta.h | 1 + .../Headers/Private/Expecta/ExpectaObject.h | 1 + .../Headers/Private/Expecta/ExpectaSupport.h | 1 + .../Private/Expecta/NSObject+Expecta.h | 1 + .../Headers/Private/Expecta/NSValue+Expecta.h | 1 + .../Pods/Headers/Private/ISO8601/ISO8601.h | 1 + .../Private/ISO8601/ISO8601Serialization.h | 1 + .../Headers/Private/ISO8601/NSDate+ISO8601.h | 1 + .../Pods/Headers/Private/JSONModel/JSONAPI.h | 1 + .../Private/JSONModel/JSONHTTPClient.h | 1 + .../Headers/Private/JSONModel/JSONKeyMapper.h | 1 + .../Private/JSONModel/JSONModel+networking.h | 1 + .../Headers/Private/JSONModel/JSONModel.h | 1 + .../Private/JSONModel/JSONModelArray.h | 1 + .../JSONModel/JSONModelClassProperty.h | 1 + .../Private/JSONModel/JSONModelError.h | 1 + .../Headers/Private/JSONModel/JSONModelLib.h | 1 + .../Private/JSONModel/JSONValueTransformer.h | 1 + .../Private/JSONModel/NSArray+JSONModel.h | 1 + .../Pods/Headers/Private/Specta/SPTCallSite.h | 1 + .../Private/Specta/SPTCompiledExample.h | 1 + .../Pods/Headers/Private/Specta/SPTExample.h | 1 + .../Headers/Private/Specta/SPTExampleGroup.h | 1 + .../Specta/SPTExcludeGlobalBeforeAfterEach.h | 1 + .../Private/Specta/SPTGlobalBeforeAfterEach.h | 1 + .../Private/Specta/SPTSharedExampleGroups.h | 1 + .../Pods/Headers/Private/Specta/SPTSpec.h | 1 + .../Headers/Private/Specta/SPTTestSuite.h | 1 + .../Pods/Headers/Private/Specta/Specta.h | 1 + .../Pods/Headers/Private/Specta/SpectaDSL.h | 1 + .../Pods/Headers/Private/Specta/SpectaTypes.h | 1 + .../Headers/Private/Specta/SpectaUtility.h | 1 + .../Headers/Private/Specta/XCTest+Private.h | 1 + .../Private/Specta/XCTestCase+Specta.h | 1 + .../JSONValueTransformer+ISO8601.h | 1 + .../Private/SwaggerClient/SWGApiClient.h | 1 + .../Private/SwaggerClient/SWGCategory.h | 1 + .../Private/SwaggerClient/SWGConfiguration.h | 1 + .../Headers/Private/SwaggerClient/SWGFile.h | 1 + .../SwaggerClient/SWGJSONRequestSerializer.h | 1 + .../SwaggerClient/SWGJSONResponseSerializer.h | 1 + .../Private/SwaggerClient/SWGMyresult.h | 1 + .../Private/SwaggerClient/SWGMythingApi.h | 1 + .../Headers/Private/SwaggerClient/SWGObject.h | 1 + .../Headers/Private/SwaggerClient/SWGOrder.h | 1 + .../Headers/Private/SwaggerClient/SWGPet.h | 1 + .../Headers/Private/SwaggerClient/SWGPetApi.h | 1 + .../SwaggerClient/SWGQueryParamCollection.h | 1 + .../Private/SwaggerClient/SWGStoreApi.h | 1 + .../Headers/Private/SwaggerClient/SWGTag.h | 1 + .../Headers/Private/SwaggerClient/SWGUser.h | 1 + .../Private/SwaggerClient/SWGUserApi.h | 1 + .../AFNetworking/AFHTTPRequestOperation.h | 1 + .../AFHTTPRequestOperationManager.h | 1 + .../AFNetworking/AFHTTPSessionManager.h | 1 + .../AFNetworkActivityIndicatorManager.h | 1 + .../AFNetworkReachabilityManager.h | 1 + .../Public/AFNetworking/AFNetworking.h | 1 + .../Public/AFNetworking/AFSecurityPolicy.h | 1 + .../AFNetworking/AFURLConnectionOperation.h | 1 + .../AFNetworking/AFURLRequestSerialization.h | 1 + .../AFNetworking/AFURLResponseSerialization.h | 1 + .../Public/AFNetworking/AFURLSessionManager.h | 1 + .../UIActivityIndicatorView+AFNetworking.h | 1 + .../AFNetworking/UIAlertView+AFNetworking.h | 1 + .../AFNetworking/UIButton+AFNetworking.h | 1 + .../AFNetworking/UIImageView+AFNetworking.h | 1 + .../Public/AFNetworking/UIKit+AFNetworking.h | 1 + .../UIProgressView+AFNetworking.h | 1 + .../UIRefreshControl+AFNetworking.h | 1 + .../AFNetworking/UIWebView+AFNetworking.h | 1 + .../Public/Expecta/EXPBlockDefinedMatcher.h | 1 + .../Pods/Headers/Public/Expecta/EXPDefines.h | 1 + .../Headers/Public/Expecta/EXPDoubleTuple.h | 1 + .../Pods/Headers/Public/Expecta/EXPExpect.h | 1 + .../Headers/Public/Expecta/EXPFloatTuple.h | 1 + .../Pods/Headers/Public/Expecta/EXPMatcher.h | 1 + .../Public/Expecta/EXPMatcherHelpers.h | 1 + .../Public/Expecta/EXPMatchers+beCloseTo.h | 1 + .../Public/Expecta/EXPMatchers+beFalsy.h | 1 + .../Expecta/EXPMatchers+beGreaterThan.h | 1 + .../EXPMatchers+beGreaterThanOrEqualTo.h | 1 + .../Expecta/EXPMatchers+beIdenticalTo.h | 1 + .../Expecta/EXPMatchers+beInTheRangeOf.h | 1 + .../Public/Expecta/EXPMatchers+beInstanceOf.h | 1 + .../Public/Expecta/EXPMatchers+beKindOf.h | 1 + .../Public/Expecta/EXPMatchers+beLessThan.h | 1 + .../Expecta/EXPMatchers+beLessThanOrEqualTo.h | 1 + .../Public/Expecta/EXPMatchers+beNil.h | 1 + .../Public/Expecta/EXPMatchers+beSubclassOf.h | 1 + .../Public/Expecta/EXPMatchers+beSupersetOf.h | 1 + .../Public/Expecta/EXPMatchers+beTruthy.h | 1 + .../Public/Expecta/EXPMatchers+beginWith.h | 1 + .../Public/Expecta/EXPMatchers+conformTo.h | 1 + .../Public/Expecta/EXPMatchers+contain.h | 1 + .../Public/Expecta/EXPMatchers+endWith.h | 1 + .../Public/Expecta/EXPMatchers+equal.h | 1 + .../Public/Expecta/EXPMatchers+haveCountOf.h | 1 + .../Public/Expecta/EXPMatchers+match.h | 1 + .../Expecta/EXPMatchers+postNotification.h | 1 + .../Public/Expecta/EXPMatchers+raise.h | 1 + .../Expecta/EXPMatchers+raiseWithReason.h | 1 + .../Public/Expecta/EXPMatchers+respondTo.h | 1 + .../Pods/Headers/Public/Expecta/EXPMatchers.h | 1 + .../Public/Expecta/EXPUnsupportedObject.h | 1 + .../Pods/Headers/Public/Expecta/Expecta.h | 1 + .../Headers/Public/Expecta/ExpectaObject.h | 1 + .../Headers/Public/Expecta/ExpectaSupport.h | 1 + .../Headers/Public/Expecta/NSObject+Expecta.h | 1 + .../Headers/Public/Expecta/NSValue+Expecta.h | 1 + .../Pods/Headers/Public/ISO8601/ISO8601.h | 1 + .../Public/ISO8601/ISO8601Serialization.h | 1 + .../Headers/Public/ISO8601/NSDate+ISO8601.h | 1 + .../Pods/Headers/Public/JSONModel/JSONAPI.h | 1 + .../Headers/Public/JSONModel/JSONHTTPClient.h | 1 + .../Headers/Public/JSONModel/JSONKeyMapper.h | 1 + .../Public/JSONModel/JSONModel+networking.h | 1 + .../Pods/Headers/Public/JSONModel/JSONModel.h | 1 + .../Headers/Public/JSONModel/JSONModelArray.h | 1 + .../Public/JSONModel/JSONModelClassProperty.h | 1 + .../Headers/Public/JSONModel/JSONModelError.h | 1 + .../Headers/Public/JSONModel/JSONModelLib.h | 1 + .../Public/JSONModel/JSONValueTransformer.h | 1 + .../Public/JSONModel/NSArray+JSONModel.h | 1 + .../Pods/Headers/Public/Specta/SPTCallSite.h | 1 + .../Public/Specta/SPTCompiledExample.h | 1 + .../Pods/Headers/Public/Specta/SPTExample.h | 1 + .../Headers/Public/Specta/SPTExampleGroup.h | 1 + .../Specta/SPTExcludeGlobalBeforeAfterEach.h | 1 + .../Public/Specta/SPTGlobalBeforeAfterEach.h | 1 + .../Public/Specta/SPTSharedExampleGroups.h | 1 + .../Pods/Headers/Public/Specta/SPTSpec.h | 1 + .../Pods/Headers/Public/Specta/SPTTestSuite.h | 1 + .../Pods/Headers/Public/Specta/Specta.h | 1 + .../Pods/Headers/Public/Specta/SpectaDSL.h | 1 + .../Pods/Headers/Public/Specta/SpectaTypes.h | 1 + .../Headers/Public/Specta/SpectaUtility.h | 1 + .../Headers/Public/Specta/XCTest+Private.h | 1 + .../Headers/Public/Specta/XCTestCase+Specta.h | 1 + .../JSONValueTransformer+ISO8601.h | 1 + .../Public/SwaggerClient/SWGApiClient.h | 1 + .../Public/SwaggerClient/SWGCategory.h | 1 + .../Public/SwaggerClient/SWGConfiguration.h | 1 + .../Headers/Public/SwaggerClient/SWGFile.h | 1 + .../SwaggerClient/SWGJSONRequestSerializer.h | 1 + .../SwaggerClient/SWGJSONResponseSerializer.h | 1 + .../Public/SwaggerClient/SWGMyresult.h | 1 + .../Public/SwaggerClient/SWGMythingApi.h | 1 + .../Headers/Public/SwaggerClient/SWGObject.h | 1 + .../Headers/Public/SwaggerClient/SWGOrder.h | 1 + .../Headers/Public/SwaggerClient/SWGPet.h | 1 + .../Headers/Public/SwaggerClient/SWGPetApi.h | 1 + .../SwaggerClient/SWGQueryParamCollection.h | 1 + .../Public/SwaggerClient/SWGStoreApi.h | 1 + .../Headers/Public/SwaggerClient/SWGTag.h | 1 + .../Headers/Public/SwaggerClient/SWGUser.h | 1 + .../Headers/Public/SwaggerClient/SWGUserApi.h | 1 + .../Pods/ISO8601/ISO8601/ISO8601.h | 22 + .../ISO8601/ISO8601/ISO8601Serialization.h | 40 + .../ISO8601/ISO8601/ISO8601Serialization.m | 152 + .../Pods/ISO8601/ISO8601/NSDate+ISO8601.h | 65 + .../Pods/ISO8601/ISO8601/NSDate+ISO8601.m | 69 + .../SwaggerClientTests/Pods/ISO8601/LICENSE | 20 + .../Pods/ISO8601/Readme.markdown | 73 + .../JSONModel/JSONModel/JSONModel/JSONModel.h | 334 ++ .../JSONModel/JSONModel/JSONModel/JSONModel.m | 1309 +++++++ .../JSONModel/JSONModel/JSONModelArray.h | 60 + .../JSONModel/JSONModel/JSONModelArray.m | 145 + .../JSONModel/JSONModelClassProperty.h | 77 + .../JSONModel/JSONModelClassProperty.m | 48 + .../JSONModel/JSONModel/JSONModelError.h | 112 + .../JSONModel/JSONModel/JSONModelError.m | 93 + .../JSONModelCategories/NSArray+JSONModel.h | 40 + .../JSONModelCategories/NSArray+JSONModel.m | 28 + .../Pods/JSONModel/JSONModel/JSONModelLib.h | 35 + .../JSONModel/JSONModelNetworking/JSONAPI.h | 90 + .../JSONModel/JSONModelNetworking/JSONAPI.m | 152 + .../JSONModelNetworking/JSONHTTPClient.h | 175 + .../JSONModelNetworking/JSONHTTPClient.m | 374 ++ .../JSONModel+networking.h | 66 + .../JSONModel+networking.m | 109 + .../JSONModelTransformations/JSONKeyMapper.h | 95 + .../JSONModelTransformations/JSONKeyMapper.m | 174 + .../JSONValueTransformer.h | 230 ++ .../JSONValueTransformer.m | 272 ++ .../Pods/JSONModel/LICENSE_jsonmodel.txt | 23 + .../Pods/JSONModel/README.md | 527 +++ .../Local Podspecs/SwaggerClient.podspec.json | 37 + .../SwaggerClientTests/Pods/Manifest.lock | 49 + .../Pods/Pods.xcodeproj/project.pbxproj | 3349 +++++++++++++++++ ...waggerClient_Example-AFNetworking.xcscheme | 59 + ...ods-SwaggerClient_Example-ISO8601.xcscheme | 59 + ...s-SwaggerClient_Example-JSONModel.xcscheme | 59 + ...ample-SwaggerClient-SwaggerClient.xcscheme | 59 + ...aggerClient_Example-SwaggerClient.xcscheme | 59 + .../Pods-SwaggerClient_Example.xcscheme | 59 + ...-SwaggerClient_Tests-AFNetworking.xcscheme | 59 + .../Pods-SwaggerClient_Tests-Expecta.xcscheme | 59 + .../Pods-SwaggerClient_Tests-ISO8601.xcscheme | 59 + ...ods-SwaggerClient_Tests-JSONModel.xcscheme | 59 + .../Pods-SwaggerClient_Tests-Specta.xcscheme | 59 + ...Tests-SwaggerClient-SwaggerClient.xcscheme | 59 + ...SwaggerClient_Tests-SwaggerClient.xcscheme | 59 + .../Pods-SwaggerClient_Tests.xcscheme | 59 + .../xcschemes/xcschememanagement.plist | 152 + .../SwaggerClientTests/Pods/Specta/LICENSE | 20 + .../SwaggerClientTests/Pods/Specta/README.md | 176 + .../Pods/Specta/Specta/Specta/SPTCallSite.h | 12 + .../Pods/Specta/Specta/Specta/SPTCallSite.m | 18 + .../Specta/Specta/Specta/SPTCompiledExample.h | 17 + .../Specta/Specta/Specta/SPTCompiledExample.m | 17 + .../Pods/Specta/Specta/Specta/SPTExample.h | 17 + .../Pods/Specta/Specta/Specta/SPTExample.m | 17 + .../Specta/Specta/Specta/SPTExampleGroup.h | 36 + .../Specta/Specta/Specta/SPTExampleGroup.m | 335 ++ .../Specta/SPTExcludeGlobalBeforeAfterEach.h | 10 + .../Specta/Specta/SPTGlobalBeforeAfterEach.h | 15 + .../Specta/Specta/SPTSharedExampleGroups.h | 17 + .../Specta/Specta/SPTSharedExampleGroups.m | 74 + .../Pods/Specta/Specta/Specta/SPTSpec.h | 28 + .../Pods/Specta/Specta/Specta/SPTSpec.m | 209 + .../Pods/Specta/Specta/Specta/SPTTestSuite.h | 21 + .../Pods/Specta/Specta/Specta/SPTTestSuite.m | 31 + .../Pods/Specta/Specta/Specta/Specta.h | 14 + .../Pods/Specta/Specta/Specta/SpectaDSL.h | 90 + .../Pods/Specta/Specta/Specta/SpectaDSL.m | 189 + .../Pods/Specta/Specta/Specta/SpectaTypes.h | 5 + .../Pods/Specta/Specta/Specta/SpectaUtility.h | 18 + .../Pods/Specta/Specta/Specta/SpectaUtility.m | 79 + .../Specta/Specta/Specta/XCTest+Private.h | 40 + .../Specta/Specta/Specta/XCTestCase+Specta.h | 7 + .../Specta/Specta/Specta/XCTestCase+Specta.m | 65 + .../Info.plist | 26 + ...ient_Example-AFNetworking-Private.xcconfig | 9 + ...SwaggerClient_Example-AFNetworking-dummy.m | 5 + ...ggerClient_Example-AFNetworking-prefix.pch | 5 + ...ggerClient_Example-AFNetworking-umbrella.h | 34 + ...aggerClient_Example-AFNetworking.modulemap | 6 + ...waggerClient_Example-AFNetworking.xcconfig | 1 + .../Info.plist | 26 + ...gerClient_Example-ISO8601-Private.xcconfig | 9 + ...Pods-SwaggerClient_Example-ISO8601-dummy.m | 5 + ...s-SwaggerClient_Example-ISO8601-prefix.pch | 5 + ...s-SwaggerClient_Example-ISO8601-umbrella.h | 9 + ...ds-SwaggerClient_Example-ISO8601.modulemap | 6 + ...ods-SwaggerClient_Example-ISO8601.xcconfig | 1 + .../Info.plist | 26 + ...rClient_Example-JSONModel-Private.xcconfig | 9 + ...ds-SwaggerClient_Example-JSONModel-dummy.m | 5 + ...SwaggerClient_Example-JSONModel-prefix.pch | 5 + ...SwaggerClient_Example-JSONModel-umbrella.h | 17 + ...-SwaggerClient_Example-JSONModel.modulemap | 6 + ...s-SwaggerClient_Example-JSONModel.xcconfig | 0 .../Info.plist | 26 + ...ent_Example-SwaggerClient-Private.xcconfig | 9 + ...waggerClient_Example-SwaggerClient-dummy.m | 5 + ...gerClient_Example-SwaggerClient-prefix.pch | 5 + ...gerClient_Example-SwaggerClient-umbrella.h | 24 + ...ggerClient_Example-SwaggerClient.modulemap | 6 + ...aggerClient_Example-SwaggerClient.xcconfig | 0 .../Pods-SwaggerClient_Example/Info.plist | 26 + ...erClient_Example-acknowledgements.markdown | 100 + ...aggerClient_Example-acknowledgements.plist | 142 + .../Pods-SwaggerClient_Example-dummy.m | 5 + .../Pods-SwaggerClient_Example-environment.h | 68 + .../Pods-SwaggerClient_Example-frameworks.sh | 61 + .../Pods-SwaggerClient_Example-resources.sh | 93 + .../Pods-SwaggerClient_Example-umbrella.h | 6 + .../Pods-SwaggerClient_Example.debug.xcconfig | 8 + .../Pods-SwaggerClient_Example.modulemap | 6 + ...ods-SwaggerClient_Example.release.xcconfig | 8 + .../Info.plist | 26 + ...Client_Tests-AFNetworking-Private.xcconfig | 9 + ...s-SwaggerClient_Tests-AFNetworking-dummy.m | 5 + ...waggerClient_Tests-AFNetworking-prefix.pch | 5 + ...waggerClient_Tests-AFNetworking-umbrella.h | 34 + ...SwaggerClient_Tests-AFNetworking.modulemap | 6 + ...-SwaggerClient_Tests-AFNetworking.xcconfig | 1 + .../Info.plist | 26 + ...aggerClient_Tests-Expecta-Private.xcconfig | 9 + .../Pods-SwaggerClient_Tests-Expecta-dummy.m | 5 + ...ods-SwaggerClient_Tests-Expecta-prefix.pch | 5 + ...ods-SwaggerClient_Tests-Expecta-umbrella.h | 45 + ...Pods-SwaggerClient_Tests-Expecta.modulemap | 6 + .../Pods-SwaggerClient_Tests-Expecta.xcconfig | 2 + .../Info.plist | 26 + ...aggerClient_Tests-ISO8601-Private.xcconfig | 9 + .../Pods-SwaggerClient_Tests-ISO8601-dummy.m | 5 + ...ods-SwaggerClient_Tests-ISO8601-prefix.pch | 5 + ...ods-SwaggerClient_Tests-ISO8601-umbrella.h | 9 + ...Pods-SwaggerClient_Tests-ISO8601.modulemap | 6 + .../Pods-SwaggerClient_Tests-ISO8601.xcconfig | 1 + .../Info.plist | 26 + ...gerClient_Tests-JSONModel-Private.xcconfig | 9 + ...Pods-SwaggerClient_Tests-JSONModel-dummy.m | 5 + ...s-SwaggerClient_Tests-JSONModel-prefix.pch | 5 + ...s-SwaggerClient_Tests-JSONModel-umbrella.h | 17 + ...ds-SwaggerClient_Tests-JSONModel.modulemap | 6 + ...ods-SwaggerClient_Tests-JSONModel.xcconfig | 0 .../Info.plist | 26 + ...waggerClient_Tests-Specta-Private.xcconfig | 9 + .../Pods-SwaggerClient_Tests-Specta-dummy.m | 5 + ...Pods-SwaggerClient_Tests-Specta-prefix.pch | 5 + ...Pods-SwaggerClient_Tests-Specta-umbrella.h | 21 + .../Pods-SwaggerClient_Tests-Specta.modulemap | 6 + .../Pods-SwaggerClient_Tests-Specta.xcconfig | 2 + .../Info.plist | 26 + ...lient_Tests-SwaggerClient-Private.xcconfig | 9 + ...-SwaggerClient_Tests-SwaggerClient-dummy.m | 5 + ...aggerClient_Tests-SwaggerClient-prefix.pch | 5 + ...aggerClient_Tests-SwaggerClient-umbrella.h | 24 + ...waggerClient_Tests-SwaggerClient.modulemap | 6 + ...SwaggerClient_Tests-SwaggerClient.xcconfig | 0 .../Pods-SwaggerClient_Tests/Info.plist | 26 + ...ggerClient_Tests-acknowledgements.markdown | 147 + ...SwaggerClient_Tests-acknowledgements.plist | 197 + .../Pods-SwaggerClient_Tests-dummy.m | 5 + .../Pods-SwaggerClient_Tests-environment.h | 80 + .../Pods-SwaggerClient_Tests-frameworks.sh | 65 + .../Pods-SwaggerClient_Tests-resources.sh | 93 + .../Pods-SwaggerClient_Tests-umbrella.h | 6 + .../Pods-SwaggerClient_Tests.debug.xcconfig | 8 + .../Pods-SwaggerClient_Tests.modulemap | 6 + .../Pods-SwaggerClient_Tests.release.xcconfig | 8 + .../SwaggerClient.xcodeproj/project.pbxproj | 630 ++++ .../contents.xcworkspacedata | 2 +- .../xcschemes/SwaggerClient-Example.xcscheme} | 46 +- .../xcschemes/xcschememanagement.plist | 12 +- .../contents.xcworkspacedata | 2 +- .../UserInterfaceState.xcuserstate | Bin 0 -> 16390 bytes .../AppIcon.appiconset/Contents.json | 53 + .../LaunchImage.launchimage/Contents.json | 51 + .../SwaggerClient/Main.storyboard | 27 + .../SwaggerClient/SWGAppDelegate.h | 15 + .../SwaggerClient/SWGAppDelegate.m} | 12 +- .../SwaggerClient/SWGViewController.h | 13 + .../SwaggerClient/SWGViewController.m | 29 + .../SwaggerClient/SwaggerClient-Info.plist | 6 +- .../SwaggerClient/SwaggerClient-Prefix.pch | 5 +- .../SwaggerClient/en.lproj/InfoPlist.strings | 0 .../SwaggerClientTests/SwaggerClient/main.m | 17 + .../Tests}/PetApiTest.m | 13 +- .../Tests}/SWGApiClientTest.m | 4 +- .../Tests}/StoreApiTest.m | 2 +- .../Tests/Tests-Info.plist} | 2 +- .../SwaggerClientTests/Tests/Tests-Prefix.pch | 8 + .../objc/SwaggerClientTests/Tests/Tests.m | 52 + .../Tests}/UserApiTest.m | 2 +- .../Tests}/en.lproj/InfoPlist.strings | 0 575 files changed, 27278 insertions(+), 1373 deletions(-) delete mode 100644 modules/swagger-codegen/src/main/resources/objc/Podfile.mustache create mode 100644 modules/swagger-codegen/src/main/resources/objc/podspec.mustache create mode 100644 samples/client/petstore/objc/LICENSE delete mode 100644 samples/client/petstore/objc/Podfile create mode 100644 samples/client/petstore/objc/README.md create mode 100644 samples/client/petstore/objc/SwaggerClient.podspec delete mode 100644 samples/client/petstore/objc/SwaggerClient.xcworkspace/xcshareddata/SwaggerClient.xccheckout delete mode 100644 samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist rename samples/client/petstore/objc/{client => SwaggerClient}/JSONValueTransformer+ISO8601.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/JSONValueTransformer+ISO8601.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGApiClient.h (98%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGApiClient.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGCategory.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGCategory.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGConfiguration.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGConfiguration.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGFile.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGFile.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGJSONRequestSerializer.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGJSONRequestSerializer.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGJSONResponseSerializer.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGJSONResponseSerializer.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGObject.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGObject.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGOrder.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGOrder.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGPet.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGPet.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGPetApi.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGPetApi.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGQueryParamCollection.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGQueryParamCollection.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGStoreApi.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGStoreApi.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGTag.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGTag.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGUser.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGUser.m (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGUserApi.h (100%) rename samples/client/petstore/objc/{client => SwaggerClient}/SWGUserApi.m (100%) delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/PetstoreClient.xccheckout delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/PetstoreClient.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPad.storyboard delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPhone.storyboard delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/AppIcon.appiconset/Contents.json delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/LaunchImage.launchimage/Contents.json delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/main.m delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClient/test-1.png delete mode 100644 samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/pom.xml create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Podfile rename samples/client/petstore/objc/{ => SwaggerClientTests}/Podfile.lock (72%) create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPMatcher.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h create mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h create mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh create mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h create mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh create mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj rename samples/client/petstore/objc/{SwaggerClient => SwaggerClientTests}/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata (68%) rename samples/client/petstore/objc/{SwaggerClient/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme => SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient-Example.xcscheme} (66%) rename samples/client/petstore/objc/{SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad => SwaggerClientTests/SwaggerClient.xcodeproj/xcuserdata/geekerzp.xcuserdatad}/xcschemes/xcschememanagement.plist (60%) rename samples/client/petstore/objc/{ => SwaggerClientTests}/SwaggerClient.xcworkspace/contents.xcworkspacedata (73%) create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/Images.xcassets/AppIcon.appiconset/Contents.json create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/Main.storyboard create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.h rename samples/client/petstore/objc/{SwaggerClient/SwaggerClient/AppDelegate.m => SwaggerClientTests/SwaggerClient/SWGAppDelegate.m} (90%) create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.h create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m rename samples/client/petstore/objc/{SwaggerClient => SwaggerClientTests}/SwaggerClient/SwaggerClient-Info.plist (89%) rename samples/client/petstore/objc/{SwaggerClient => SwaggerClientTests}/SwaggerClient/SwaggerClient-Prefix.pch (69%) rename samples/client/petstore/objc/{SwaggerClient => SwaggerClientTests}/SwaggerClient/en.lproj/InfoPlist.strings (100%) create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/main.m rename samples/client/petstore/objc/{SwaggerClient/SwaggerClientTests => SwaggerClientTests/Tests}/PetApiTest.m (97%) rename samples/client/petstore/objc/{SwaggerClient/SwaggerClientTests => SwaggerClientTests/Tests}/SWGApiClientTest.m (98%) rename samples/client/petstore/objc/{SwaggerClient/SwaggerClientTests => SwaggerClientTests/Tests}/StoreApiTest.m (95%) rename samples/client/petstore/objc/{SwaggerClient/SwaggerClientTests/SwaggerClientTests-Info.plist => SwaggerClientTests/Tests/Tests-Info.plist} (89%) create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch create mode 100644 samples/client/petstore/objc/SwaggerClientTests/Tests/Tests.m rename samples/client/petstore/objc/{SwaggerClient/SwaggerClientTests => SwaggerClientTests/Tests}/UserApiTest.m (97%) rename samples/client/petstore/objc/{SwaggerClient/SwaggerClientTests => SwaggerClientTests/Tests}/en.lproj/InfoPlist.strings (100%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 5bfc5e59339..d282997107a 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -18,43 +18,57 @@ import java.util.Set; public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { protected Set foundationClasses = new HashSet(); - protected String sourceFolder = "client"; - protected String classPrefix = "SWG"; - protected String projectName = "SwaggerClient"; + protected String podName = null; + protected String podVersion = null; + protected String classPrefix = null; public ObjcClientCodegen() { super(); + outputFolder = "generated-code" + File.separator + "objc"; modelTemplateFiles.put("model-header.mustache", ".h"); modelTemplateFiles.put("model-body.mustache", ".m"); apiTemplateFiles.put("api-header.mustache", ".h"); apiTemplateFiles.put("api-body.mustache", ".m"); templateDir = "objc"; - modelPackage = ""; - defaultIncludes = new HashSet( - Arrays.asList( - "bool", - "BOOL", - "int", - "NSString", - "NSObject", - "NSArray", - "NSNumber", - "NSDate", - "NSDictionary", - "NSMutableArray", - "NSMutableDictionary") - ); - languageSpecificPrimitives = new HashSet( - Arrays.asList( - "NSNumber", - "NSString", - "NSObject", - "NSDate", - "bool", - "BOOL") - ); + defaultIncludes.clear(); + defaultIncludes.add("bool"); + defaultIncludes.add("BOOL"); + defaultIncludes.add("int"); + defaultIncludes.add("NSString"); + defaultIncludes.add("NSObject"); + defaultIncludes.add("NSArray"); + defaultIncludes.add("NSNumber"); + defaultIncludes.add("NSDate"); + defaultIncludes.add("NSDictionary"); + defaultIncludes.add("NSMutableArray"); + defaultIncludes.add("NSMutableDictionary"); + + languageSpecificPrimitives.clear(); + languageSpecificPrimitives.add("NSNumber"); + languageSpecificPrimitives.add("NSString"); + languageSpecificPrimitives.add("NSObject"); + languageSpecificPrimitives.add("NSDate"); + languageSpecificPrimitives.add("bool"); + languageSpecificPrimitives.add("BOOL"); + + typeMapping.clear(); + typeMapping.put("enum", "NSString"); + typeMapping.put("Date", "NSDate"); + typeMapping.put("DateTime", "NSDate"); + typeMapping.put("boolean", "NSNumber"); + typeMapping.put("string", "NSString"); + typeMapping.put("integer", "NSNumber"); + typeMapping.put("int", "NSNumber"); + typeMapping.put("float", "NSNumber"); + typeMapping.put("long", "NSNumber"); + typeMapping.put("double", "NSNumber"); + typeMapping.put("array", "NSArray"); + typeMapping.put("map", "NSDictionary"); + typeMapping.put("number", "NSNumber"); + typeMapping.put("List", "NSArray"); + typeMapping.put("object", "NSObject"); // ref: http://www.tutorialspoint.com/objective_c/objective_c_basic_syntax.htm reservedWords = new HashSet( @@ -74,23 +88,6 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { "description" )); - typeMapping = new HashMap(); - typeMapping.put("enum", "NSString"); - typeMapping.put("Date", "NSDate"); - typeMapping.put("DateTime", "NSDate"); - typeMapping.put("boolean", "NSNumber"); - typeMapping.put("string", "NSString"); - typeMapping.put("integer", "NSNumber"); - typeMapping.put("int", "NSNumber"); - typeMapping.put("float", "NSNumber"); - typeMapping.put("long", "NSNumber"); - typeMapping.put("double", "NSNumber"); - typeMapping.put("array", "NSArray"); - typeMapping.put("map", "NSDictionary"); - typeMapping.put("number", "NSNumber"); - typeMapping.put("List", "NSArray"); - typeMapping.put("object", "NSObject"); - importMapping = new HashMap(); foundationClasses = new HashSet( @@ -105,9 +102,10 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { instantiationTypes.put("array", "NSMutableArray"); instantiationTypes.put("map", "NSMutableDictionary"); + cliOptions.clear(); cliOptions.add(new CliOption("classPrefix", "prefix for generated classes")); - cliOptions.add(new CliOption("sourceFolder", "source folder for generated code")); - cliOptions.add(new CliOption("projectName", "name of the Xcode project in generated Podfile")); + cliOptions.add(new CliOption("podName", "cocoapods package name")); + cliOptions.add(new CliOption("podVersion", "cocoapods package version")); } public CodegenType getTag() { @@ -126,37 +124,52 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { public void processOpts() { super.processOpts(); - if (additionalProperties.containsKey("sourceFolder")) { - this.setSourceFolder((String) additionalProperties.get("sourceFolder")); + if (additionalProperties.containsKey("podName")) { + setPodName((String) additionalProperties.get("podName")); + } + else { + setPodName("SwaggerClient"); + } + + if (additionalProperties.containsKey("podVersion")) { + setPodVersion((String) additionalProperties.get("podVersion")); + } + else { + setPodVersion("1.0.0"); } if (additionalProperties.containsKey("classPrefix")) { - this.setClassPrefix((String) additionalProperties.get("classPrefix")); + setClassPrefix((String) additionalProperties.get("classPrefix")); + } + else { + setClassPrefix("SWG"); } - if (additionalProperties.containsKey("projectName")) { - this.setProjectName((String) additionalProperties.get("projectName")); - } else { - additionalProperties.put("projectName", projectName); - } + additionalProperties.put("podName", podName); + additionalProperties.put("podVersion", podVersion); - supportingFiles.add(new SupportingFile("SWGObject.h", sourceFolder, "SWGObject.h")); - supportingFiles.add(new SupportingFile("SWGObject.m", sourceFolder, "SWGObject.m")); - supportingFiles.add(new SupportingFile("SWGQueryParamCollection.h", sourceFolder, "SWGQueryParamCollection.h")); - supportingFiles.add(new SupportingFile("SWGQueryParamCollection.m", sourceFolder, "SWGQueryParamCollection.m")); - supportingFiles.add(new SupportingFile("SWGApiClient-header.mustache", sourceFolder, "SWGApiClient.h")); - supportingFiles.add(new SupportingFile("SWGApiClient-body.mustache", sourceFolder, "SWGApiClient.m")); - supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-header.mustache", sourceFolder, "SWGJSONResponseSerializer.h")); - supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-body.mustache", sourceFolder, "SWGJSONResponseSerializer.m")); - supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-body.mustache", sourceFolder, "SWGJSONRequestSerializer.m")); - supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-header.mustache", sourceFolder, "SWGJSONRequestSerializer.h")); - supportingFiles.add(new SupportingFile("SWGFile.h", sourceFolder, "SWGFile.h")); - supportingFiles.add(new SupportingFile("SWGFile.m", sourceFolder, "SWGFile.m")); - supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", sourceFolder, "JSONValueTransformer+ISO8601.m")); - supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", sourceFolder, "JSONValueTransformer+ISO8601.h")); - supportingFiles.add(new SupportingFile("SWGConfiguration-body.mustache", sourceFolder, "SWGConfiguration.m")); - supportingFiles.add(new SupportingFile("SWGConfiguration-header.mustache", sourceFolder, "SWGConfiguration.h")); - supportingFiles.add(new SupportingFile("Podfile.mustache", "", "Podfile")); + String swaggerFolder = podName; + + modelPackage = swaggerFolder; + apiPackage = swaggerFolder; + + supportingFiles.add(new SupportingFile("SWGObject.h", swaggerFolder, classPrefix + "Object.h")); + supportingFiles.add(new SupportingFile("SWGObject.m", swaggerFolder, classPrefix + "Object.m")); + supportingFiles.add(new SupportingFile("SWGQueryParamCollection.h", swaggerFolder, classPrefix + "QueryParamCollection.h")); + supportingFiles.add(new SupportingFile("SWGQueryParamCollection.m", swaggerFolder, classPrefix + "QueryParamCollection.m")); + supportingFiles.add(new SupportingFile("SWGApiClient-header.mustache", swaggerFolder, classPrefix + "ApiClient.h")); + supportingFiles.add(new SupportingFile("SWGApiClient-body.mustache", swaggerFolder, classPrefix + "ApiClient.m")); + supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-header.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.h")); + supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m")); + supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m")); + supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h")); + supportingFiles.add(new SupportingFile("SWGFile.h", swaggerFolder, classPrefix + "File.h")); + supportingFiles.add(new SupportingFile("SWGFile.m", swaggerFolder, classPrefix + "File.m")); + supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", swaggerFolder, "JSONValueTransformer+ISO8601.m")); + supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", swaggerFolder, "JSONValueTransformer+ISO8601.h")); + supportingFiles.add(new SupportingFile("SWGConfiguration-body.mustache", swaggerFolder, classPrefix + "Configuration.m")); + supportingFiles.add(new SupportingFile("SWGConfiguration-header.mustache", swaggerFolder, classPrefix + "Configuration.h")); + supportingFiles.add(new SupportingFile("podspec.mustache", "", podName + ".podspec")); } @Override @@ -362,15 +375,15 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { return camelize(operationId, true); } - public void setSourceFolder(String sourceFolder) { - this.sourceFolder = sourceFolder; - } - public void setClassPrefix(String classPrefix) { this.classPrefix = classPrefix; } - public void setProjectName(String projectName) { - this.projectName = projectName; + public void setPodName(String podName) { + this.podName = podName; + } + + public void setPodVersion(String podVersion) { + this.podVersion = podVersion; } } diff --git a/modules/swagger-codegen/src/main/resources/objc/Podfile.mustache b/modules/swagger-codegen/src/main/resources/objc/Podfile.mustache deleted file mode 100644 index c61ab59dd8f..00000000000 --- a/modules/swagger-codegen/src/main/resources/objc/Podfile.mustache +++ /dev/null @@ -1,5 +0,0 @@ -platform :ios, '6.0' -xcodeproj '{{projectName}}/{{projectName}}.xcodeproj' -pod 'AFNetworking', '~> 2.1' -pod 'JSONModel', '~> 1.0' -pod 'ISO8601' diff --git a/modules/swagger-codegen/src/main/resources/objc/podspec.mustache b/modules/swagger-codegen/src/main/resources/objc/podspec.mustache new file mode 100644 index 00000000000..961e4f36caa --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/podspec.mustache @@ -0,0 +1,31 @@ +# +# Be sure to run `pod lib lint {{podName}}.podspec' to ensure this is a +# valid spec and remove all comments before submitting the spec. +# +# Any lines starting with a # are optional, but encouraged +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html +# + +Pod::Spec.new do |s| + s.name = "{{podName}}" + s.version = "{{podVersion}}" +{{#apiInfo}}{{#apis}}{{^hasMore}} + s.summary = "{{appName}}" + s.description = <<-DESC + {{appDescription}} + DESC +{{/hasMore}}{{/apis}}{{/apiInfo}} + s.license = 'MIT' + + s.platform = :ios, '7.0' + s.requires_arc = true + + s.source_files = '{{podName}}/**/*' + s.public_header_files = '{{podVersion}}/**/*.h' + + s.dependency 'AFNetworking', '~> 2.3' + s.dependency 'JSONModel', '~> 1.1' + s.dependency 'ISO8601', '~> 0.3' +end + diff --git a/samples/client/petstore/objc/LICENSE b/samples/client/petstore/objc/LICENSE new file mode 100644 index 00000000000..0a7c3babc79 --- /dev/null +++ b/samples/client/petstore/objc/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015 geekerzp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/samples/client/petstore/objc/Podfile b/samples/client/petstore/objc/Podfile deleted file mode 100644 index ad41463f60c..00000000000 --- a/samples/client/petstore/objc/Podfile +++ /dev/null @@ -1,5 +0,0 @@ -platform :ios, '6.0' -xcodeproj 'SwaggerClient/SwaggerClient.xcodeproj' -pod 'AFNetworking', '~> 2.1' -pod 'JSONModel', '~> 1.0' -pod 'ISO8601' diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md new file mode 100644 index 00000000000..22a5fc2634f --- /dev/null +++ b/samples/client/petstore/objc/README.md @@ -0,0 +1,29 @@ +# SwaggerClient + +[![CI Status](http://img.shields.io/travis/geekerzp/SwaggerClient.svg?style=flat)](https://travis-ci.org/geekerzp/SwaggerClient) +[![Version](https://img.shields.io/cocoapods/v/SwaggerClient.svg?style=flat)](http://cocoapods.org/pods/SwaggerClient) +[![License](https://img.shields.io/cocoapods/l/SwaggerClient.svg?style=flat)](http://cocoapods.org/pods/SwaggerClient) +[![Platform](https://img.shields.io/cocoapods/p/SwaggerClient.svg?style=flat)](http://cocoapods.org/pods/SwaggerClient) + +## Usage + +To run the example project, clone the repo, and run `pod install` from the Example directory first. + +## Requirements + +## Installation + +SwaggerClient is available through [CocoaPods](http://cocoapods.org). To install +it, simply add the following line to your Podfile: + +```ruby +pod "SwaggerClient" +``` + +## Author + +geekerzp, geekerzp@gmail.com + +## License + +SwaggerClient is available under the MIT license. See the LICENSE file for more info. diff --git a/samples/client/petstore/objc/SwaggerClient.podspec b/samples/client/petstore/objc/SwaggerClient.podspec new file mode 100644 index 00000000000..a55dac01d60 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClient.podspec @@ -0,0 +1,40 @@ +# +# Be sure to run `pod lib lint SwaggerClient.podspec' to ensure this is a +# valid spec and remove all comments before submitting the spec. +# +# Any lines starting with a # are optional, but encouraged +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html +# + +Pod::Spec.new do |s| + s.name = "SwaggerClient" + s.version = "0.1.0" + s.summary = "A short description of SwaggerClient." + s.description = <<-DESC + An optional longer description of SwaggerClient + + * Markdown format. + * Don't worry about the indent, we strip it! + DESC + s.homepage = "https://github.com//SwaggerClient" + # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" + s.license = 'MIT' + s.author = { "geekerzp" => "geekerzp@gmail.com" } + s.source = { :git => "https://github.com//SwaggerClient.git", :tag => s.version.to_s } + # s.social_media_url = 'https://twitter.com/' + + s.platform = :ios, '7.0' + s.requires_arc = true + + s.source_files = 'SwaggerClient/**/*' + s.public_header_files = 'SwaggerClient/**/*.h' + + s.resource_bundles = { + 'SwaggerClient' => ['Pod/Assets/*.png'] + } + + s.dependency 'AFNetworking', '~> 2.3' + s.dependency 'JSONModel' + s.dependency 'ISO8601' +end diff --git a/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcshareddata/SwaggerClient.xccheckout b/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcshareddata/SwaggerClient.xccheckout deleted file mode 100644 index 325cb92c1b8..00000000000 --- a/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcshareddata/SwaggerClient.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 15AAFA18-9D61-437F-988D-A691BA4C08B1 - IDESourceControlProjectName - SwaggerClient - IDESourceControlProjectOriginsDictionary - - E5BBF0AA85077C865C95437976D06D819733A208 - https://github.com/geekerzp/swagger-codegen.git - - IDESourceControlProjectPath - samples/client/petstore/objc/SwaggerClient.xcworkspace - IDESourceControlProjectRelativeInstallPathDictionary - - E5BBF0AA85077C865C95437976D06D819733A208 - ../../../../.. - - IDESourceControlProjectURL - https://github.com/geekerzp/swagger-codegen.git - IDESourceControlProjectVersion - 111 - IDESourceControlProjectWCCIdentifier - E5BBF0AA85077C865C95437976D06D819733A208 - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - E5BBF0AA85077C865C95437976D06D819733A208 - IDESourceControlWCCName - swagger-codegen - - - - diff --git a/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index fe0defcf775e1b7d2fc2e827c6672586a76ac126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22901 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 diff --git a/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist deleted file mode 100644 index e2573a5943c..00000000000 --- a/samples/client/petstore/objc/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - - diff --git a/samples/client/petstore/objc/client/JSONValueTransformer+ISO8601.h b/samples/client/petstore/objc/SwaggerClient/JSONValueTransformer+ISO8601.h similarity index 100% rename from samples/client/petstore/objc/client/JSONValueTransformer+ISO8601.h rename to samples/client/petstore/objc/SwaggerClient/JSONValueTransformer+ISO8601.h diff --git a/samples/client/petstore/objc/client/JSONValueTransformer+ISO8601.m b/samples/client/petstore/objc/SwaggerClient/JSONValueTransformer+ISO8601.m similarity index 100% rename from samples/client/petstore/objc/client/JSONValueTransformer+ISO8601.m rename to samples/client/petstore/objc/SwaggerClient/JSONValueTransformer+ISO8601.m diff --git a/samples/client/petstore/objc/client/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h similarity index 98% rename from samples/client/petstore/objc/client/SWGApiClient.h rename to samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index 34722ed3ad9..d8aad6ba6f0 100644 --- a/samples/client/petstore/objc/client/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -1,6 +1,6 @@ #import #import -#import "AFHTTPRequestOperationManager.h" +#import #import "SWGJSONResponseSerializer.h" #import "SWGJSONRequestSerializer.h" diff --git a/samples/client/petstore/objc/client/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m similarity index 100% rename from samples/client/petstore/objc/client/SWGApiClient.m rename to samples/client/petstore/objc/SwaggerClient/SWGApiClient.m diff --git a/samples/client/petstore/objc/client/SWGCategory.h b/samples/client/petstore/objc/SwaggerClient/SWGCategory.h similarity index 100% rename from samples/client/petstore/objc/client/SWGCategory.h rename to samples/client/petstore/objc/SwaggerClient/SWGCategory.h diff --git a/samples/client/petstore/objc/client/SWGCategory.m b/samples/client/petstore/objc/SwaggerClient/SWGCategory.m similarity index 100% rename from samples/client/petstore/objc/client/SWGCategory.m rename to samples/client/petstore/objc/SwaggerClient/SWGCategory.m diff --git a/samples/client/petstore/objc/client/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h similarity index 100% rename from samples/client/petstore/objc/client/SWGConfiguration.h rename to samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h diff --git a/samples/client/petstore/objc/client/SWGConfiguration.m b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m similarity index 100% rename from samples/client/petstore/objc/client/SWGConfiguration.m rename to samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m diff --git a/samples/client/petstore/objc/client/SWGFile.h b/samples/client/petstore/objc/SwaggerClient/SWGFile.h similarity index 100% rename from samples/client/petstore/objc/client/SWGFile.h rename to samples/client/petstore/objc/SwaggerClient/SWGFile.h diff --git a/samples/client/petstore/objc/client/SWGFile.m b/samples/client/petstore/objc/SwaggerClient/SWGFile.m similarity index 100% rename from samples/client/petstore/objc/client/SWGFile.m rename to samples/client/petstore/objc/SwaggerClient/SWGFile.m diff --git a/samples/client/petstore/objc/client/SWGJSONRequestSerializer.h b/samples/client/petstore/objc/SwaggerClient/SWGJSONRequestSerializer.h similarity index 100% rename from samples/client/petstore/objc/client/SWGJSONRequestSerializer.h rename to samples/client/petstore/objc/SwaggerClient/SWGJSONRequestSerializer.h diff --git a/samples/client/petstore/objc/client/SWGJSONRequestSerializer.m b/samples/client/petstore/objc/SwaggerClient/SWGJSONRequestSerializer.m similarity index 100% rename from samples/client/petstore/objc/client/SWGJSONRequestSerializer.m rename to samples/client/petstore/objc/SwaggerClient/SWGJSONRequestSerializer.m diff --git a/samples/client/petstore/objc/client/SWGJSONResponseSerializer.h b/samples/client/petstore/objc/SwaggerClient/SWGJSONResponseSerializer.h similarity index 100% rename from samples/client/petstore/objc/client/SWGJSONResponseSerializer.h rename to samples/client/petstore/objc/SwaggerClient/SWGJSONResponseSerializer.h diff --git a/samples/client/petstore/objc/client/SWGJSONResponseSerializer.m b/samples/client/petstore/objc/SwaggerClient/SWGJSONResponseSerializer.m similarity index 100% rename from samples/client/petstore/objc/client/SWGJSONResponseSerializer.m rename to samples/client/petstore/objc/SwaggerClient/SWGJSONResponseSerializer.m diff --git a/samples/client/petstore/objc/client/SWGObject.h b/samples/client/petstore/objc/SwaggerClient/SWGObject.h similarity index 100% rename from samples/client/petstore/objc/client/SWGObject.h rename to samples/client/petstore/objc/SwaggerClient/SWGObject.h diff --git a/samples/client/petstore/objc/client/SWGObject.m b/samples/client/petstore/objc/SwaggerClient/SWGObject.m similarity index 100% rename from samples/client/petstore/objc/client/SWGObject.m rename to samples/client/petstore/objc/SwaggerClient/SWGObject.m diff --git a/samples/client/petstore/objc/client/SWGOrder.h b/samples/client/petstore/objc/SwaggerClient/SWGOrder.h similarity index 100% rename from samples/client/petstore/objc/client/SWGOrder.h rename to samples/client/petstore/objc/SwaggerClient/SWGOrder.h diff --git a/samples/client/petstore/objc/client/SWGOrder.m b/samples/client/petstore/objc/SwaggerClient/SWGOrder.m similarity index 100% rename from samples/client/petstore/objc/client/SWGOrder.m rename to samples/client/petstore/objc/SwaggerClient/SWGOrder.m diff --git a/samples/client/petstore/objc/client/SWGPet.h b/samples/client/petstore/objc/SwaggerClient/SWGPet.h similarity index 100% rename from samples/client/petstore/objc/client/SWGPet.h rename to samples/client/petstore/objc/SwaggerClient/SWGPet.h diff --git a/samples/client/petstore/objc/client/SWGPet.m b/samples/client/petstore/objc/SwaggerClient/SWGPet.m similarity index 100% rename from samples/client/petstore/objc/client/SWGPet.m rename to samples/client/petstore/objc/SwaggerClient/SWGPet.m diff --git a/samples/client/petstore/objc/client/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h similarity index 100% rename from samples/client/petstore/objc/client/SWGPetApi.h rename to samples/client/petstore/objc/SwaggerClient/SWGPetApi.h diff --git a/samples/client/petstore/objc/client/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m similarity index 100% rename from samples/client/petstore/objc/client/SWGPetApi.m rename to samples/client/petstore/objc/SwaggerClient/SWGPetApi.m diff --git a/samples/client/petstore/objc/client/SWGQueryParamCollection.h b/samples/client/petstore/objc/SwaggerClient/SWGQueryParamCollection.h similarity index 100% rename from samples/client/petstore/objc/client/SWGQueryParamCollection.h rename to samples/client/petstore/objc/SwaggerClient/SWGQueryParamCollection.h diff --git a/samples/client/petstore/objc/client/SWGQueryParamCollection.m b/samples/client/petstore/objc/SwaggerClient/SWGQueryParamCollection.m similarity index 100% rename from samples/client/petstore/objc/client/SWGQueryParamCollection.m rename to samples/client/petstore/objc/SwaggerClient/SWGQueryParamCollection.m diff --git a/samples/client/petstore/objc/client/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h similarity index 100% rename from samples/client/petstore/objc/client/SWGStoreApi.h rename to samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h diff --git a/samples/client/petstore/objc/client/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m similarity index 100% rename from samples/client/petstore/objc/client/SWGStoreApi.m rename to samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m diff --git a/samples/client/petstore/objc/client/SWGTag.h b/samples/client/petstore/objc/SwaggerClient/SWGTag.h similarity index 100% rename from samples/client/petstore/objc/client/SWGTag.h rename to samples/client/petstore/objc/SwaggerClient/SWGTag.h diff --git a/samples/client/petstore/objc/client/SWGTag.m b/samples/client/petstore/objc/SwaggerClient/SWGTag.m similarity index 100% rename from samples/client/petstore/objc/client/SWGTag.m rename to samples/client/petstore/objc/SwaggerClient/SWGTag.m diff --git a/samples/client/petstore/objc/client/SWGUser.h b/samples/client/petstore/objc/SwaggerClient/SWGUser.h similarity index 100% rename from samples/client/petstore/objc/client/SWGUser.h rename to samples/client/petstore/objc/SwaggerClient/SWGUser.h diff --git a/samples/client/petstore/objc/client/SWGUser.m b/samples/client/petstore/objc/SwaggerClient/SWGUser.m similarity index 100% rename from samples/client/petstore/objc/client/SWGUser.m rename to samples/client/petstore/objc/SwaggerClient/SWGUser.m diff --git a/samples/client/petstore/objc/client/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h similarity index 100% rename from samples/client/petstore/objc/client/SWGUserApi.h rename to samples/client/petstore/objc/SwaggerClient/SWGUserApi.h diff --git a/samples/client/petstore/objc/client/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m similarity index 100% rename from samples/client/petstore/objc/client/SWGUserApi.m rename to samples/client/petstore/objc/SwaggerClient/SWGUserApi.m diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj deleted file mode 100644 index 1424f7b9cfe..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.pbxproj +++ /dev/null @@ -1,706 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - BA525648922D4C0E9F44D4F1 /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73DA4F1067C343C3962F1542 /* libPods.a */; }; - CF0560EB1B1855CF00C0D4EC /* SWGConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = CF0560EA1B1855CF00C0D4EC /* SWGConfiguration.m */; }; - CF31D0991B105E4B00509935 /* SWGApiClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CF31D0981B105E4B00509935 /* SWGApiClientTest.m */; }; - CF5B6E2D1B2BD70800862A1C /* UserApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5B6E2C1B2BD70800862A1C /* UserApiTest.m */; }; - CF8F85811B3A4796000DE569 /* SWGMythingApi.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8F85801B3A4796000DE569 /* SWGMythingApi.m */; }; - CF8F85841B3A4913000DE569 /* SWGMyresult.m in Sources */ = {isa = PBXBuildFile; fileRef = CF8F85831B3A4913000DE569 /* SWGMyresult.m */; }; - CFB37D061B2B11DD00D2E5F1 /* StoreApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFB37D051B2B11DC00D2E5F1 /* StoreApiTest.m */; }; - CFCEFE511B2C1330006313BE /* SWGJSONResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCEFE501B2C1330006313BE /* SWGJSONResponseSerializer.m */; }; - CFD1B6701B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */; }; - CFD1B6711B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */; }; - CFE1E0391B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CFE1E0381B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m */; }; - EA66999A1811D2FA00A70D03 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA6699991811D2FA00A70D03 /* Foundation.framework */; }; - EA66999C1811D2FA00A70D03 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA66999B1811D2FA00A70D03 /* CoreGraphics.framework */; }; - EA66999E1811D2FA00A70D03 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA66999D1811D2FA00A70D03 /* UIKit.framework */; }; - EA6699A41811D2FA00A70D03 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EA6699A21811D2FA00A70D03 /* InfoPlist.strings */; }; - EA6699A61811D2FA00A70D03 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6699A51811D2FA00A70D03 /* main.m */; }; - EA6699AA1811D2FA00A70D03 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6699A91811D2FA00A70D03 /* AppDelegate.m */; }; - EA6699AD1811D2FA00A70D03 /* Main_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EA6699AB1811D2FA00A70D03 /* Main_iPhone.storyboard */; }; - EA6699B01811D2FA00A70D03 /* Main_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EA6699AE1811D2FA00A70D03 /* Main_iPad.storyboard */; }; - EA6699B31811D2FA00A70D03 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6699B21811D2FA00A70D03 /* ViewController.m */; }; - EA6699B51811D2FA00A70D03 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EA6699B41811D2FA00A70D03 /* Images.xcassets */; }; - EA6699BD1811D2FB00A70D03 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA6699991811D2FA00A70D03 /* Foundation.framework */; }; - EA6699BE1811D2FB00A70D03 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA66999D1811D2FA00A70D03 /* UIKit.framework */; }; - EA6699C61811D2FB00A70D03 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = EA6699C41811D2FB00A70D03 /* InfoPlist.strings */; }; - EA8B8AA41AC6683700638FBB /* SWGQueryParamCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8B8AA31AC6683700638FBB /* SWGQueryParamCollection.m */; }; - EA8CD3ED1AC2763600C47D0B /* SenTestingKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EA8CD3EC1AC2763600C47D0B /* SenTestingKit.framework */; }; - EAB26B091AC8DE24002F5C7A /* libPods.a in Frameworks */ = {isa = PBXBuildFile; fileRef = EAB26B081AC8DE24002F5C7A /* libPods.a */; }; - EAB26B0C1AC8DF78002F5C7A /* PetApiTest.h in Sources */ = {isa = PBXBuildFile; fileRef = EA8CD3EB1AC274BE00C47D0B /* PetApiTest.h */; }; - EAB26B0D1AC8DF78002F5C7A /* PetApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = EA6699C71811D2FB00A70D03 /* PetApiTest.m */; }; - EAEA85E41811D3AE00F06E69 /* SWGApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85CD1811D3AE00F06E69 /* SWGApiClient.m */; }; - EAEA85E51811D3AE00F06E69 /* SWGCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85CF1811D3AE00F06E69 /* SWGCategory.m */; }; - EAEA85E71811D3AE00F06E69 /* SWGFile.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85D31811D3AE00F06E69 /* SWGFile.m */; }; - EAEA85E81811D3AE00F06E69 /* SWGObject.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85D51811D3AE00F06E69 /* SWGObject.m */; }; - EAEA85E91811D3AE00F06E69 /* SWGOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85D71811D3AE00F06E69 /* SWGOrder.m */; }; - EAEA85EA1811D3AE00F06E69 /* SWGPet.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85D91811D3AE00F06E69 /* SWGPet.m */; }; - EAEA85EB1811D3AE00F06E69 /* SWGPetApi.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85DB1811D3AE00F06E69 /* SWGPetApi.m */; }; - EAEA85EC1811D3AE00F06E69 /* SWGStoreApi.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85DD1811D3AE00F06E69 /* SWGStoreApi.m */; }; - EAEA85ED1811D3AE00F06E69 /* SWGTag.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85DF1811D3AE00F06E69 /* SWGTag.m */; }; - EAEA85EE1811D3AE00F06E69 /* SWGUser.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85E11811D3AE00F06E69 /* SWGUser.m */; }; - EAEA85EF1811D3AE00F06E69 /* SWGUserApi.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEA85E31811D3AE00F06E69 /* SWGUserApi.m */; }; - EAFBEABB1A925B8500A27431 /* test-1.png in Resources */ = {isa = PBXBuildFile; fileRef = EAFBEABA1A925B8500A27431 /* test-1.png */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - EA6699BF1811D2FB00A70D03 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = EA66998E1811D2FA00A70D03 /* Project object */; - proxyType = 1; - remoteGlobalIDString = EA6699951811D2FA00A70D03; - remoteInfo = PetstoreClient; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 73DA4F1067C343C3962F1542 /* libPods.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPods.a; sourceTree = BUILT_PRODUCTS_DIR; }; - A425648B5C0A4849C7668069 /* Pods.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.release.xcconfig; path = "../Pods/Target Support Files/Pods/Pods.release.xcconfig"; sourceTree = ""; }; - CF0560E91B1855CF00C0D4EC /* SWGConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGConfiguration.h; sourceTree = ""; }; - CF0560EA1B1855CF00C0D4EC /* SWGConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGConfiguration.m; sourceTree = ""; }; - CF31D0981B105E4B00509935 /* SWGApiClientTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGApiClientTest.m; sourceTree = ""; }; - CF5B6E2C1B2BD70800862A1C /* UserApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserApiTest.m; sourceTree = ""; }; - CF8F857F1B3A4796000DE569 /* SWGMythingApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGMythingApi.h; sourceTree = ""; }; - CF8F85801B3A4796000DE569 /* SWGMythingApi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGMythingApi.m; sourceTree = ""; }; - CF8F85821B3A4913000DE569 /* SWGMyresult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGMyresult.h; sourceTree = ""; }; - CF8F85831B3A4913000DE569 /* SWGMyresult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGMyresult.m; sourceTree = ""; }; - CFB37D051B2B11DC00D2E5F1 /* StoreApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreApiTest.m; sourceTree = ""; }; - CFCEFE4F1B2C1330006313BE /* SWGJSONResponseSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGJSONResponseSerializer.h; sourceTree = ""; }; - CFCEFE501B2C1330006313BE /* SWGJSONResponseSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGJSONResponseSerializer.m; sourceTree = ""; }; - CFD1B66E1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "JSONValueTransformer+ISO8601.h"; sourceTree = ""; }; - CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "JSONValueTransformer+ISO8601.m"; sourceTree = ""; }; - CFE1E0371B3AA4EE0030FE7C /* SWGJSONRequestSerializer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGJSONRequestSerializer.h; sourceTree = ""; }; - CFE1E0381B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGJSONRequestSerializer.m; sourceTree = ""; }; - E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = Pods.debug.xcconfig; path = "../Pods/Target Support Files/Pods/Pods.debug.xcconfig"; sourceTree = ""; }; - EA6699961811D2FA00A70D03 /* SwaggerClient.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient.app; sourceTree = BUILT_PRODUCTS_DIR; }; - EA6699991811D2FA00A70D03 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - EA66999B1811D2FA00A70D03 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; - EA66999D1811D2FA00A70D03 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; - EA6699A11811D2FA00A70D03 /* SwaggerClient-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SwaggerClient-Info.plist"; sourceTree = ""; }; - EA6699A31811D2FA00A70D03 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - EA6699A51811D2FA00A70D03 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - EA6699A71811D2FA00A70D03 /* SwaggerClient-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwaggerClient-Prefix.pch"; sourceTree = ""; }; - EA6699A81811D2FA00A70D03 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; - EA6699A91811D2FA00A70D03 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; - EA6699AC1811D2FA00A70D03 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPhone.storyboard; sourceTree = ""; }; - EA6699AF1811D2FA00A70D03 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main_iPad.storyboard; sourceTree = ""; }; - EA6699B11811D2FA00A70D03 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; - EA6699B21811D2FA00A70D03 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - EA6699B41811D2FA00A70D03 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; - EA6699BA1811D2FB00A70D03 /* SwaggerClientTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClientTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - EA6699C31811D2FB00A70D03 /* SwaggerClientTests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SwaggerClientTests-Info.plist"; sourceTree = ""; }; - EA6699C51811D2FB00A70D03 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; - EA6699C71811D2FB00A70D03 /* PetApiTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = PetApiTest.m; sourceTree = ""; }; - EA8B8AA21AC6683700638FBB /* SWGQueryParamCollection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGQueryParamCollection.h; sourceTree = ""; }; - EA8B8AA31AC6683700638FBB /* SWGQueryParamCollection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGQueryParamCollection.m; sourceTree = ""; }; - EA8CD3EB1AC274BE00C47D0B /* PetApiTest.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PetApiTest.h; sourceTree = ""; }; - EA8CD3EC1AC2763600C47D0B /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; }; - EAB26B081AC8DE24002F5C7A /* libPods.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libPods.a; path = "/Users/tony/dev/projects/swagger-api/swagger-codegen/samples/client/petstore/objc/Pods/../build/Debug-iphoneos/libPods.a"; sourceTree = ""; }; - EAB26B0E1AC8E692002F5C7A /* SWGPet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGPet.h; sourceTree = ""; }; - EAEA85CC1811D3AE00F06E69 /* SWGApiClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGApiClient.h; sourceTree = ""; }; - EAEA85CD1811D3AE00F06E69 /* SWGApiClient.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGApiClient.m; sourceTree = ""; }; - EAEA85CE1811D3AE00F06E69 /* SWGCategory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGCategory.h; sourceTree = ""; }; - EAEA85CF1811D3AE00F06E69 /* SWGCategory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGCategory.m; sourceTree = ""; }; - EAEA85D21811D3AE00F06E69 /* SWGFile.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGFile.h; sourceTree = ""; }; - EAEA85D31811D3AE00F06E69 /* SWGFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGFile.m; sourceTree = ""; }; - EAEA85D41811D3AE00F06E69 /* SWGObject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGObject.h; sourceTree = ""; }; - EAEA85D51811D3AE00F06E69 /* SWGObject.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGObject.m; sourceTree = ""; }; - EAEA85D61811D3AE00F06E69 /* SWGOrder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGOrder.h; sourceTree = ""; }; - EAEA85D71811D3AE00F06E69 /* SWGOrder.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGOrder.m; sourceTree = ""; }; - EAEA85D91811D3AE00F06E69 /* SWGPet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGPet.m; sourceTree = ""; }; - EAEA85DA1811D3AE00F06E69 /* SWGPetApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGPetApi.h; sourceTree = ""; }; - EAEA85DB1811D3AE00F06E69 /* SWGPetApi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGPetApi.m; sourceTree = ""; }; - EAEA85DC1811D3AE00F06E69 /* SWGStoreApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGStoreApi.h; sourceTree = ""; }; - EAEA85DD1811D3AE00F06E69 /* SWGStoreApi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGStoreApi.m; sourceTree = ""; }; - EAEA85DE1811D3AE00F06E69 /* SWGTag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGTag.h; sourceTree = ""; }; - EAEA85DF1811D3AE00F06E69 /* SWGTag.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGTag.m; sourceTree = ""; }; - EAEA85E01811D3AE00F06E69 /* SWGUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGUser.h; sourceTree = ""; }; - EAEA85E11811D3AE00F06E69 /* SWGUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGUser.m; sourceTree = ""; }; - EAEA85E21811D3AE00F06E69 /* SWGUserApi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SWGUserApi.h; sourceTree = ""; }; - EAEA85E31811D3AE00F06E69 /* SWGUserApi.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGUserApi.m; sourceTree = ""; }; - EAFBEABA1A925B8500A27431 /* test-1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "test-1.png"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - EA6699931811D2FA00A70D03 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EA66999C1811D2FA00A70D03 /* CoreGraphics.framework in Frameworks */, - EA66999E1811D2FA00A70D03 /* UIKit.framework in Frameworks */, - EA66999A1811D2FA00A70D03 /* Foundation.framework in Frameworks */, - BA525648922D4C0E9F44D4F1 /* libPods.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EA6699B71811D2FB00A70D03 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EA8CD3ED1AC2763600C47D0B /* SenTestingKit.framework in Frameworks */, - EA6699BE1811D2FB00A70D03 /* UIKit.framework in Frameworks */, - EA6699BD1811D2FB00A70D03 /* Foundation.framework in Frameworks */, - EAB26B091AC8DE24002F5C7A /* libPods.a in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 1A15B3DE4358A178ABAEC251 /* Pods */ = { - isa = PBXGroup; - children = ( - E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */, - A425648B5C0A4849C7668069 /* Pods.release.xcconfig */, - ); - name = Pods; - sourceTree = ""; - }; - EA66998D1811D2FA00A70D03 = { - isa = PBXGroup; - children = ( - EAEA85CB1811D3AE00F06E69 /* client */, - EA66999F1811D2FA00A70D03 /* SwaggerClient */, - EA6699C11811D2FB00A70D03 /* SwaggerClientTests */, - EA6699981811D2FA00A70D03 /* Frameworks */, - EA6699971811D2FA00A70D03 /* Products */, - 1A15B3DE4358A178ABAEC251 /* Pods */, - ); - sourceTree = ""; - }; - EA6699971811D2FA00A70D03 /* Products */ = { - isa = PBXGroup; - children = ( - EA6699961811D2FA00A70D03 /* SwaggerClient.app */, - EA6699BA1811D2FB00A70D03 /* SwaggerClientTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - EA6699981811D2FA00A70D03 /* Frameworks */ = { - isa = PBXGroup; - children = ( - EAB26B081AC8DE24002F5C7A /* libPods.a */, - EA8CD3EC1AC2763600C47D0B /* SenTestingKit.framework */, - EA6699991811D2FA00A70D03 /* Foundation.framework */, - EA66999B1811D2FA00A70D03 /* CoreGraphics.framework */, - EA66999D1811D2FA00A70D03 /* UIKit.framework */, - 73DA4F1067C343C3962F1542 /* libPods.a */, - ); - name = Frameworks; - sourceTree = ""; - }; - EA66999F1811D2FA00A70D03 /* SwaggerClient */ = { - isa = PBXGroup; - children = ( - EA6699A81811D2FA00A70D03 /* AppDelegate.h */, - EA6699A91811D2FA00A70D03 /* AppDelegate.m */, - EA6699AB1811D2FA00A70D03 /* Main_iPhone.storyboard */, - EA6699AE1811D2FA00A70D03 /* Main_iPad.storyboard */, - EA6699B11811D2FA00A70D03 /* ViewController.h */, - EA6699B21811D2FA00A70D03 /* ViewController.m */, - EA6699B41811D2FA00A70D03 /* Images.xcassets */, - EA6699A01811D2FA00A70D03 /* Supporting Files */, - ); - path = SwaggerClient; - sourceTree = ""; - }; - EA6699A01811D2FA00A70D03 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - EAFBEABA1A925B8500A27431 /* test-1.png */, - EA6699A11811D2FA00A70D03 /* SwaggerClient-Info.plist */, - EA6699A21811D2FA00A70D03 /* InfoPlist.strings */, - EA6699A51811D2FA00A70D03 /* main.m */, - EA6699A71811D2FA00A70D03 /* SwaggerClient-Prefix.pch */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - EA6699C11811D2FB00A70D03 /* SwaggerClientTests */ = { - isa = PBXGroup; - children = ( - EA8CD3EB1AC274BE00C47D0B /* PetApiTest.h */, - CF5B6E2C1B2BD70800862A1C /* UserApiTest.m */, - CFB37D051B2B11DC00D2E5F1 /* StoreApiTest.m */, - CF31D0981B105E4B00509935 /* SWGApiClientTest.m */, - EA6699C71811D2FB00A70D03 /* PetApiTest.m */, - EA6699C21811D2FB00A70D03 /* Supporting Files */, - ); - path = SwaggerClientTests; - sourceTree = ""; - }; - EA6699C21811D2FB00A70D03 /* Supporting Files */ = { - isa = PBXGroup; - children = ( - EA6699C31811D2FB00A70D03 /* SwaggerClientTests-Info.plist */, - EA6699C41811D2FB00A70D03 /* InfoPlist.strings */, - ); - name = "Supporting Files"; - sourceTree = ""; - }; - EAEA85CB1811D3AE00F06E69 /* client */ = { - isa = PBXGroup; - children = ( - CFD1B66E1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.h */, - CFD1B66F1B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m */, - EA8B8AA21AC6683700638FBB /* SWGQueryParamCollection.h */, - EA8B8AA31AC6683700638FBB /* SWGQueryParamCollection.m */, - EAEA85CC1811D3AE00F06E69 /* SWGApiClient.h */, - EAEA85CD1811D3AE00F06E69 /* SWGApiClient.m */, - CF0560E91B1855CF00C0D4EC /* SWGConfiguration.h */, - CF0560EA1B1855CF00C0D4EC /* SWGConfiguration.m */, - EAEA85CE1811D3AE00F06E69 /* SWGCategory.h */, - EAEA85CF1811D3AE00F06E69 /* SWGCategory.m */, - EAEA85D21811D3AE00F06E69 /* SWGFile.h */, - EAEA85D31811D3AE00F06E69 /* SWGFile.m */, - EAEA85D41811D3AE00F06E69 /* SWGObject.h */, - CF8F85821B3A4913000DE569 /* SWGMyresult.h */, - CF8F85831B3A4913000DE569 /* SWGMyresult.m */, - CF8F857F1B3A4796000DE569 /* SWGMythingApi.h */, - CF8F85801B3A4796000DE569 /* SWGMythingApi.m */, - EAEA85D51811D3AE00F06E69 /* SWGObject.m */, - EAEA85D61811D3AE00F06E69 /* SWGOrder.h */, - EAEA85D71811D3AE00F06E69 /* SWGOrder.m */, - EAB26B0E1AC8E692002F5C7A /* SWGPet.h */, - CFCEFE4F1B2C1330006313BE /* SWGJSONResponseSerializer.h */, - CFE1E0371B3AA4EE0030FE7C /* SWGJSONRequestSerializer.h */, - CFE1E0381B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m */, - CFCEFE501B2C1330006313BE /* SWGJSONResponseSerializer.m */, - EAEA85D91811D3AE00F06E69 /* SWGPet.m */, - EAEA85DA1811D3AE00F06E69 /* SWGPetApi.h */, - EAEA85DB1811D3AE00F06E69 /* SWGPetApi.m */, - EAEA85DC1811D3AE00F06E69 /* SWGStoreApi.h */, - EAEA85DD1811D3AE00F06E69 /* SWGStoreApi.m */, - EAEA85DE1811D3AE00F06E69 /* SWGTag.h */, - EAEA85DF1811D3AE00F06E69 /* SWGTag.m */, - EAEA85E01811D3AE00F06E69 /* SWGUser.h */, - EAEA85E11811D3AE00F06E69 /* SWGUser.m */, - EAEA85E21811D3AE00F06E69 /* SWGUserApi.h */, - EAEA85E31811D3AE00F06E69 /* SWGUserApi.m */, - ); - name = client; - path = ../client; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - EA6699951811D2FA00A70D03 /* SwaggerClient */ = { - isa = PBXNativeTarget; - buildConfigurationList = EA6699CB1811D2FB00A70D03 /* Build configuration list for PBXNativeTarget "SwaggerClient" */; - buildPhases = ( - 04DAA264FD78471BBAD25173 /* Check Pods Manifest.lock */, - EA6699921811D2FA00A70D03 /* Sources */, - EA6699931811D2FA00A70D03 /* Frameworks */, - 3692D11BB04F489DAA7C0B6A /* Copy Pods Resources */, - EA6699941811D2FA00A70D03 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = SwaggerClient; - productName = PetstoreClient; - productReference = EA6699961811D2FA00A70D03 /* SwaggerClient.app */; - productType = "com.apple.product-type.application"; - }; - EA6699B91811D2FB00A70D03 /* SwaggerClientTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = EA6699CE1811D2FB00A70D03 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */; - buildPhases = ( - EA6699B61811D2FB00A70D03 /* Sources */, - EA6699B71811D2FB00A70D03 /* Frameworks */, - EA6699B81811D2FB00A70D03 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - EA6699C01811D2FB00A70D03 /* PBXTargetDependency */, - ); - name = SwaggerClientTests; - productName = PetstoreClientTests; - productReference = EA6699BA1811D2FB00A70D03 /* SwaggerClientTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - EA66998E1811D2FA00A70D03 /* Project object */ = { - isa = PBXProject; - attributes = { - LastTestingUpgradeCheck = 0620; - LastUpgradeCheck = 0500; - ORGANIZATIONNAME = Reverb; - TargetAttributes = { - EA6699B91811D2FB00A70D03 = { - TestTargetID = EA6699951811D2FA00A70D03; - }; - }; - }; - buildConfigurationList = EA6699911811D2FA00A70D03 /* Build configuration list for PBXProject "SwaggerClient" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = EA66998D1811D2FA00A70D03; - productRefGroup = EA6699971811D2FA00A70D03 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - EA6699951811D2FA00A70D03 /* SwaggerClient */, - EA6699B91811D2FB00A70D03 /* SwaggerClientTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - EA6699941811D2FA00A70D03 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EA6699B01811D2FA00A70D03 /* Main_iPad.storyboard in Resources */, - EA6699B51811D2FA00A70D03 /* Images.xcassets in Resources */, - EA6699AD1811D2FA00A70D03 /* Main_iPhone.storyboard in Resources */, - EAFBEABB1A925B8500A27431 /* test-1.png in Resources */, - EA6699A41811D2FA00A70D03 /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EA6699B81811D2FB00A70D03 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EA6699C61811D2FB00A70D03 /* InfoPlist.strings in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXShellScriptBuildPhase section */ - 04DAA264FD78471BBAD25173 /* Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Check Pods Manifest.lock"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; - showEnvVarsInLog = 0; - }; - 3692D11BB04F489DAA7C0B6A /* Copy Pods Resources */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Copy Pods Resources"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/../Pods/Target Support Files/Pods/Pods-resources.sh\"\n"; - showEnvVarsInLog = 0; - }; -/* End PBXShellScriptBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - EA6699921811D2FA00A70D03 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EAEA85E51811D3AE00F06E69 /* SWGCategory.m in Sources */, - CF0560EB1B1855CF00C0D4EC /* SWGConfiguration.m in Sources */, - EAEA85ED1811D3AE00F06E69 /* SWGTag.m in Sources */, - EA6699B31811D2FA00A70D03 /* ViewController.m in Sources */, - EA6699AA1811D2FA00A70D03 /* AppDelegate.m in Sources */, - EAEA85EE1811D3AE00F06E69 /* SWGUser.m in Sources */, - EAEA85EF1811D3AE00F06E69 /* SWGUserApi.m in Sources */, - EAEA85EB1811D3AE00F06E69 /* SWGPetApi.m in Sources */, - EA6699A61811D2FA00A70D03 /* main.m in Sources */, - CFD1B6701B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */, - CF8F85841B3A4913000DE569 /* SWGMyresult.m in Sources */, - EAEA85EA1811D3AE00F06E69 /* SWGPet.m in Sources */, - EAEA85E41811D3AE00F06E69 /* SWGApiClient.m in Sources */, - EAEA85EC1811D3AE00F06E69 /* SWGStoreApi.m in Sources */, - EAEA85E91811D3AE00F06E69 /* SWGOrder.m in Sources */, - CF8F85811B3A4796000DE569 /* SWGMythingApi.m in Sources */, - EAEA85E81811D3AE00F06E69 /* SWGObject.m in Sources */, - EA8B8AA41AC6683700638FBB /* SWGQueryParamCollection.m in Sources */, - CFCEFE511B2C1330006313BE /* SWGJSONResponseSerializer.m in Sources */, - CFE1E0391B3AA4EE0030FE7C /* SWGJSONRequestSerializer.m in Sources */, - EAEA85E71811D3AE00F06E69 /* SWGFile.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - EA6699B61811D2FB00A70D03 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EAB26B0C1AC8DF78002F5C7A /* PetApiTest.h in Sources */, - CFD1B6711B05EC7D00DCCD51 /* JSONValueTransformer+ISO8601.m in Sources */, - EAB26B0D1AC8DF78002F5C7A /* PetApiTest.m in Sources */, - CF5B6E2D1B2BD70800862A1C /* UserApiTest.m in Sources */, - CFB37D061B2B11DD00D2E5F1 /* StoreApiTest.m in Sources */, - CF31D0991B105E4B00509935 /* SWGApiClientTest.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - EA6699C01811D2FB00A70D03 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = EA6699951811D2FA00A70D03 /* SwaggerClient */; - targetProxy = EA6699BF1811D2FB00A70D03 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin PBXVariantGroup section */ - EA6699A21811D2FA00A70D03 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - EA6699A31811D2FA00A70D03 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; - EA6699AB1811D2FA00A70D03 /* Main_iPhone.storyboard */ = { - isa = PBXVariantGroup; - children = ( - EA6699AC1811D2FA00A70D03 /* Base */, - ); - name = Main_iPhone.storyboard; - sourceTree = ""; - }; - EA6699AE1811D2FA00A70D03 /* Main_iPad.storyboard */ = { - isa = PBXVariantGroup; - children = ( - EA6699AF1811D2FA00A70D03 /* Base */, - ); - name = Main_iPad.storyboard; - sourceTree = ""; - }; - EA6699C41811D2FB00A70D03 /* InfoPlist.strings */ = { - isa = PBXVariantGroup; - children = ( - EA6699C51811D2FB00A70D03 /* en */, - ); - name = InfoPlist.strings; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - -/* Begin XCBuildConfiguration section */ - EA6699C91811D2FB00A70D03 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - EA6699CA1811D2FB00A70D03 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - EA6699CC1811D2FB00A70D03 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SwaggerClient/SwaggerClient-Prefix.pch"; - INFOPLIST_FILE = "SwaggerClient/SwaggerClient-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/tony/dev/projects/swagger-api/swagger-codegen/samples/client/petstore/objc/Pods/../build/Debug-iphoneos", - ); - PRODUCT_NAME = SwaggerClient; - WRAPPER_EXTENSION = app; - }; - name = Debug; - }; - EA6699CD1811D2FB00A70D03 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A425648B5C0A4849C7668069 /* Pods.release.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SwaggerClient/SwaggerClient-Prefix.pch"; - INFOPLIST_FILE = "SwaggerClient/SwaggerClient-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/tony/dev/projects/swagger-api/swagger-codegen/samples/client/petstore/objc/Pods/../build/Debug-iphoneos", - ); - PRODUCT_NAME = SwaggerClient; - WRAPPER_EXTENSION = app; - }; - name = Release; - }; - EA6699CF1811D2FB00A70D03 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = E2B6DA00BE52336E23783686 /* Pods.debug.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SwaggerClient/SwaggerClient-Prefix.pch"; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - INFOPLIST_FILE = "SwaggerClientTests/SwaggerClientTests-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/tony/dev/projects/swagger-api/swagger-codegen/samples/client/petstore/objc/Pods/../build/Debug-iphoneos", - ); - PRODUCT_NAME = SwaggerClientTests; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Debug; - }; - EA6699D01811D2FB00A70D03 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A425648B5C0A4849C7668069 /* Pods.release.xcconfig */; - buildSettings = { - ARCHS = "$(ARCHS_STANDARD_INCLUDING_64_BIT)"; - BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SwaggerClient.app/SwaggerClient"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); - GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "SwaggerClient/SwaggerClient-Prefix.pch"; - INFOPLIST_FILE = "SwaggerClientTests/SwaggerClientTests-Info.plist"; - LIBRARY_SEARCH_PATHS = ( - "$(inherited)", - "/Users/tony/dev/projects/swagger-api/swagger-codegen/samples/client/petstore/objc/Pods/../build/Debug-iphoneos", - ); - PRODUCT_NAME = SwaggerClientTests; - TEST_HOST = "$(BUNDLE_LOADER)"; - WRAPPER_EXTENSION = xctest; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - EA6699911811D2FA00A70D03 /* Build configuration list for PBXProject "SwaggerClient" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EA6699C91811D2FB00A70D03 /* Debug */, - EA6699CA1811D2FB00A70D03 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EA6699CB1811D2FB00A70D03 /* Build configuration list for PBXNativeTarget "SwaggerClient" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EA6699CC1811D2FB00A70D03 /* Debug */, - EA6699CD1811D2FB00A70D03 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - EA6699CE1811D2FB00A70D03 /* Build configuration list for PBXNativeTarget "SwaggerClientTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - EA6699CF1811D2FB00A70D03 /* Debug */, - EA6699D01811D2FB00A70D03 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = EA66998E1811D2FA00A70D03 /* Project object */; -} diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/PetstoreClient.xccheckout b/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/PetstoreClient.xccheckout deleted file mode 100644 index bbe327e168b..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/PetstoreClient.xccheckout +++ /dev/null @@ -1,41 +0,0 @@ - - - - - IDESourceControlProjectFavoriteDictionaryKey - - IDESourceControlProjectIdentifier - 7A33CEA3-5D3F-4B6D-8F47-84701AB3E283 - IDESourceControlProjectName - PetstoreClient - IDESourceControlProjectOriginsDictionary - - 92840518-904D-4771-AA3D-9AF52CA48B71 - ssh://github.com/wordnik/swagger-codegen.git - - IDESourceControlProjectPath - samples/client/petstore/objc/PetstoreClient/PetstoreClient.xcodeproj/project.xcworkspace - IDESourceControlProjectRelativeInstallPathDictionary - - 92840518-904D-4771-AA3D-9AF52CA48B71 - ../../../../../../.. - - IDESourceControlProjectURL - ssh://github.com/wordnik/swagger-codegen.git - IDESourceControlProjectVersion - 110 - IDESourceControlProjectWCCIdentifier - 92840518-904D-4771-AA3D-9AF52CA48B71 - IDESourceControlProjectWCConfigurations - - - IDESourceControlRepositoryExtensionIdentifierKey - public.vcs.git - IDESourceControlWCCIdentifierKey - 92840518-904D-4771-AA3D-9AF52CA48B71 - IDESourceControlWCCName - swagger-codegen - - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/xcuserdata/tony.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 53cb85903b2a9f27e8040ecbdc00b27c053dc8f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8581 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 - - - - SchemeUserState - - SwaggerClient.xcscheme_^#shared#^_ - - orderHint - 4 - - - SuppressBuildableAutocreation - - EA6699951811D2FA00A70D03 - - primary - - - EA6699B91811D2FB00A70D03 - - primary - - - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/PetstoreClient.xcscheme b/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/PetstoreClient.xcscheme deleted file mode 100644 index fd55bb26268..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/PetstoreClient.xcscheme +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.h b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.h deleted file mode 100644 index 622ab1d3916..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// AppDelegate.h -// PetstoreClient -// -// Created by Tony Tam on 10/18/13. -// Copyright (c) 2015 SmartBear Software. All rights reserved. -// - -#import - -@interface AppDelegate : UIResponder - -@property (strong, nonatomic) UIWindow *window; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPad.storyboard b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPad.storyboard deleted file mode 100644 index a185e8a5dfa..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPad.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPhone.storyboard b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPhone.storyboard deleted file mode 100644 index b99208bd774..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Base.lproj/Main_iPhone.storyboard +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/AppIcon.appiconset/Contents.json b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/AppIcon.appiconset/Contents.json deleted file mode 100644 index 64224a68564..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/AppIcon.appiconset/Contents.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "images": [ - { - "idiom": "iphone", - "size": "29x29", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "40x40", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "60x60", - "scale": "2x" - }, - { - "idiom": "iphone", - "size": "60x60", - "scale": "3x" - }, - { - "idiom": "ipad", - "size": "29x29", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "29x29", - "scale": "2x" - }, - { - "idiom": "ipad", - "size": "40x40", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "40x40", - "scale": "2x" - }, - { - "idiom": "ipad", - "size": "76x76", - "scale": "1x" - }, - { - "idiom": "ipad", - "size": "76x76", - "scale": "2x" - } - ], - "info": { - "version": 1, - "author": "xcode" - } -} \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/LaunchImage.launchimage/Contents.json b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/LaunchImage.launchimage/Contents.json deleted file mode 100644 index eaa3ad8a5dc..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/Images.xcassets/LaunchImage.launchimage/Contents.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "images": [ - { - "orientation": "portrait", - "idiom": "iphone", - "extent": "full-screen", - "minimum-system-version": "7.0", - "scale": "2x" - }, - { - "orientation": "portrait", - "idiom": "iphone", - "subtype": "retina4", - "extent": "full-screen", - "minimum-system-version": "7.0", - "scale": "2x" - }, - { - "orientation": "portrait", - "idiom": "ipad", - "extent": "full-screen", - "minimum-system-version": "7.0", - "scale": "1x" - }, - { - "orientation": "landscape", - "idiom": "ipad", - "extent": "full-screen", - "minimum-system-version": "7.0", - "scale": "1x" - }, - { - "orientation": "portrait", - "idiom": "ipad", - "extent": "full-screen", - "minimum-system-version": "7.0", - "scale": "2x" - }, - { - "orientation": "landscape", - "idiom": "ipad", - "extent": "full-screen", - "minimum-system-version": "7.0", - "scale": "2x" - } - ], - "info": { - "version": 1, - "author": "xcode" - } -} \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.h b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.h deleted file mode 100644 index f6e0cde9cd6..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.h +++ /dev/null @@ -1,13 +0,0 @@ -// -// ViewController.h -// PetstoreClient -// -// Created by Tony Tam on 10/18/13. -// Copyright (c) 2015 SmartBear Software. All rights reserved. -// - -#import - -@interface ViewController : UIViewController - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m deleted file mode 100644 index df696b0562b..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/ViewController.m +++ /dev/null @@ -1,50 +0,0 @@ -// -// ViewController.m -// PetstoreClient -// -// Created by Tony Tam on 10/18/13. -// Copyright (c) 2015 SmartBear Software. All rights reserved. -// - -#import "ViewController.h" -#import "SWGPet.h" -#import "SWGCategory.h" -#import "SWGTag.h" -#import "SWGPetApi.h" -#import "SWGStoreApi.h" -#import "SWGUserApi.h" -#import "SWGConfiguration.h" -#import "SWGMythingApi.h" - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad -{ - [super viewDidLoad]; - - /* - NSDictionary *cateHash = @{ @"id": @123, @"name": @"test name" }; - NSDictionary *tagHash = @{ @"id": @123, @"name": @"test name" }; - NSDictionary *petHash = @{ @"id": @123, @"test": @(YES), @"name": @"test name", @"category": cateHash, @"tags": @[tagHash], @"photoUrls": @[@"test url"] }; - SWGPet *pet = [[SWGPet alloc] initWithDictionary:petHash - error:nil]; - - SWGPetApi *api = [[SWGPetApi alloc] init]; - [api addPetWithCompletionBlock:pet completionHandler:^(NSError *error) { - NSLog(@"%@", error); - }]; - */ - -} - -- (void)didReceiveMemoryWarning -{ - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/main.m b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/main.m deleted file mode 100644 index d351099cbe1..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/main.m +++ /dev/null @@ -1,18 +0,0 @@ -// -// main.m -// PetstoreClient -// -// Created by Tony Tam on 10/18/13. -// Copyright (c) 2015 SmartBear Software. All rights reserved. -// - -#import - -#import "AppDelegate.h" - -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/test-1.png b/samples/client/petstore/objc/SwaggerClient/SwaggerClient/test-1.png deleted file mode 100644 index 1da243e1d23a9bb5a5d31424b9232758d948373e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 734124 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 z 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 Le8!+1d3LRb&t#0{?CCM* zy~}nC+AJUeK@XtXqZh^{kK54Gn^Q)EmU9pI_j1l9^2g7L?OlZ8Y-e6x#CL1NAvt3G z0GWkly`w8xJIf+cNiQ2@UgNdIPJSJNMY21`#nfyi+9Zf}>fmb3P)_#T3$n}j{>CK4 z1vYpYY2M1|JoVtPQ$!;=?Nya0qEFjvpa$?fVXWc+m!ajo`Ya(i#WM`DL3K=Wid8P- zH5GJHK02LI%V;@8n^o}Dqb|!=g;rHu9pIi}`bB>ZnA(UgG3S}^uTK0u`13Hy@Y$tl z&mQXJl7{A8u38xzXAs}+LvlM_smj*?$7eR4 zUwX z>D8@v=GsukRa_d{>YrOH8n_bbpI1770G(D|n5eJqv4NorcJMH+@;#0c?{m#9oMb)j zY~9Uv2A5_?D_umBTmPB$7?oyl<={&p?iOabE(kzSV^g8+ovTuXoeWh6ot$QuRZY@a z1l5#+n}0r9`S|L@^DXei7&<9hfSSb)U2M8VJy;#muo1gS@1I_`SK{R)pytjX)15tg zu*PG|P;m0~Is?o=3Kc#ixI~@vh?8N3pNGq9l(vg8?7{dH-HKdw!pBMJ81m_=jC=%) zl#xR;R+B%7#y`*215PcyHZGC8M{SaQi`%#J5LJND^v+O-jloQe!YRyGzAjB zY9R;)TsqmoNEnDK@dfuE(vk?KZDPO~06drjU?>bu6FWV@y!_Ye=Wl_Z`u~TG|T(FH`cZUQblbfh?AQ zd*tZtm8@j{{J?21$c~Xnbtfh{p>{}X7{b02=QtohRNpAWE0^1?FaCbFkoW@TM7WHU zUrB7+{RRFD4G@DZ*2MG7x8o8k{PS-OQ{G8KDJRd?=<1{wcd(`OuVx z_WSNA?ENzM7j&^)0@xHb9BNz5O@T{e(2*f&lo9dtINHNjk*U-m=L7uhR_NJ%&d}_S zOu2Sa*qhcw))nZYjI*K>7Y^5T61MJa9l|IeU$jthS5mOQWIp`v$%z->9y?Mr)znEack&R%cH6QPR@UFMrDA2UknTu4=tdZjh~? zJ(LMF%~%x--1TgH&R%o7{aUo|COFnxA;s%E$B#cQX-aWZ{yP@3WZrPhZoIfpd$_IeH9U!a4BUG3SdHY2D zQ?Qo09RJH&KJ#65!3y@w=? z%N=zqE{8!hm?xbj=i6TSIOlgPF668gB&|;b^AIoEp%_)183nhx6_}C|*=EJ^R>0B{ z<;$OHH|;U^;rYd8P{ER*EWntlaN|2V%fWoW*SuB@WAj5WBRUWM%2iDn0N~=6+Egh&~B-CAfEh2PUA0)NneQ zWOt5a9TK;$E`FEVyhw$G49-@5mi%5%y9vx=*1aZ+4z zDw)o$nBYRo`kH7)S_>1@9ZQ7M9*-OFJ0bqh|10?!*{4rV^ zW?p@)A`83~ksr0`=45!)DQwR1-jW{`zd7e@wPk^+Fs>PfNyXca)edH$#Gc|e7h61A zT8q-frP(YnE>U0z_$r@s731GLj3Ca6MsfmoajkA!CR|F_6v)jte9MIQPhyBQ#6SAw z9e2-z#o|Yx653Tn1y2yDPkI*4EGzG=WfNbp+YC@Vu*3$dat+lJT|kbMjm9ba(6a`y zT#f*~RAM=E2{A73bO)cy;J*7%9qtCgmokuSRKooE-|kWgTyr={u>@o{%~j&=)kkE` z`{%LTR7To;CSrc4YP=m{kJ=-JJ5mB~YdYVzZh4Nu3h=;H0#6b(?aa2p|HlD_sylPj zncVW`x5^ZQo0X3|e7glhgK5`;ze+j{^2(p_w#Y{dCY+W6gErGh&Su42S5^vK5}^)* z&Gcs-GV;#eOX0et9C!lPAMi)-tLs)dG5SQ^a7q$ITt+b<7Y5#L%DAYe9Q+$*3G^RT z`<0Qc0pm_F;CKnkCjH=3fcbw}KM|lxe!%-2;QZRC0*PqR!myTjXcLv}SD(51b9-$qs_NKVvdYLy;E4m_Om=Y+md)UR0`tx%78t}BLN0*d-Vt>M+oI+~CAp5#o`#2^TzZA~b z1CPJ2oDnpmoSJ_Z|L{A80%8>jEr8;i{6a#PAfDgf$kc1|62Ql-Ff5@el`gYK=zd8J z1+L!HnIaIHGwjA|ycTUR4_@l#C_9V#eSHCCO&iqcGe9LKaA-5Ibs~f93b&H<3jM48 zS-|Tm-q4TFwO|c8*ua_s-yF5)NZ{T+NsY=dAv4J#xJHO&eP!91T?C819^&!8K}fbPUaJXUgqPIsG} zdVd)B$PpN>MScj+i;-8fmrJ=R55My(=Jse-43I;EM>WC(Ge(1#XZ}hxD(-*an34;p zUY}qhRpgg%md=kPrsAjj*vU{soX`Su;q>iglk{81lHAABPa#hyyRvEXp(x8syWwOW zBZNz{SYy52ip0fD@4gE8GRI8r>Q~@>MvkAA>e_Rg+&KrS$2%}VjSb3yOUy#Vr7u}n z(3!TJ5bAW6gd^V6$T|N8PiQVsO^Yg3L105=(mpYELQoX?iAtS@_#5qs@@<)>%S|B`u14ZQ{tzJf zpSyXP;zH$n@HZNb>mW&1j}=s5kH>?- zr7~D9gBM9Lm|qqHVD7a8zUC_VPTUGunG)OiYdeH)Jx*G(k)`!Pfx7AQ~UkLUk;(E>EU+T*IEKavnhoH-RIz z4XUZom>WmQ628W&9H%hi9TBQG6IvVmQW?&z+u*4zWXax0MgcF+*i+{Gl<1(@6g zubg-Ufu^2IgPm1d(4mn6V`rLo81Os*(J9oFJ9IH1yoDm#Y&sMow06N#C&4sQ>8|Ja z5PVUkco)DRXmeZ6W{|+f7v5{mvE4s~a^8#371#GU!WpsXma{2(b!2?L16!R5c~T00 zpHv{c`q+{njL1od!T?C06@`19@@qOyjA&*253=6qit{d``t)=2N+Gfs*-M$5rUWKr(Va=3M0 zCtlv51-p_t+nT5Xb)f`X(_^2_K(bfW!{eDIV$Eyr&cD!9uQ2mq*w-$snj$9d7Q`20 zz?BGFoNB-?I*vUFNc&M+tEo=sr}=i{CzS@p^mM2EuyA!%3JW0d%on9sPtDQ+bcgiTUs~ zVA&(ApLOwIA>w;%;Z}x`Ugw_2caY)QmAw;{F6nhZtSe{u2r;TKEk^THiriPS+v&#L zYYJ!OB#(fmZcdnRtohi`;aXnO63LKjMZ$lDcv+%u4y}heQ-uaWgMuMq>queS5b%TU zL?7gSJ76G{CBu;~y!l>uazixlhMnriK!|rj~u?ZXzmO zXPWhW8wlU2rCK((Zj{)(4`6!#ghVfabjesT=rtv`dAO1YldaW>9{i?$yx1l>HilCI{01aMr)n&N&5qS34>{=eH(BkKfIo@9Of0(~w zn-(jqo2u6G%%dZSGwvwmkjF$!{u$kM(;`uH?YP;mRX{UG z2^^0#E{O@4maA4ek5KmNu~O5Rc-`Dx;4s5D5)Q@b?4e{O&k`H1phH0V)F`kx!65a_ zR5|Qw-OYvfN~HWbmpx#6=_1AVssGdVvJal6L*d?|{F;apb0P?aTV*_B1;|(wyIEfQ zdB=^eZwLB1Z|lcQ(_VkQ=lvXHh;dEj{1c4k2=WTeACAN5pn^XE+3pU~d-Z6F4{c5o ztw2dr5yw)~$hww2$qfASvgBW*a0>3do_Kxprc%D~J83Yr6sk4A#Z5`j&`(r~UJQ-F z#0f7?=uou>;Blx7oA%1?uof!R1_-enZdJ<>6 z>t4?_DToPB?wU7%lO@i1*lTIfz$EM2OzX*lyGgQIP-2n)HwuFzDwcO->6t1)+GH3h zEjwJc694j%!dBhu>k+U{qjw+T*zK2@5FTOfZi9 z;m(t^BF=F@U^Vk9LifdZ$9H<6KugDCxE%vvD8s@G76UI;?vQO>!B-~83Zed+8qNS} zc-UlJ{Sb>rfR(~iU#Tt_Ur#~K!GPbi{24gAg$mo**GWuo?l3N7(uunhqVFd0TS#QS zI9YQB??ma^=OcD?CD-{c+&vW!07ebc+6*+PoWyLXmCJ?7S2lq+`eh|bE?om=ndO1s zvoKn`N6>gJC&`Jbb$&C>%Tu|I`CoC~l@h{Q-cLC$#H`s>gSnCWDYMSWwBraPs??u_)JBlLL#yDXuGGLPmVLFTznH3oZ zlPq}w2}co|)V4@GLx_QK?1Qp(1$#|{#wR&2Y4zDQUno* z(Zc;p8ym2$WwoQcn_oK8E+7IBA-SABPA3=@G<7^dXi>f{o}Pd@+k0(-Pttoi4xEX6?K)o@ zk%Aa0N!{6a9*y%>BppAB-G~r>J4J$9=PdUB!s=ixSB> z)5AcJ`<;5;-*J~hl>G@Z0XCT8YAmVK^7 zUg4r%txGZDjcf8T4DG@LWcJ5LLkip?Qq$W?FNn+JK5EPKEO*8GB}9-|fLetBp`w{N zfZjvDgPU}xVUJU_4AdnZ9R6zv-^SjydwBTMU^9Eh%Cuj7$1ZqzxpmL=k;30M}vA5j!)tSy+A1zn2yBaoTbK1=2IZLe* z7@vyJ>Y@-MzD}|>FAY5=a8#|vNy35#u$d(69}lX(fbyNd4cZVm z+pTcp!-DavapU%6PF)3Li1_z4rwBQ?noozr>^6__yUToYdBS9+=Zh?A4PBl0z??&) zi)k_C180akkmzjZZ1-Y6y^Ck{Dt`Z*32`9-kI*t3IeyxSiz=-I_|>a7HuJlbaMC%I zW9hg+IP3*|zmzGY3X~NpQMA$Z?gU;fu)EMd=kCCB5%8@ol~q|Z$VUSZEf_fJCu?`} z369HJ0LBH`%%4SJDfi9@ZlxToEaJ^s6AF*~>jn4^pUxU2tt|`e@MX%cytt}3(2g13 z7K{JsdieI|U7vdt>5Oh0gcE;w^>QQVtE3H%QL4?)#mNYFU82W0zy>sj5_9x)hx6_I z1w?7WDrqIkd88hMidCc@C3C1$z*|tl8M*H@_)fJY)<2nOqQ5169(#)L2enn4^*Q!4 zNF4r(2Wp#T1l~_Myhc_W>SLu;GY;5B%eLKzgl_o@U++BrbI19%7d_jYQp5%W{0Fsw z?Hs7o<`#P>zr&(_0l(r0;Zus8Vs6CgMSDqnVqur7{UXI*ZbJjKg$r%Woy13bXSzJe zvndjx^Y`U#LSxCP@8nW{@|~tS(?#21+(~W%moXyn=7OK9uuJeMP1DahtZ`wBDV#`Z zMEU$GIl#XJiu+dvIAar0ME(cv)6ZZd%ig1v+{lU5D7njF zeSaAyShruA!62=)bn$jTcdB3>eV7y?C%u%}(R`rERrSYdtiu^Hm~Y&)W43lYWn~9i zR#O0j4?p8zVNpa724JBC1YDr4-{3rlw(YjLGzC+oIJs_gA1x?b8DT3b_|uM!MK7iRe=INSHR@s=H^xQpvi{57hbFCjzbd0v~m(FSK;|Nbm!NV?F; zf`XMQ%hLv(uMw-RiXw-tbc{Kg4*#H(RY8J~Dr%T?{~d=|!||ez7IQy!_=)8378HZu zUfgYZz;fUVfn!C;j$1hQi^7Pni$Nw}_+;8GXm~|-LjsQxe>Kz`kRJLNQJ4BP=wAa+ z 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
  • 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

    M;@&*1)V7WDW@GX;xa=sMiBkxN@{(WQ| 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

    w> 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 diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.h b/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.h deleted file mode 100644 index a9a924467d3..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.h +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import "SWGPetApi.h" - -@interface PetApiTest : XCTestCase { -@private - SWGPetApi * api; -} - -@end \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClient/pom.xml b/samples/client/petstore/objc/SwaggerClient/pom.xml deleted file mode 100644 index 5cb5024538c..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/pom.xml +++ /dev/null @@ -1,24 +0,0 @@ - - 4.0.0 - de.felixschulze.my-project - PetstoreClient - xcode - 1.0-SNAPSHOT - Swagger Petstore Client - - - - de.felixschulze.maven.plugins.xcode - xcode-maven-plugin - 1.2 - - PetstoreClient.xcodeproj - PetstoreClient - Debug - iphoneos - - true - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Podfile b/samples/client/petstore/objc/SwaggerClientTests/Podfile new file mode 100644 index 00000000000..8bc79199e50 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Podfile @@ -0,0 +1,13 @@ +source 'https://github.com/CocoaPods/Specs.git' +use_frameworks! + +target 'SwaggerClient_Example', :exclusive => true do + pod "SwaggerClient", :path => "../" +end + +target 'SwaggerClient_Tests', :exclusive => true do + pod "SwaggerClient", :path => "../" + + pod 'Specta' + pod 'Expecta' +end diff --git a/samples/client/petstore/objc/Podfile.lock b/samples/client/petstore/objc/SwaggerClientTests/Podfile.lock similarity index 72% rename from samples/client/petstore/objc/Podfile.lock rename to samples/client/petstore/objc/SwaggerClientTests/Podfile.lock index 48b1f809658..d1ab2cdf9eb 100644 --- a/samples/client/petstore/objc/Podfile.lock +++ b/samples/client/petstore/objc/SwaggerClientTests/Podfile.lock @@ -20,17 +20,30 @@ PODS: - AFNetworking/UIKit (2.5.4): - AFNetworking/NSURLConnection - AFNetworking/NSURLSession + - Expecta (1.0.0) - ISO8601 (0.3.0) - JSONModel (1.1.0) + - Specta (1.0.2) + - SwaggerClient (0.1.0): + - AFNetworking (~> 2.3) + - ISO8601 + - JSONModel DEPENDENCIES: - - AFNetworking (~> 2.1) - - ISO8601 - - JSONModel (~> 1.0) + - Expecta + - Specta + - SwaggerClient (from `../`) + +EXTERNAL SOURCES: + SwaggerClient: + :path: "../" SPEC CHECKSUMS: AFNetworking: 05edc0ac4c4c8cf57bcf4b84be5b0744b6d8e71e + Expecta: 32604574add2c46a36f8d2f716b6c5736eb75024 ISO8601: 8d8a22d5edf0554a1cf75bac028c76c1dc0ffaef JSONModel: ec77e9865236a7a09d9cf7668df6b4b328d9ec1d + Specta: 9cec98310dca411f7c7ffd6943552b501622abfe + SwaggerClient: 579729c54e8e2e34566e5b5572adc959518663ea COCOAPODS: 0.37.1 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h new file mode 100644 index 00000000000..321d4e76e8c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1,66 @@ +// AFHTTPRequestOperation.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import "AFURLConnectionOperation.h" + +/** + `AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. + */ +@interface AFHTTPRequestOperation : AFURLConnectionOperation + +///------------------------------------------------ +/// @name Getting HTTP URL Connection Information +///------------------------------------------------ + +/** + The last HTTP response received by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSHTTPURLResponse *response; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an AFHTTPResponse serializer, which uses the raw data as its response object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. + + @warning `responseSerializer` must not be `nil`. Setting a response serializer will clear out any cached value + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +/** + An object constructed by the `responseSerializer` from the response and response data. Returns `nil` unless the operation `isFinished`, has a `response`, and has `responseData` with non-zero content length. If an error occurs during serialization, `nil` will be returned, and the `error` property will be populated with the serialization error. + */ +@property (readonly, nonatomic, strong) id responseObject; + +///----------------------------------------------------------- +/// @name Setting Completion Block Success / Failure Callbacks +///----------------------------------------------------------- + +/** + Sets the `completionBlock` property with a block that executes either the specified success or failure block, depending on the state of the request on completion. If `error` returns a value, which can be caused by an unacceptable status code or content type, then `failure` is executed. Otherwise, `success` is executed. + + This method should be overridden in subclasses in order to specify the response object passed into the success block. + + @param success The block to be executed on the completion of a successful request. This block has no return value and takes two arguments: the receiver operation and the object constructed from the response data of the request. + @param failure The block to be executed on the completion of an unsuccessful request. This block has no return value and takes two arguments: the receiver operation and the error that occurred during the request. + */ +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m new file mode 100644 index 00000000000..b8deda839a4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m @@ -0,0 +1,206 @@ +// AFHTTPRequestOperation.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFHTTPRequestOperation.h" + +static dispatch_queue_t http_request_operation_processing_queue() { + static dispatch_queue_t af_http_request_operation_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_http_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.http-request.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_http_request_operation_processing_queue; +} + +static dispatch_group_t http_request_operation_completion_group() { + static dispatch_group_t af_http_request_operation_completion_group; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_http_request_operation_completion_group = dispatch_group_create(); + }); + + return af_http_request_operation_completion_group; +} + +#pragma mark - + +@interface AFURLConnectionOperation () +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSURLResponse *response; +@end + +@interface AFHTTPRequestOperation () +@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response; +@property (readwrite, nonatomic, strong) id responseObject; +@property (readwrite, nonatomic, strong) NSError *responseSerializationError; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@end + +@implementation AFHTTPRequestOperation +@dynamic response; +@dynamic lock; + +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { + self = [super initWithRequest:urlRequest]; + if (!self) { + return nil; + } + + self.responseSerializer = [AFHTTPResponseSerializer serializer]; + + return self; +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); + + [self.lock lock]; + _responseSerializer = responseSerializer; + self.responseObject = nil; + self.responseSerializationError = nil; + [self.lock unlock]; +} + +- (id)responseObject { + [self.lock lock]; + if (!_responseObject && [self isFinished] && !self.error) { + NSError *error = nil; + self.responseObject = [self.responseSerializer responseObjectForResponse:self.response data:self.responseData error:&error]; + if (error) { + self.responseSerializationError = error; + } + } + [self.lock unlock]; + + return _responseObject; +} + +- (NSError *)error { + if (_responseSerializationError) { + return _responseSerializationError; + } else { + return [super error]; + } +} + +#pragma mark - AFHTTPRequestOperation + +- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + // completionBlock is manually nilled out in AFURLConnectionOperation to break the retain cycle. +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-retain-cycles" +#pragma clang diagnostic ignored "-Wgnu" + self.completionBlock = ^{ + if (self.completionGroup) { + dispatch_group_enter(self.completionGroup); + } + + dispatch_async(http_request_operation_processing_queue(), ^{ + if (self.error) { + if (failure) { + dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + id responseObject = self.responseObject; + if (self.error) { + if (failure) { + dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(self, self.error); + }); + } + } else { + if (success) { + dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ + success(self, responseObject); + }); + } + } + } + + if (self.completionGroup) { + dispatch_group_leave(self.completionGroup); + } + }); + }; +#pragma clang diagnostic pop +} + +#pragma mark - AFURLRequestOperation + +- (void)pause { + [super pause]; + + u_int64_t offset = 0; + if ([self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey]) { + offset = [(NSNumber *)[self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedLongLongValue]; + } else { + offset = [(NSData *)[self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey] length]; + } + + NSMutableURLRequest *mutableURLRequest = [self.request mutableCopy]; + if ([self.response respondsToSelector:@selector(allHeaderFields)] && [[self.response allHeaderFields] valueForKey:@"ETag"]) { + [mutableURLRequest setValue:[[self.response allHeaderFields] valueForKey:@"ETag"] forHTTPHeaderField:@"If-Range"]; + } + [mutableURLRequest setValue:[NSString stringWithFormat:@"bytes=%llu-", offset] forHTTPHeaderField:@"Range"]; + self.request = mutableURLRequest; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPRequestOperation *operation = [super copyWithZone:zone]; + + operation.responseSerializer = [self.responseSerializer copyWithZone:zone]; + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + + return operation; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h new file mode 100644 index 00000000000..17caa78b884 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h @@ -0,0 +1,323 @@ +// AFHTTPRequestOperationManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import +#import + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import +#else +#import +#endif + +#import "AFHTTPRequestOperation.h" +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" +#import "AFSecurityPolicy.h" +#import "AFNetworkReachabilityManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. + + ## Subclassing Notes + + Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. + + For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. + + ## Methods to Override + + To change the behavior of all request operation construction for an `AFHTTPRequestOperationManager` subclass, override `HTTPRequestOperationWithRequest:success:failure`. + + ## Serialization + + Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to ``. + + Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `` + + ## URL Construction Using Relative Paths + + For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. + + Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + ## Network Reachability Monitoring + + Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. + + ## NSSecureCoding & NSCopying Caveats + + `AFHTTPRequestOperationManager` conforms to the `NSSecureCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. There are a few minor caveats to keep in mind, however: + + - Archives and copies of HTTP clients will be initialized with an empty operation queue. + - NSSecureCoding cannot serialize / deserialize block properties, so an archive of an HTTP client will not include any reachability callback block that may be set. + */ +@interface AFHTTPRequestOperationManager : NSObject + +/** + The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. + */ +@property (readonly, nonatomic, strong) NSURL *baseURL; + +/** + Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. + + @warning `requestSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to a JSON serializer, which serializes data from responses with a `application/json` MIME type, and falls back to the raw data object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +/** + The operation queue on which request operations are scheduled and run. + */ +@property (nonatomic, strong) NSOperationQueue *operationQueue; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether request operations should consult the credential storage for authenticating the connection. `YES` by default. + + @see AFURLConnectionOperation -shouldUseCredentialStorage + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used by request operations for authentication challenges. + + @see AFURLConnectionOperation -credential + */ +@property (nonatomic, strong) NSURLCredential *credential; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used by created request operations to evaluate server trust for secure connections. `AFHTTPRequestOperationManager` uses the `defaultPolicy` unless otherwise specified. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///------------------------------------ +/// @name Managing Network Reachability +///------------------------------------ + +/** + The network reachability manager. `AFHTTPRequestOperationManager` uses the `sharedManager` by default. + */ +@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; + +///------------------------------- +/// @name Managing Callback Queues +///------------------------------- + +/** + The dispatch queue for the `completionBlock` of request operations. If `NULL` (default), the main queue is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong) dispatch_queue_t completionQueue; +#else +@property (nonatomic, assign) dispatch_queue_t completionQueue; +#endif + +/** + The dispatch group for the `completionBlock` of request operations. If `NULL` (default), a private dispatch group is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong) dispatch_group_t completionGroup; +#else +@property (nonatomic, assign) dispatch_group_t completionGroup; +#endif + +///--------------------------------------------- +/// @name Creating and Initializing HTTP Clients +///--------------------------------------------- + +/** + Creates and returns an `AFHTTPRequestOperationManager` object. + */ ++ (instancetype)manager; + +/** + Initializes an `AFHTTPRequestOperationManager` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(NSURL *)url NS_DESIGNATED_INITIALIZER; + +///--------------------------------------- +/// @name Managing HTTP Request Operations +///--------------------------------------- + +/** + Creates an `AFHTTPRequestOperation`, and sets the response serializers to that of the HTTP client. + + @param request The request object to be loaded asynchronously during execution of the operation. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. + */ +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates and runs an `AFHTTPRequestOperation` with a `GET` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `HEAD` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes a single arguments: the request operation. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a multipart `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `PUT` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `PATCH` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +/** + Creates and runs an `AFHTTPRequestOperation` with a `DELETE` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. + + @see -HTTPRequestOperationWithRequest:success:failure: + */ +- (AFHTTPRequestOperation *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; + +@end + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m new file mode 100644 index 00000000000..60739e5f0de --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m @@ -0,0 +1,284 @@ +// AFHTTPRequestOperationManager.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import "AFHTTPRequestOperationManager.h" +#import "AFHTTPRequestOperation.h" + +#import +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +@interface AFHTTPRequestOperationManager () +@property (readwrite, nonatomic, strong) NSURL *baseURL; +@end + +@implementation AFHTTPRequestOperationManager + ++ (instancetype)manager { + return [[self alloc] initWithBaseURL:nil]; +} + +- (instancetype)init { + return [self initWithBaseURL:nil]; +} + +- (instancetype)initWithBaseURL:(NSURL *)url { + self = [super init]; + if (!self) { + return nil; + } + + // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected + if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { + url = [url URLByAppendingPathComponent:@""]; + } + + self.baseURL = url; + + self.requestSerializer = [AFHTTPRequestSerializer serializer]; + self.responseSerializer = [AFJSONResponseSerializer serializer]; + + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; + + self.reachabilityManager = [AFNetworkReachabilityManager sharedManager]; + + self.operationQueue = [[NSOperationQueue alloc] init]; + + self.shouldUseCredentialStorage = YES; + + return self; +} + +#pragma mark - + +#ifdef _SYSTEMCONFIGURATION_H +#endif + +- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { + NSParameterAssert(requestSerializer); + + _requestSerializer = requestSerializer; +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); + + _responseSerializer = responseSerializer; +} + +#pragma mark - + +- (AFHTTPRequestOperation *)HTTPRequestOperationWithHTTPMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + return [self HTTPRequestOperationWithRequest:request success:success failure:failure]; +} + +- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; + operation.responseSerializer = self.responseSerializer; + operation.shouldUseCredentialStorage = self.shouldUseCredentialStorage; + operation.credential = self.credential; + operation.securityPolicy = self.securityPolicy; + + [operation setCompletionBlockWithSuccess:success failure:failure]; + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + + return operation; +} + +#pragma mark - + +- (AFHTTPRequestOperation *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"GET" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters success:^(AFHTTPRequestOperation *requestOperation, __unused id responseObject) { + if (success) { + success(requestOperation); + } + } failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +- (AFHTTPRequestOperation *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success + failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure +{ + AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters success:success failure:failure]; + + [self.operationQueue addOperation:operation]; + + return operation; +} + +#pragma mark - NSObject + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.operationQueue]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURL *baseURL = [decoder decodeObjectForKey:NSStringFromSelector(@selector(baseURL))]; + + self = [self initWithBaseURL:baseURL]; + if (!self) { + return nil; + } + + self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))]; + self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))]; + [coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))]; + [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPRequestOperationManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL]; + + HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone]; + HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone]; + + return HTTPClient; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h new file mode 100644 index 00000000000..cc98bab043b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h @@ -0,0 +1,247 @@ +// AFHTTPSessionManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import +#import + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import +#else +#import +#endif + +#import "AFURLSessionManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFHTTPSessionManager` is a subclass of `AFURLSessionManager` with convenience methods for making HTTP requests. When a `baseURL` is provided, requests made with the `GET` / `POST` / et al. convenience methods can be made with relative paths. + + ## Subclassing Notes + + Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. + + For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. + + ## Methods to Override + + To change the behavior of all data task operation construction, which is also used in the `GET` / `POST` / et al. convenience methods, override `dataTaskWithRequest:completionHandler:`. + + ## Serialization + + Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to ``. + + Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `` + + ## URL Construction Using Relative Paths + + For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. + + Below are a few examples of how `baseURL` and relative paths interact: + + NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; + [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz + [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo + [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo + [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ + [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ + + Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. + + @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. + */ + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +@interface AFHTTPSessionManager : AFURLSessionManager + +/** + The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. + */ +@property (readonly, nonatomic, strong) NSURL *baseURL; + +/** + Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. + + @warning `requestSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns an `AFHTTPSessionManager` object. + */ ++ (instancetype)manager; + +/** + Initializes an `AFHTTPSessionManager` object with the specified base URL. + + @param url The base URL for the HTTP client. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(NSURL *)url; + +/** + Initializes an `AFHTTPSessionManager` object with the specified base URL. + + This is the designated initializer. + + @param url The base URL for the HTTP client. + @param configuration The configuration used to create the managed session. + + @return The newly-initialized HTTP client + */ +- (instancetype)initWithBaseURL:(NSURL *)url + sessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; + +///--------------------------- +/// @name Making HTTP Requests +///--------------------------- + +/** + Creates and runs an `NSURLSessionDataTask` with a `GET` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `HEAD` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes a single arguments: the data task. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a multipart `POST` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `PUT` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `PATCH` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +/** + Creates and runs an `NSURLSessionDataTask` with a `DELETE` request. + + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded according to the client request serializer. + @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. + @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. + + @see -dataTaskWithRequest:completionHandler: + */ +- (NSURLSessionDataTask *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m new file mode 100644 index 00000000000..2b8352e74c9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m @@ -0,0 +1,321 @@ +// AFHTTPSessionManager.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFHTTPSessionManager.h" + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" + +#import +#import + +#ifdef _SYSTEMCONFIGURATION_H +#import +#import +#import +#import +#import +#endif + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +@interface AFHTTPSessionManager () +@property (readwrite, nonatomic, strong) NSURL *baseURL; +@end + +@implementation AFHTTPSessionManager +@dynamic responseSerializer; + ++ (instancetype)manager { + return [[[self class] alloc] initWithBaseURL:nil]; +} + +- (instancetype)init { + return [self initWithBaseURL:nil]; +} + +- (instancetype)initWithBaseURL:(NSURL *)url { + return [self initWithBaseURL:url sessionConfiguration:nil]; +} + +- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration { + return [self initWithBaseURL:nil sessionConfiguration:configuration]; +} + +- (instancetype)initWithBaseURL:(NSURL *)url + sessionConfiguration:(NSURLSessionConfiguration *)configuration +{ + self = [super initWithSessionConfiguration:configuration]; + if (!self) { + return nil; + } + + // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected + if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { + url = [url URLByAppendingPathComponent:@""]; + } + + self.baseURL = url; + + self.requestSerializer = [AFHTTPRequestSerializer serializer]; + self.responseSerializer = [AFJSONResponseSerializer serializer]; + + return self; +} + +#pragma mark - + +#ifdef _SYSTEMCONFIGURATION_H +#endif + +- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { + NSParameterAssert(requestSerializer); + + _requestSerializer = requestSerializer; +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + NSParameterAssert(responseSerializer); + + [super setResponseSerializer:responseSerializer]; +} + +#pragma mark - + +- (NSURLSessionDataTask *)GET:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"GET" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)HEAD:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters success:^(NSURLSessionDataTask *task, __unused id responseObject) { + if (success) { + success(task); + } + } failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)POST:(NSString *)URLString + parameters:(id)parameters + constructingBodyWithBlock:(void (^)(id formData))block + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + __block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest:request progress:nil completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { + if (error) { + if (failure) { + failure(task, error); + } + } else { + if (success) { + success(task, responseObject); + } + } + }]; + + [task resume]; + + return task; +} + +- (NSURLSessionDataTask *)PUT:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)PATCH:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)DELETE:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *task, id responseObject))success + failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure +{ + NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters success:success failure:failure]; + + [dataTask resume]; + + return dataTask; +} + +- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + success:(void (^)(NSURLSessionDataTask *, id))success + failure:(void (^)(NSURLSessionDataTask *, NSError *))failure +{ + NSError *serializationError = nil; + NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; + if (serializationError) { + if (failure) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ + failure(nil, serializationError); + }); +#pragma clang diagnostic pop + } + + return nil; + } + + __block NSURLSessionDataTask *dataTask = nil; + dataTask = [self dataTaskWithRequest:request completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { + if (error) { + if (failure) { + failure(dataTask, error); + } + } else { + if (success) { + success(dataTask, responseObject); + } + } + }]; + + return dataTask; +} + +#pragma mark - NSObject + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.session, self.operationQueue]; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURL *baseURL = [decoder decodeObjectOfClass:[NSURL class] forKey:NSStringFromSelector(@selector(baseURL))]; + NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"]; + if (!configuration) { + NSString *configurationIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"identifier"]; + if (configurationIdentifier) { +#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1100) + configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:configurationIdentifier]; +#else + configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:configurationIdentifier]; +#endif + } + } + + self = [self initWithBaseURL:baseURL sessionConfiguration:configuration]; + if (!self) { + return nil; + } + + self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))]; + self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))]; + if ([self.session.configuration conformsToProtocol:@protocol(NSCoding)]) { + [coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"]; + } else { + [coder encodeObject:self.session.configuration.identifier forKey:@"identifier"]; + } + [coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))]; + [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPSessionManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL sessionConfiguration:self.session.configuration]; + + HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone]; + HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone]; + + return HTTPClient; +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h new file mode 100644 index 00000000000..4ce2a36b202 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h @@ -0,0 +1,200 @@ +// AFNetworkReachabilityManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { + AFNetworkReachabilityStatusUnknown = -1, + AFNetworkReachabilityStatusNotReachable = 0, + AFNetworkReachabilityStatusReachableViaWWAN = 1, + AFNetworkReachabilityStatusReachableViaWiFi = 2, +}; + +/** + `AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. + + Reachability can be used to determine background information about why a network operation failed, or to trigger a network operation retrying when a connection is established. It should not be used to prevent a user from initiating a network request, as it's possible that an initial request may be required to establish reachability. + + See Apple's Reachability Sample Code (https://developer.apple.com/library/ios/samplecode/reachability/) + + @warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined. + */ +@interface AFNetworkReachabilityManager : NSObject + +/** + The current network reachability status. + */ +@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; + +/** + Whether or not the network is currently reachable. + */ +@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; + +/** + Whether or not the network is currently reachable via WWAN. + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; + +/** + Whether or not the network is currently reachable via WiFi. + */ +@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Returns the shared network reachability manager. + */ ++ (instancetype)sharedManager; + +/** + Creates and returns a network reachability manager for the specified domain. + + @param domain The domain used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified domain. + */ ++ (instancetype)managerForDomain:(NSString *)domain; + +/** + Creates and returns a network reachability manager for the socket address. + + @param address The socket address (`sockaddr_in`) used to evaluate network reachability. + + @return An initialized network reachability manager, actively monitoring the specified socket address. + */ ++ (instancetype)managerForAddress:(const void *)address; + +/** + Initializes an instance of a network reachability manager from the specified reachability object. + + @param reachability The reachability object to monitor. + + @return An initialized network reachability manager, actively monitoring the specified reachability. + */ +- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability NS_DESIGNATED_INITIALIZER; + +///-------------------------------------------------- +/// @name Starting & Stopping Reachability Monitoring +///-------------------------------------------------- + +/** + Starts monitoring for changes in network reachability status. + */ +- (void)startMonitoring; + +/** + Stops monitoring for changes in network reachability status. + */ +- (void)stopMonitoring; + +///------------------------------------------------- +/// @name Getting Localized Reachability Description +///------------------------------------------------- + +/** + Returns a localized string representation of the current network reachability status. + */ +- (NSString *)localizedNetworkReachabilityStatusString; + +///--------------------------------------------------- +/// @name Setting Network Reachability Change Callback +///--------------------------------------------------- + +/** + Sets a callback to be executed when the network availability of the `baseURL` host changes. + + @param block A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`. + */ +- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Network Reachability + + The following constants are provided by `AFNetworkReachabilityManager` as possible network reachability statuses. + + enum { + AFNetworkReachabilityStatusUnknown, + AFNetworkReachabilityStatusNotReachable, + AFNetworkReachabilityStatusReachableViaWWAN, + AFNetworkReachabilityStatusReachableViaWiFi, + } + + `AFNetworkReachabilityStatusUnknown` + The `baseURL` host reachability is not known. + + `AFNetworkReachabilityStatusNotReachable` + The `baseURL` host cannot be reached. + + `AFNetworkReachabilityStatusReachableViaWWAN` + The `baseURL` host can be reached via a cellular connection, such as EDGE or GPRS. + + `AFNetworkReachabilityStatusReachableViaWiFi` + The `baseURL` host can be reached via a Wi-Fi connection. + + ### Keys for Notification UserInfo Dictionary + + Strings that are used as keys in a `userInfo` dictionary in a network reachability status change notification. + + `AFNetworkingReachabilityNotificationStatusItem` + A key in the userInfo dictionary in a `AFNetworkingReachabilityDidChangeNotification` notification. + The corresponding value is an `NSNumber` object representing the `AFNetworkReachabilityStatus` value for the current reachability status. + */ + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when network reachability changes. + This notification assigns no notification object. The `userInfo` dictionary contains an `NSNumber` object under the `AFNetworkingReachabilityNotificationStatusItem` key, representing the `AFNetworkReachabilityStatus` value for the current network reachability. + + @warning In order for network reachability to be monitored, include the `SystemConfiguration` framework in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). + */ +extern NSString * const AFNetworkingReachabilityDidChangeNotification; +extern NSString * const AFNetworkingReachabilityNotificationStatusItem; + +///-------------------- +/// @name Functions +///-------------------- + +/** + Returns a localized string representation of an `AFNetworkReachabilityStatus` value. + */ +extern NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m new file mode 100644 index 00000000000..25e9581e4d8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m @@ -0,0 +1,259 @@ +// AFNetworkReachabilityManager.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFNetworkReachabilityManager.h" + +#import +#import +#import +#import +#import + +NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change"; +NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworkingReachabilityNotificationStatusItem"; + +typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); + +typedef NS_ENUM(NSUInteger, AFNetworkReachabilityAssociation) { + AFNetworkReachabilityForAddress = 1, + AFNetworkReachabilityForAddressPair = 2, + AFNetworkReachabilityForName = 3, +}; + +NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status) { + switch (status) { + case AFNetworkReachabilityStatusNotReachable: + return NSLocalizedStringFromTable(@"Not Reachable", @"AFNetworking", nil); + case AFNetworkReachabilityStatusReachableViaWWAN: + return NSLocalizedStringFromTable(@"Reachable via WWAN", @"AFNetworking", nil); + case AFNetworkReachabilityStatusReachableViaWiFi: + return NSLocalizedStringFromTable(@"Reachable via WiFi", @"AFNetworking", nil); + case AFNetworkReachabilityStatusUnknown: + default: + return NSLocalizedStringFromTable(@"Unknown", @"AFNetworking", nil); + } +} + +static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetworkReachabilityFlags flags) { + BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0); + BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0); + BOOL canConnectionAutomatically = (((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)); + BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0); + BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction)); + + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown; + if (isNetworkReachable == NO) { + status = AFNetworkReachabilityStatusNotReachable; + } +#if TARGET_OS_IPHONE + else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) { + status = AFNetworkReachabilityStatusReachableViaWWAN; + } +#endif + else { + status = AFNetworkReachabilityStatusReachableViaWiFi; + } + + return status; +} + +static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) { + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); + AFNetworkReachabilityStatusBlock block = (__bridge AFNetworkReachabilityStatusBlock)info; + if (block) { + block(status); + } + + + dispatch_async(dispatch_get_main_queue(), ^{ + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + NSDictionary *userInfo = @{ AFNetworkingReachabilityNotificationStatusItem: @(status) }; + [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:userInfo]; + }); + +} + +static const void * AFNetworkReachabilityRetainCallback(const void *info) { + return Block_copy(info); +} + +static void AFNetworkReachabilityReleaseCallback(const void *info) { + if (info) { + Block_release(info); + } +} + +@interface AFNetworkReachabilityManager () +@property (readwrite, nonatomic, assign) SCNetworkReachabilityRef networkReachability; +@property (readwrite, nonatomic, assign) AFNetworkReachabilityAssociation networkReachabilityAssociation; +@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; +@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock; +@end + +@implementation AFNetworkReachabilityManager + ++ (instancetype)sharedManager { + static AFNetworkReachabilityManager *_sharedManager = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + struct sockaddr_in address; + bzero(&address, sizeof(address)); + address.sin_len = sizeof(address); + address.sin_family = AF_INET; + + _sharedManager = [self managerForAddress:&address]; + }); + + return _sharedManager; +} + ++ (instancetype)managerForDomain:(NSString *)domain { + SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [domain UTF8String]); + + AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; + manager.networkReachabilityAssociation = AFNetworkReachabilityForName; + + return manager; +} + ++ (instancetype)managerForAddress:(const void *)address { + SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address); + + AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; + manager.networkReachabilityAssociation = AFNetworkReachabilityForAddress; + + return manager; +} + +- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability { + self = [super init]; + if (!self) { + return nil; + } + + self.networkReachability = reachability; + self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown; + + return self; +} + +- (void)dealloc { + [self stopMonitoring]; + + if (_networkReachability) { + CFRelease(_networkReachability); + _networkReachability = NULL; + } +} + +#pragma mark - + +- (BOOL)isReachable { + return [self isReachableViaWWAN] || [self isReachableViaWiFi]; +} + +- (BOOL)isReachableViaWWAN { + return self.networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWWAN; +} + +- (BOOL)isReachableViaWiFi { + return self.networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWiFi; +} + +#pragma mark - + +- (void)startMonitoring { + [self stopMonitoring]; + + if (!self.networkReachability) { + return; + } + + __weak __typeof(self)weakSelf = self; + AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + + strongSelf.networkReachabilityStatus = status; + if (strongSelf.networkReachabilityStatusBlock) { + strongSelf.networkReachabilityStatusBlock(status); + } + + }; + + SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; + SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); + SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); + + switch (self.networkReachabilityAssociation) { + case AFNetworkReachabilityForName: + break; + case AFNetworkReachabilityForAddress: + case AFNetworkReachabilityForAddressPair: + default: { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{ + SCNetworkReachabilityFlags flags; + SCNetworkReachabilityGetFlags(self.networkReachability, &flags); + AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); + dispatch_async(dispatch_get_main_queue(), ^{ + callback(status); + + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:@{ AFNetworkingReachabilityNotificationStatusItem: @(status) }]; + + + }); + }); + } + break; + } +} + +- (void)stopMonitoring { + if (!self.networkReachability) { + return; + } + + SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); +} + +#pragma mark - + +- (NSString *)localizedNetworkReachabilityStatusString { + return AFStringFromNetworkReachabilityStatus(self.networkReachabilityStatus); +} + +#pragma mark - + +- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block { + self.networkReachabilityStatusBlock = block; +} + +#pragma mark - NSKeyValueObserving + ++ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key { + if ([key isEqualToString:@"reachable"] || [key isEqualToString:@"reachableViaWWAN"] || [key isEqualToString:@"reachableViaWiFi"]) { + return [NSSet setWithObject:@"networkReachabilityStatus"]; + } + + return [super keyPathsForValuesAffectingValueForKey:key]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h new file mode 100644 index 00000000000..68273da58e0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h @@ -0,0 +1,44 @@ +// AFNetworking.h +// +// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import + +#ifndef _AFNETWORKING_ + #define _AFNETWORKING_ + + #import "AFURLRequestSerialization.h" + #import "AFURLResponseSerialization.h" + #import "AFSecurityPolicy.h" + #import "AFNetworkReachabilityManager.h" + + #import "AFURLConnectionOperation.h" + #import "AFHTTPRequestOperation.h" + #import "AFHTTPRequestOperationManager.h" + +#if ( ( defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) || \ + ( defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 ) ) + #import "AFURLSessionManager.h" + #import "AFHTTPSessionManager.h" +#endif + +#endif /* _AFNETWORKING_ */ diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h new file mode 100644 index 00000000000..c6cec831224 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h @@ -0,0 +1,142 @@ +// AFSecurityPolicy.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import + +typedef NS_ENUM(NSUInteger, AFSSLPinningMode) { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, +}; + +/** + `AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. + + Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. + */ +@interface AFSecurityPolicy : NSObject + +/** + The criteria by which server trust should be evaluated against the pinned SSL certificates. Defaults to `AFSSLPinningModeNone`. + */ +@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode; + +/** + Whether to evaluate an entire SSL certificate chain, or just the leaf certificate. Defaults to `YES`. + */ +@property (nonatomic, assign) BOOL validatesCertificateChain; + +/** + The certificates used to evaluate server trust according to the SSL pinning mode. By default, this property is set to any (`.cer`) certificates included in the app bundle. + */ +@property (nonatomic, strong) NSArray *pinnedCertificates; + +/** + Whether or not to trust servers with an invalid or expired SSL certificates. Defaults to `NO`. + */ +@property (nonatomic, assign) BOOL allowInvalidCertificates; + +/** + Whether or not to validate the domain name in the certificate's CN field. Defaults to `YES`. + */ +@property (nonatomic, assign) BOOL validatesDomainName; + +///----------------------------------------- +/// @name Getting Specific Security Policies +///----------------------------------------- + +/** + Returns the shared default security policy, which does not allow invalid certificates, validates domain name, and does not validate against pinned certificates or public keys. + + @return The default security policy. + */ ++ (instancetype)defaultPolicy; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns a security policy with the specified pinning mode. + + @param pinningMode The SSL pinning mode. + + @return A new security policy. + */ ++ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode; + +///------------------------------ +/// @name Evaluating Server Trust +///------------------------------ + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from a server. + + @param serverTrust The X.509 certificate trust of the server. + + @return Whether or not to trust the server. + + @warning This method has been deprecated in favor of `-evaluateServerTrust:forDomain:`. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust DEPRECATED_ATTRIBUTE; + +/** + Whether or not the specified server trust should be accepted, based on the security policy. + + This method should be used when responding to an authentication challenge from a server. + + @param serverTrust The X.509 certificate trust of the server. + @param domain The domain of serverTrust. If `nil`, the domain will not be validated. + + @return Whether or not to trust the server. + */ +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust + forDomain:(NSString *)domain; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## SSL Pinning Modes + + The following constants are provided by `AFSSLPinningMode` as possible SSL pinning modes. + + enum { + AFSSLPinningModeNone, + AFSSLPinningModePublicKey, + AFSSLPinningModeCertificate, + } + + `AFSSLPinningModeNone` + Do not used pinned certificates to validate servers. + + `AFSSLPinningModePublicKey` + Validate host certificates against public keys of pinned certificates. + + `AFSSLPinningModeCertificate` + Validate host certificates against pinned certificates. +*/ diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m new file mode 100644 index 00000000000..2bbff624654 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m @@ -0,0 +1,308 @@ +// AFSecurityPolicy.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFSecurityPolicy.h" + +#import + +#if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +static NSData * AFSecKeyGetData(SecKeyRef key) { + CFDataRef data = NULL; + + __Require_noErr_Quiet(SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data), _out); + + return (__bridge_transfer NSData *)data; + +_out: + if (data) { + CFRelease(data); + } + + return nil; +} +#endif + +static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + return [(__bridge id)key1 isEqual:(__bridge id)key2]; +#else + return [AFSecKeyGetData(key1) isEqual:AFSecKeyGetData(key2)]; +#endif +} + +static id AFPublicKeyForCertificate(NSData *certificate) { + id allowedPublicKey = nil; + SecCertificateRef allowedCertificate; + SecCertificateRef allowedCertificates[1]; + CFArrayRef tempCertificates = nil; + SecPolicyRef policy = nil; + SecTrustRef allowedTrust = nil; + SecTrustResultType result; + + allowedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificate); + __Require_Quiet(allowedCertificate != NULL, _out); + + allowedCertificates[0] = allowedCertificate; + tempCertificates = CFArrayCreate(NULL, (const void **)allowedCertificates, 1, NULL); + + policy = SecPolicyCreateBasicX509(); + __Require_noErr_Quiet(SecTrustCreateWithCertificates(tempCertificates, policy, &allowedTrust), _out); + __Require_noErr_Quiet(SecTrustEvaluate(allowedTrust, &result), _out); + + allowedPublicKey = (__bridge_transfer id)SecTrustCopyPublicKey(allowedTrust); + +_out: + if (allowedTrust) { + CFRelease(allowedTrust); + } + + if (policy) { + CFRelease(policy); + } + + if (tempCertificates) { + CFRelease(tempCertificates); + } + + if (allowedCertificate) { + CFRelease(allowedCertificate); + } + + return allowedPublicKey; +} + +static BOOL AFServerTrustIsValid(SecTrustRef serverTrust) { + BOOL isValid = NO; + SecTrustResultType result; + __Require_noErr_Quiet(SecTrustEvaluate(serverTrust, &result), _out); + + isValid = (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed); + +_out: + return isValid; +} + +static NSArray * AFCertificateTrustChainForServerTrust(SecTrustRef serverTrust) { + CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); + NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:(NSUInteger)certificateCount]; + + for (CFIndex i = 0; i < certificateCount; i++) { + SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); + [trustChain addObject:(__bridge_transfer NSData *)SecCertificateCopyData(certificate)]; + } + + return [NSArray arrayWithArray:trustChain]; +} + +static NSArray * AFPublicKeyTrustChainForServerTrust(SecTrustRef serverTrust) { + SecPolicyRef policy = SecPolicyCreateBasicX509(); + CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); + NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:(NSUInteger)certificateCount]; + for (CFIndex i = 0; i < certificateCount; i++) { + SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); + + SecCertificateRef someCertificates[] = {certificate}; + CFArrayRef certificates = CFArrayCreate(NULL, (const void **)someCertificates, 1, NULL); + + SecTrustRef trust; + __Require_noErr_Quiet(SecTrustCreateWithCertificates(certificates, policy, &trust), _out); + + SecTrustResultType result; + __Require_noErr_Quiet(SecTrustEvaluate(trust, &result), _out); + + [trustChain addObject:(__bridge_transfer id)SecTrustCopyPublicKey(trust)]; + + _out: + if (trust) { + CFRelease(trust); + } + + if (certificates) { + CFRelease(certificates); + } + + continue; + } + CFRelease(policy); + + return [NSArray arrayWithArray:trustChain]; +} + +#pragma mark - + +@interface AFSecurityPolicy() +@property (readwrite, nonatomic, assign) AFSSLPinningMode SSLPinningMode; +@property (readwrite, nonatomic, strong) NSArray *pinnedPublicKeys; +@end + +@implementation AFSecurityPolicy + ++ (NSArray *)defaultPinnedCertificates { + static NSArray *_defaultPinnedCertificates = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory:@"."]; + + NSMutableArray *certificates = [NSMutableArray arrayWithCapacity:[paths count]]; + for (NSString *path in paths) { + NSData *certificateData = [NSData dataWithContentsOfFile:path]; + [certificates addObject:certificateData]; + } + + _defaultPinnedCertificates = [[NSArray alloc] initWithArray:certificates]; + }); + + return _defaultPinnedCertificates; +} + ++ (instancetype)defaultPolicy { + AFSecurityPolicy *securityPolicy = [[self alloc] init]; + securityPolicy.SSLPinningMode = AFSSLPinningModeNone; + + return securityPolicy; +} + ++ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode { + AFSecurityPolicy *securityPolicy = [[self alloc] init]; + securityPolicy.SSLPinningMode = pinningMode; + + [securityPolicy setPinnedCertificates:[self defaultPinnedCertificates]]; + + return securityPolicy; +} + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + self.validatesCertificateChain = YES; + self.validatesDomainName = YES; + + return self; +} + +- (void)setPinnedCertificates:(NSArray *)pinnedCertificates { + _pinnedCertificates = pinnedCertificates; + + if (self.pinnedCertificates) { + NSMutableArray *mutablePinnedPublicKeys = [NSMutableArray arrayWithCapacity:[self.pinnedCertificates count]]; + for (NSData *certificate in self.pinnedCertificates) { + id publicKey = AFPublicKeyForCertificate(certificate); + if (!publicKey) { + continue; + } + [mutablePinnedPublicKeys addObject:publicKey]; + } + self.pinnedPublicKeys = [NSArray arrayWithArray:mutablePinnedPublicKeys]; + } else { + self.pinnedPublicKeys = nil; + } +} + +#pragma mark - + +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust { + return [self evaluateServerTrust:serverTrust forDomain:nil]; +} + +- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust + forDomain:(NSString *)domain +{ + NSMutableArray *policies = [NSMutableArray array]; + if (self.validatesDomainName) { + [policies addObject:(__bridge_transfer id)SecPolicyCreateSSL(true, (__bridge CFStringRef)domain)]; + } else { + [policies addObject:(__bridge_transfer id)SecPolicyCreateBasicX509()]; + } + + SecTrustSetPolicies(serverTrust, (__bridge CFArrayRef)policies); + + if (self.SSLPinningMode == AFSSLPinningModeNone) { + if (self.allowInvalidCertificates || AFServerTrustIsValid(serverTrust)){ + return YES; + } else { + return NO; + } + } else if (!AFServerTrustIsValid(serverTrust) && !self.allowInvalidCertificates) { + return NO; + } + + NSArray *serverCertificates = AFCertificateTrustChainForServerTrust(serverTrust); + switch (self.SSLPinningMode) { + case AFSSLPinningModeNone: + default: + return NO; + case AFSSLPinningModeCertificate: { + NSMutableArray *pinnedCertificates = [NSMutableArray array]; + for (NSData *certificateData in self.pinnedCertificates) { + [pinnedCertificates addObject:(__bridge_transfer id)SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificateData)]; + } + SecTrustSetAnchorCertificates(serverTrust, (__bridge CFArrayRef)pinnedCertificates); + + if (!AFServerTrustIsValid(serverTrust)) { + return NO; + } + + if (!self.validatesCertificateChain) { + return YES; + } + + NSUInteger trustedCertificateCount = 0; + for (NSData *trustChainCertificate in serverCertificates) { + if ([self.pinnedCertificates containsObject:trustChainCertificate]) { + trustedCertificateCount++; + } + } + + return trustedCertificateCount == [serverCertificates count]; + } + case AFSSLPinningModePublicKey: { + NSUInteger trustedPublicKeyCount = 0; + NSArray *publicKeys = AFPublicKeyTrustChainForServerTrust(serverTrust); + if (!self.validatesCertificateChain && [publicKeys count] > 0) { + publicKeys = @[[publicKeys firstObject]]; + } + + for (id trustChainPublicKey in publicKeys) { + for (id pinnedPublicKey in self.pinnedPublicKeys) { + if (AFSecKeyIsEqualToKey((__bridge SecKeyRef)trustChainPublicKey, (__bridge SecKeyRef)pinnedPublicKey)) { + trustedPublicKeyCount += 1; + } + } + } + + return trustedPublicKeyCount > 0 && ((self.validatesCertificateChain && trustedPublicKeyCount == [serverCertificates count]) || (!self.validatesCertificateChain && trustedPublicKeyCount >= 1)); + } + } + + return NO; +} + +#pragma mark - NSKeyValueObserving + ++ (NSSet *)keyPathsForValuesAffectingPinnedPublicKeys { + return [NSSet setWithObject:@"pinnedCertificates"]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h new file mode 100644 index 00000000000..0248e6772b5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1,343 @@ +// AFURLConnectionOperation.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFSecurityPolicy.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFURLConnectionOperation` is a subclass of `NSOperation` that implements `NSURLConnection` delegate methods. + + ## Subclassing Notes + + This is the base class of all network request operations. You may wish to create your own subclass in order to implement additional `NSURLConnection` delegate methods (see "`NSURLConnection` Delegate Methods" below), or to provide additional properties and/or class constructors. + + If you are creating a subclass that communicates over the HTTP or HTTPS protocols, you may want to consider subclassing `AFHTTPRequestOperation` instead, as it supports specifying acceptable content types or status codes. + + ## NSURLConnection Delegate Methods + + `AFURLConnectionOperation` implements the following `NSURLConnection` delegate methods: + + - `connection:didReceiveResponse:` + - `connection:didReceiveData:` + - `connectionDidFinishLoading:` + - `connection:didFailWithError:` + - `connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:` + - `connection:willCacheResponse:` + - `connectionShouldUseCredentialStorage:` + - `connection:needNewBodyStream:` + - `connection:willSendRequestForAuthenticationChallenge:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Callbacks and Completion Blocks + + The built-in `completionBlock` provided by `NSOperation` allows for custom behavior to be executed after the request finishes. It is a common pattern for class constructors in subclasses to take callback block parameters, and execute them conditionally in the body of its `completionBlock`. Make sure to handle cancelled operations appropriately when setting a `completionBlock` (i.e. returning early before parsing response data). See the implementation of any of the `AFHTTPRequestOperation` subclasses for an example of this. + + Subclasses are strongly discouraged from overriding `setCompletionBlock:`, as `AFURLConnectionOperation`'s implementation includes a workaround to mitigate retain cycles, and what Apple rather ominously refers to as ["The Deallocation Problem"](http://developer.apple.com/library/ios/#technotes/tn2109/). + + ## SSL Pinning + + Relying on the CA trust model to validate SSL certificates exposes your app to security vulnerabilities, such as man-in-the-middle attacks. For applications that connect to known servers, SSL certificate pinning provides an increased level of security, by checking server certificate validity against those specified in the app bundle. + + SSL with certificate pinning is strongly recommended for any application that transmits sensitive information to an external webservice. + + Connections will be validated on all matching certificates with a `.cer` extension in the bundle root. + + ## App Extensions + + When using AFNetworking in an App Extension, `#define AF_APP_EXTENSIONS` to avoid using unavailable APIs. + + ## NSCoding & NSCopying Conformance + + `AFURLConnectionOperation` conforms to the `NSCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. However, because of the intrinsic limitations of capturing the exact state of an operation at a particular moment, there are some important caveats to keep in mind: + + ### NSCoding Caveats + + - Encoded operations do not include any block or stream properties. Be sure to set `completionBlock`, `outputStream`, and any callback blocks as necessary when using `-initWithCoder:` or `NSKeyedUnarchiver`. + - Operations are paused on `encodeWithCoder:`. If the operation was encoded while paused or still executing, its archived state will return `YES` for `isReady`. Otherwise, the state of an operation when encoding will remain unchanged. + + ### NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new operation with the `NSURLRequest` of the original. So rather than an exact copy of the operation at that particular instant, the copying mechanism returns a completely new instance, which can be useful for retrying operations. + - A copy of an operation will not include the `outputStream` of the original. + - Operation copies do not include `completionBlock`, as it often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ operation when copied. + */ + +@interface AFURLConnectionOperation : NSOperation + +///------------------------------- +/// @name Accessing Run Loop Modes +///------------------------------- + +/** + The run loop modes in which the operation will run on the network thread. By default, this is a single-member set containing `NSRunLoopCommonModes`. + */ +@property (nonatomic, strong) NSSet *runLoopModes; + +///----------------------------------------- +/// @name Getting URL Connection Information +///----------------------------------------- + +/** + The request used by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLRequest *request; + +/** + The last response received by the operation's connection. + */ +@property (readonly, nonatomic, strong) NSURLResponse *response; + +/** + The error, if any, that occurred in the lifecycle of the request. + */ +@property (readonly, nonatomic, strong) NSError *error; + +///---------------------------- +/// @name Getting Response Data +///---------------------------- + +/** + The data received during the request. + */ +@property (readonly, nonatomic, strong) NSData *responseData; + +/** + The string representation of the response data. + */ +@property (readonly, nonatomic, copy) NSString *responseString; + +/** + The string encoding of the response. + + If the response does not specify a valid string encoding, `responseStringEncoding` will return `NSUTF8StringEncoding`. + */ +@property (readonly, nonatomic, assign) NSStringEncoding responseStringEncoding; + +///------------------------------- +/// @name Managing URL Credentials +///------------------------------- + +/** + Whether the URL connection should consult the credential storage for authenticating the connection. `YES` by default. + + This is the value that is returned in the `NSURLConnectionDelegate` method `-connectionShouldUseCredentialStorage:`. + */ +@property (nonatomic, assign) BOOL shouldUseCredentialStorage; + +/** + The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. + + This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. + */ +@property (nonatomic, strong) NSURLCredential *credential; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used to evaluate server trust for secure connections. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///------------------------ +/// @name Accessing Streams +///------------------------ + +/** + The input stream used to read data to be sent during the request. + + This property acts as a proxy to the `HTTPBodyStream` property of `request`. + */ +@property (nonatomic, strong) NSInputStream *inputStream; + +/** + The output stream that is used to write data received until the request is finished. + + By default, data is accumulated into a buffer that is stored into `responseData` upon completion of the request, with the intermediary `outputStream` property set to `nil`. When `outputStream` is set, the data will not be accumulated into an internal buffer, and as a result, the `responseData` property of the completed request will be `nil`. The output stream will be scheduled in the network thread runloop upon being set. + */ +@property (nonatomic, strong) NSOutputStream *outputStream; + +///--------------------------------- +/// @name Managing Callback Queues +///--------------------------------- + +/** + The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong) dispatch_queue_t completionQueue; +#else +@property (nonatomic, assign) dispatch_queue_t completionQueue; +#endif + +/** + The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong) dispatch_group_t completionGroup; +#else +@property (nonatomic, assign) dispatch_group_t completionGroup; +#endif + +///--------------------------------------------- +/// @name Managing Request Operation Information +///--------------------------------------------- + +/** + The user info dictionary for the receiver. + */ +@property (nonatomic, strong) NSDictionary *userInfo; + +///------------------------------------------------------ +/// @name Initializing an AFURLConnectionOperation Object +///------------------------------------------------------ + +/** + Initializes and returns a newly allocated operation object with a url connection configured with the specified url request. + + This is the designated initializer. + + @param urlRequest The request object to be used by the operation connection. + */ +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest NS_DESIGNATED_INITIALIZER; + +///---------------------------------- +/// @name Pausing / Resuming Requests +///---------------------------------- + +/** + Pauses the execution of the request operation. + + A paused operation returns `NO` for `-isReady`, `-isExecuting`, and `-isFinished`. As such, it will remain in an `NSOperationQueue` until it is either cancelled or resumed. Pausing a finished, cancelled, or paused operation has no effect. + */ +- (void)pause; + +/** + Whether the request operation is currently paused. + + @return `YES` if the operation is currently paused, otherwise `NO`. + */ +- (BOOL)isPaused; + +/** + Resumes the execution of the paused request operation. + + Pause/Resume behavior varies depending on the underlying implementation for the operation class. In its base implementation, resuming a paused requests restarts the original request. However, since HTTP defines a specification for how to request a specific content range, `AFHTTPRequestOperation` will resume downloading the request from where it left off, instead of restarting the original request. + */ +- (void)resume; + +///---------------------------------------------- +/// @name Configuring Backgrounding Task Behavior +///---------------------------------------------- + +/** + Specifies that the operation should continue execution after the app has entered the background, and the expiration handler for that background task. + + @param handler A handler to be called shortly before the application’s remaining background time reaches 0. The handler is wrapped in a block that cancels the operation, and cleans up and marks the end of execution, unlike the `handler` parameter in `UIApplication -beginBackgroundTaskWithExpirationHandler:`, which expects this to be done in the handler itself. The handler is called synchronously on the main thread, thus blocking the application’s suspension momentarily while the application is notified. + */ +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler; +#endif + +///--------------------------------- +/// @name Setting Progress Callbacks +///--------------------------------- + +/** + Sets a callback to be called when an undetermined number of bytes have been uploaded to the server. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes three arguments: the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block; + +/** + Sets a callback to be called when an undetermined number of bytes have been downloaded from the server. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block; + +///------------------------------------------------- +/// @name Setting NSURLConnection Delegate Callbacks +///------------------------------------------------- + +/** + Sets a block to be executed when the connection will authenticate a challenge in order to download its request, as handled by the `NSURLConnectionDelegate` method `connection:willSendRequestForAuthenticationChallenge:`. + + @param block A block object to be executed when the connection will authenticate a challenge in order to download its request. The block has no return type and takes two arguments: the URL connection object, and the challenge that must be authenticated. This block must invoke one of the challenge-responder methods (NSURLAuthenticationChallengeSender protocol). + + If `allowsInvalidSSLCertificate` is set to YES, `connection:willSendRequestForAuthenticationChallenge:` will attempt to have the challenge sender use credentials with invalid SSL certificates. + */ +- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block; + +/** + Sets a block to be executed when the server redirects the request from one URL to another URL, or when the request URL changed by the `NSURLProtocol` subclass handling the request in order to standardize its format, as handled by the `NSURLConnectionDataDelegate` method `connection:willSendRequest:redirectResponse:`. + + @param block A block object to be executed when the request URL was changed. The block returns an `NSURLRequest` object, the URL request to redirect, and takes three arguments: the URL connection object, the the proposed redirected request, and the URL response that caused the redirect. + */ +- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block; + + +/** + Sets a block to be executed to modify the response a connection will cache, if any, as handled by the `NSURLConnectionDelegate` method `connection:willCacheResponse:`. + + @param block A block object to be executed to determine what response a connection will cache, if any. The block returns an `NSCachedURLResponse` object, the cached response to store in memory or `nil` to prevent the response from being cached, and takes two arguments: the URL connection object, and the cached response provided for the request. + */ +- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block; + +/// + +/** + + */ ++ (NSArray *)batchOfRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock; + +@end + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when an operation begins executing. + */ +extern NSString * const AFNetworkingOperationDidStartNotification; + +/** + Posted when an operation finishes. + */ +extern NSString * const AFNetworkingOperationDidFinishNotification; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m new file mode 100644 index 00000000000..8d320924119 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m @@ -0,0 +1,788 @@ +// AFURLConnectionOperation.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFURLConnectionOperation.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +#if !__has_feature(objc_arc) +#error AFNetworking must be built with ARC. +// You can turn on ARC for only AFNetworking files by adding -fobjc-arc to the build phase for each of its files. +#endif + +typedef NS_ENUM(NSInteger, AFOperationState) { + AFOperationPausedState = -1, + AFOperationReadyState = 1, + AFOperationExecutingState = 2, + AFOperationFinishedState = 3, +}; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) +typedef UIBackgroundTaskIdentifier AFBackgroundTaskIdentifier; +#else +typedef id AFBackgroundTaskIdentifier; +#endif + +static dispatch_group_t url_request_operation_completion_group() { + static dispatch_group_t af_url_request_operation_completion_group; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_request_operation_completion_group = dispatch_group_create(); + }); + + return af_url_request_operation_completion_group; +} + +static dispatch_queue_t url_request_operation_completion_queue() { + static dispatch_queue_t af_url_request_operation_completion_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_request_operation_completion_queue = dispatch_queue_create("com.alamofire.networking.operation.queue", DISPATCH_QUEUE_CONCURRENT ); + }); + + return af_url_request_operation_completion_queue; +} + +static NSString * const kAFNetworkingLockName = @"com.alamofire.networking.operation.lock"; + +NSString * const AFNetworkingOperationDidStartNotification = @"com.alamofire.networking.operation.start"; +NSString * const AFNetworkingOperationDidFinishNotification = @"com.alamofire.networking.operation.finish"; + +typedef void (^AFURLConnectionOperationProgressBlock)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +typedef void (^AFURLConnectionOperationAuthenticationChallengeBlock)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge); +typedef NSCachedURLResponse * (^AFURLConnectionOperationCacheResponseBlock)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse); +typedef NSURLRequest * (^AFURLConnectionOperationRedirectResponseBlock)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse); + +static inline NSString * AFKeyPathFromOperationState(AFOperationState state) { + switch (state) { + case AFOperationReadyState: + return @"isReady"; + case AFOperationExecutingState: + return @"isExecuting"; + case AFOperationFinishedState: + return @"isFinished"; + case AFOperationPausedState: + return @"isPaused"; + default: { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" + return @"state"; +#pragma clang diagnostic pop + } + } +} + +static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperationState toState, BOOL isCancelled) { + switch (fromState) { + case AFOperationReadyState: + switch (toState) { + case AFOperationPausedState: + case AFOperationExecutingState: + return YES; + case AFOperationFinishedState: + return isCancelled; + default: + return NO; + } + case AFOperationExecutingState: + switch (toState) { + case AFOperationPausedState: + case AFOperationFinishedState: + return YES; + default: + return NO; + } + case AFOperationFinishedState: + return NO; + case AFOperationPausedState: + return toState == AFOperationReadyState; + default: { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunreachable-code" + switch (toState) { + case AFOperationPausedState: + case AFOperationReadyState: + case AFOperationExecutingState: + case AFOperationFinishedState: + return YES; + default: + return NO; + } + } +#pragma clang diagnostic pop + } +} + +@interface AFURLConnectionOperation () +@property (readwrite, nonatomic, assign) AFOperationState state; +@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; +@property (readwrite, nonatomic, strong) NSURLConnection *connection; +@property (readwrite, nonatomic, strong) NSURLRequest *request; +@property (readwrite, nonatomic, strong) NSURLResponse *response; +@property (readwrite, nonatomic, strong) NSError *error; +@property (readwrite, nonatomic, strong) NSData *responseData; +@property (readwrite, nonatomic, copy) NSString *responseString; +@property (readwrite, nonatomic, assign) NSStringEncoding responseStringEncoding; +@property (readwrite, nonatomic, assign) long long totalBytesRead; +@property (readwrite, nonatomic, assign) AFBackgroundTaskIdentifier backgroundTaskIdentifier; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock uploadProgress; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock downloadProgress; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationAuthenticationChallengeBlock authenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationCacheResponseBlock cacheResponse; +@property (readwrite, nonatomic, copy) AFURLConnectionOperationRedirectResponseBlock redirectResponse; + +- (void)operationDidStart; +- (void)finish; +- (void)cancelConnection; +@end + +@implementation AFURLConnectionOperation +@synthesize outputStream = _outputStream; + ++ (void)networkRequestThreadEntryPoint:(id)__unused object { + @autoreleasepool { + [[NSThread currentThread] setName:@"AFNetworking"]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode]; + [runLoop run]; + } +} + ++ (NSThread *)networkRequestThread { + static NSThread *_networkRequestThread = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil]; + [_networkRequestThread start]; + }); + + return _networkRequestThread; +} + +- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { + NSParameterAssert(urlRequest); + + self = [super init]; + if (!self) { + return nil; + } + + _state = AFOperationReadyState; + + self.lock = [[NSRecursiveLock alloc] init]; + self.lock.name = kAFNetworkingLockName; + + self.runLoopModes = [NSSet setWithObject:NSRunLoopCommonModes]; + + self.request = urlRequest; + + self.shouldUseCredentialStorage = YES; + + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; + + return self; +} + +- (void)dealloc { + if (_outputStream) { + [_outputStream close]; + _outputStream = nil; + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) + if (_backgroundTaskIdentifier) { + [[UIApplication sharedApplication] endBackgroundTask:_backgroundTaskIdentifier]; + _backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } +#endif +} + +#pragma mark - + +- (void)setResponseData:(NSData *)responseData { + [self.lock lock]; + if (!responseData) { + _responseData = nil; + } else { + _responseData = [NSData dataWithBytes:responseData.bytes length:responseData.length]; + } + [self.lock unlock]; +} + +- (NSString *)responseString { + [self.lock lock]; + if (!_responseString && self.response && self.responseData) { + self.responseString = [[NSString alloc] initWithData:self.responseData encoding:self.responseStringEncoding]; + } + [self.lock unlock]; + + return _responseString; +} + +- (NSStringEncoding)responseStringEncoding { + [self.lock lock]; + if (!_responseStringEncoding && self.response) { + NSStringEncoding stringEncoding = NSUTF8StringEncoding; + if (self.response.textEncodingName) { + CFStringEncoding IANAEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName); + if (IANAEncoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(IANAEncoding); + } + } + + self.responseStringEncoding = stringEncoding; + } + [self.lock unlock]; + + return _responseStringEncoding; +} + +- (NSInputStream *)inputStream { + return self.request.HTTPBodyStream; +} + +- (void)setInputStream:(NSInputStream *)inputStream { + NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; + mutableRequest.HTTPBodyStream = inputStream; + self.request = mutableRequest; +} + +- (NSOutputStream *)outputStream { + if (!_outputStream) { + self.outputStream = [NSOutputStream outputStreamToMemory]; + } + + return _outputStream; +} + +- (void)setOutputStream:(NSOutputStream *)outputStream { + [self.lock lock]; + if (outputStream != _outputStream) { + if (_outputStream) { + [_outputStream close]; + } + + _outputStream = outputStream; + } + [self.lock unlock]; +} + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) +- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler { + [self.lock lock]; + if (!self.backgroundTaskIdentifier) { + UIApplication *application = [UIApplication sharedApplication]; + __weak __typeof(self)weakSelf = self; + self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ + __strong __typeof(weakSelf)strongSelf = weakSelf; + + if (handler) { + handler(); + } + + if (strongSelf) { + [strongSelf cancel]; + + [application endBackgroundTask:strongSelf.backgroundTaskIdentifier]; + strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid; + } + }]; + } + [self.lock unlock]; +} +#endif + +#pragma mark - + +- (void)setState:(AFOperationState)state { + if (!AFStateTransitionIsValid(self.state, state, [self isCancelled])) { + return; + } + + [self.lock lock]; + NSString *oldStateKey = AFKeyPathFromOperationState(self.state); + NSString *newStateKey = AFKeyPathFromOperationState(state); + + [self willChangeValueForKey:newStateKey]; + [self willChangeValueForKey:oldStateKey]; + _state = state; + [self didChangeValueForKey:oldStateKey]; + [self didChangeValueForKey:newStateKey]; + [self.lock unlock]; +} + +- (void)pause { + if ([self isPaused] || [self isFinished] || [self isCancelled]) { + return; + } + + [self.lock lock]; + if ([self isExecuting]) { + [self performSelector:@selector(operationDidPause) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + + dispatch_async(dispatch_get_main_queue(), ^{ + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + [notificationCenter postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; + }); + } + + self.state = AFOperationPausedState; + [self.lock unlock]; +} + +- (void)operationDidPause { + [self.lock lock]; + [self.connection cancel]; + [self.lock unlock]; +} + +- (BOOL)isPaused { + return self.state == AFOperationPausedState; +} + +- (void)resume { + if (![self isPaused]) { + return; + } + + [self.lock lock]; + self.state = AFOperationReadyState; + + [self start]; + [self.lock unlock]; +} + +#pragma mark - + +- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block { + self.uploadProgress = block; +} + +- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block { + self.downloadProgress = block; +} + +- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block { + self.authenticationChallenge = block; +} + +- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block { + self.cacheResponse = block; +} + +- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block { + self.redirectResponse = block; +} + +#pragma mark - NSOperation + +- (void)setCompletionBlock:(void (^)(void))block { + [self.lock lock]; + if (!block) { + [super setCompletionBlock:nil]; + } else { + __weak __typeof(self)weakSelf = self; + [super setCompletionBlock:^ { + __strong __typeof(weakSelf)strongSelf = weakSelf; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_group_t group = strongSelf.completionGroup ?: url_request_operation_completion_group(); + dispatch_queue_t queue = strongSelf.completionQueue ?: dispatch_get_main_queue(); +#pragma clang diagnostic pop + + dispatch_group_async(group, queue, ^{ + block(); + }); + + dispatch_group_notify(group, url_request_operation_completion_queue(), ^{ + [strongSelf setCompletionBlock:nil]; + }); + }]; + } + [self.lock unlock]; +} + +- (BOOL)isReady { + return self.state == AFOperationReadyState && [super isReady]; +} + +- (BOOL)isExecuting { + return self.state == AFOperationExecutingState; +} + +- (BOOL)isFinished { + return self.state == AFOperationFinishedState; +} + +- (BOOL)isConcurrent { + return YES; +} + +- (void)start { + [self.lock lock]; + if ([self isCancelled]) { + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } else if ([self isReady]) { + self.state = AFOperationExecutingState; + + [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } + [self.lock unlock]; +} + +- (void)operationDidStart { + [self.lock lock]; + if (![self isCancelled]) { + self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO]; + + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + for (NSString *runLoopMode in self.runLoopModes) { + [self.connection scheduleInRunLoop:runLoop forMode:runLoopMode]; + [self.outputStream scheduleInRunLoop:runLoop forMode:runLoopMode]; + } + + [self.outputStream open]; + [self.connection start]; + } + [self.lock unlock]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidStartNotification object:self]; + }); +} + +- (void)finish { + [self.lock lock]; + self.state = AFOperationFinishedState; + [self.lock unlock]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; + }); +} + +- (void)cancel { + [self.lock lock]; + if (![self isFinished] && ![self isCancelled]) { + [super cancel]; + + if ([self isExecuting]) { + [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; + } + } + [self.lock unlock]; +} + +- (void)cancelConnection { + NSDictionary *userInfo = nil; + if ([self.request URL]) { + userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; + } + NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; + + if (![self isFinished]) { + if (self.connection) { + [self.connection cancel]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:error]; + } else { + // Accomodate race condition where `self.connection` has not yet been set before cancellation + self.error = error; + [self finish]; + } + } +} + +#pragma mark - + ++ (NSArray *)batchOfRequestOperations:(NSArray *)operations + progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock + completionBlock:(void (^)(NSArray *operations))completionBlock +{ + if (!operations || [operations count] == 0) { + return @[[NSBlockOperation blockOperationWithBlock:^{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (completionBlock) { + completionBlock(@[]); + } + }); + }]]; + } + + __block dispatch_group_t group = dispatch_group_create(); + NSBlockOperation *batchedOperation = [NSBlockOperation blockOperationWithBlock:^{ + dispatch_group_notify(group, dispatch_get_main_queue(), ^{ + if (completionBlock) { + completionBlock(operations); + } + }); + }]; + + for (AFURLConnectionOperation *operation in operations) { + operation.completionGroup = group; + void (^originalCompletionBlock)(void) = [operation.completionBlock copy]; + __weak __typeof(operation)weakOperation = operation; + operation.completionBlock = ^{ + __strong __typeof(weakOperation)strongOperation = weakOperation; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + dispatch_queue_t queue = strongOperation.completionQueue ?: dispatch_get_main_queue(); +#pragma clang diagnostic pop + dispatch_group_async(group, queue, ^{ + if (originalCompletionBlock) { + originalCompletionBlock(); + } + + NSUInteger numberOfFinishedOperations = [[operations indexesOfObjectsPassingTest:^BOOL(id op, NSUInteger __unused idx, BOOL __unused *stop) { + return [op isFinished]; + }] count]; + + if (progressBlock) { + progressBlock(numberOfFinishedOperations, [operations count]); + } + + dispatch_group_leave(group); + }); + }; + + dispatch_group_enter(group); + [batchedOperation addDependency:operation]; + } + + return [operations arrayByAddingObject:batchedOperation]; +} + +#pragma mark - NSObject + +- (NSString *)description { + [self.lock lock]; + NSString *description = [NSString stringWithFormat:@"<%@: %p, state: %@, cancelled: %@ request: %@, response: %@>", NSStringFromClass([self class]), self, AFKeyPathFromOperationState(self.state), ([self isCancelled] ? @"YES" : @"NO"), self.request, self.response]; + [self.lock unlock]; + return description; +} + +#pragma mark - NSURLConnectionDelegate + +- (void)connection:(NSURLConnection *)connection +willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + if (self.authenticationChallenge) { + self.authenticationChallenge(connection, challenge); + return; + } + + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; + } else { + [[challenge sender] cancelAuthenticationChallenge:challenge]; + } + } else { + if ([challenge previousFailureCount] == 0) { + if (self.credential) { + [[challenge sender] useCredential:self.credential forAuthenticationChallenge:challenge]; + } else { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; + } + } else { + [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; + } + } +} + +- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection __unused *)connection { + return self.shouldUseCredentialStorage; +} + +- (NSURLRequest *)connection:(NSURLConnection *)connection + willSendRequest:(NSURLRequest *)request + redirectResponse:(NSURLResponse *)redirectResponse +{ + if (self.redirectResponse) { + return self.redirectResponse(connection, request, redirectResponse); + } else { + return request; + } +} + +- (void)connection:(NSURLConnection __unused *)connection + didSendBodyData:(NSInteger)bytesWritten + totalBytesWritten:(NSInteger)totalBytesWritten +totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite +{ + dispatch_async(dispatch_get_main_queue(), ^{ + if (self.uploadProgress) { + self.uploadProgress((NSUInteger)bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } + }); +} + +- (void)connection:(NSURLConnection __unused *)connection +didReceiveResponse:(NSURLResponse *)response +{ + self.response = response; +} + +- (void)connection:(NSURLConnection __unused *)connection + didReceiveData:(NSData *)data +{ + NSUInteger length = [data length]; + while (YES) { + NSInteger totalNumberOfBytesWritten = 0; + if ([self.outputStream hasSpaceAvailable]) { + const uint8_t *dataBuffer = (uint8_t *)[data bytes]; + + NSInteger numberOfBytesWritten = 0; + while (totalNumberOfBytesWritten < (NSInteger)length) { + numberOfBytesWritten = [self.outputStream write:&dataBuffer[(NSUInteger)totalNumberOfBytesWritten] maxLength:(length - (NSUInteger)totalNumberOfBytesWritten)]; + if (numberOfBytesWritten == -1) { + break; + } + + totalNumberOfBytesWritten += numberOfBytesWritten; + } + + break; + } + + if (self.outputStream.streamError) { + [self.connection cancel]; + [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:self.outputStream.streamError]; + return; + } + } + + dispatch_async(dispatch_get_main_queue(), ^{ + self.totalBytesRead += (long long)length; + + if (self.downloadProgress) { + self.downloadProgress(length, self.totalBytesRead, self.response.expectedContentLength); + } + }); +} + +- (void)connectionDidFinishLoading:(NSURLConnection __unused *)connection { + self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; + + [self.outputStream close]; + if (self.responseData) { + self.outputStream = nil; + } + + self.connection = nil; + + [self finish]; +} + +- (void)connection:(NSURLConnection __unused *)connection + didFailWithError:(NSError *)error +{ + self.error = error; + + [self.outputStream close]; + if (self.responseData) { + self.outputStream = nil; + } + + self.connection = nil; + + [self finish]; +} + +- (NSCachedURLResponse *)connection:(NSURLConnection *)connection + willCacheResponse:(NSCachedURLResponse *)cachedResponse +{ + if (self.cacheResponse) { + return self.cacheResponse(connection, cachedResponse); + } else { + if ([self isCancelled]) { + return nil; + } + + return cachedResponse; + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURLRequest *request = [decoder decodeObjectOfClass:[NSURLRequest class] forKey:NSStringFromSelector(@selector(request))]; + + self = [self initWithRequest:request]; + if (!self) { + return nil; + } + + self.state = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(state))] integerValue]; + self.response = [decoder decodeObjectOfClass:[NSHTTPURLResponse class] forKey:NSStringFromSelector(@selector(response))]; + self.error = [decoder decodeObjectOfClass:[NSError class] forKey:NSStringFromSelector(@selector(error))]; + self.responseData = [decoder decodeObjectOfClass:[NSData class] forKey:NSStringFromSelector(@selector(responseData))]; + self.totalBytesRead = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(totalBytesRead))] longLongValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [self pause]; + + [coder encodeObject:self.request forKey:NSStringFromSelector(@selector(request))]; + + switch (self.state) { + case AFOperationExecutingState: + case AFOperationPausedState: + [coder encodeInteger:AFOperationReadyState forKey:NSStringFromSelector(@selector(state))]; + break; + default: + [coder encodeInteger:self.state forKey:NSStringFromSelector(@selector(state))]; + break; + } + + [coder encodeObject:self.response forKey:NSStringFromSelector(@selector(response))]; + [coder encodeObject:self.error forKey:NSStringFromSelector(@selector(error))]; + [coder encodeObject:self.responseData forKey:NSStringFromSelector(@selector(responseData))]; + [coder encodeInt64:self.totalBytesRead forKey:NSStringFromSelector(@selector(totalBytesRead))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFURLConnectionOperation *operation = [(AFURLConnectionOperation *)[[self class] allocWithZone:zone] initWithRequest:self.request]; + + operation.uploadProgress = self.uploadProgress; + operation.downloadProgress = self.downloadProgress; + operation.authenticationChallenge = self.authenticationChallenge; + operation.cacheResponse = self.cacheResponse; + operation.redirectResponse = self.redirectResponse; + operation.completionQueue = self.completionQueue; + operation.completionGroup = self.completionGroup; + + return operation; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h new file mode 100644 index 00000000000..bb8d444562b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h @@ -0,0 +1,467 @@ +// AFURLRequestSerialization.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#endif + +/** + The `AFURLRequestSerialization` protocol is adopted by an object that encodes parameters for a specified HTTP requests. Request serializers may encode parameters as query strings, HTTP bodies, setting the appropriate HTTP header fields as necessary. + + For example, a JSON request serializer may set the HTTP body of the request to a JSON representation, and set the `Content-Type` HTTP header field value to `application/json`. + */ +@protocol AFURLRequestSerialization + +/** + Returns a request with the specified parameters encoded into a copy of the original request. + + @param request The original request. + @param parameters The parameters to be encoded. + @param error The error that occurred while attempting to encode the request parameters. + + @return A serialized request. + */ +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError * __autoreleasing *)error; + +@end + +#pragma mark - + +/** + + */ +typedef NS_ENUM(NSUInteger, AFHTTPRequestQueryStringSerializationStyle) { + AFHTTPRequestQueryStringDefaultStyle = 0, +}; + +@protocol AFMultipartFormData; + +/** + `AFHTTPRequestSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. + + Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPRequestSerializer` in order to ensure consistent default behavior. + */ +@interface AFHTTPRequestSerializer : NSObject + +/** + The string encoding used to serialize parameters. `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + Whether created requests can use the device’s cellular radio (if present). `YES` by default. + + @see NSMutableURLRequest -setAllowsCellularAccess: + */ +@property (nonatomic, assign) BOOL allowsCellularAccess; + +/** + The cache policy of created requests. `NSURLRequestUseProtocolCachePolicy` by default. + + @see NSMutableURLRequest -setCachePolicy: + */ +@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy; + +/** + Whether created requests should use the default cookie handling. `YES` by default. + + @see NSMutableURLRequest -setHTTPShouldHandleCookies: + */ +@property (nonatomic, assign) BOOL HTTPShouldHandleCookies; + +/** + Whether created requests can continue transmitting data before receiving a response from an earlier transmission. `NO` by default + + @see NSMutableURLRequest -setHTTPShouldUsePipelining: + */ +@property (nonatomic, assign) BOOL HTTPShouldUsePipelining; + +/** + The network service type for created requests. `NSURLNetworkServiceTypeDefault` by default. + + @see NSMutableURLRequest -setNetworkServiceType: + */ +@property (nonatomic, assign) NSURLRequestNetworkServiceType networkServiceType; + +/** + The timeout interval, in seconds, for created requests. The default timeout interval is 60 seconds. + + @see NSMutableURLRequest -setTimeoutInterval: + */ +@property (nonatomic, assign) NSTimeInterval timeoutInterval; + +///--------------------------------------- +/// @name Configuring HTTP Request Headers +///--------------------------------------- + +/** + Default HTTP header field values to be applied to serialized requests. By default, these include the following: + + - `Accept-Language` with the contents of `NSLocale +preferredLanguages` + - `User-Agent` with the contents of various bundle identifiers and OS designations + + @discussion To add or remove default request headers, use `setValue:forHTTPHeaderField:`. + */ +@property (readonly, nonatomic, strong) NSDictionary *HTTPRequestHeaders; + +/** + Creates and returns a serializer with default configuration. + */ ++ (instancetype)serializer; + +/** + Sets the value for the HTTP headers set in request objects made by the HTTP client. If `nil`, removes the existing value for that header. + + @param field The HTTP header to set a default value for + @param value The value set as default for the specified header, or `nil` + */ +- (void)setValue:(NSString *)value +forHTTPHeaderField:(NSString *)field; + +/** + Returns the value for the HTTP headers set in the request serializer. + + @param field The HTTP header to retrieve the default value for + + @return The value set as default for the specified header, or `nil` + */ +- (NSString *)valueForHTTPHeaderField:(NSString *)field; + +/** + Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a basic authentication value with Base64-encoded username and password. This overwrites any existing value for this header. + + @param username The HTTP basic auth username + @param password The HTTP basic auth password + */ +- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username + password:(NSString *)password; + +/** + @deprecated This method has been deprecated. Use -setValue:forHTTPHeaderField: instead. + */ +- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token DEPRECATED_ATTRIBUTE; + + +/** + Clears any existing value for the "Authorization" HTTP header. + */ +- (void)clearAuthorizationHeader; + +///------------------------------------------------------- +/// @name Configuring Query String Parameter Serialization +///------------------------------------------------------- + +/** + HTTP methods for which serialized requests will encode parameters as a query string. `GET`, `HEAD`, and `DELETE` by default. + */ +@property (nonatomic, strong) NSSet *HTTPMethodsEncodingParametersInURI; + +/** + Set the method of query string serialization according to one of the pre-defined styles. + + @param style The serialization style. + + @see AFHTTPRequestQueryStringSerializationStyle + */ +- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style; + +/** + Set the a custom method of query string serialization according to the specified block. + + @param block A block that defines a process of encoding parameters into a query string. This block returns the query string and takes three arguments: the request, the parameters to encode, and the error that occurred when attempting to encode parameters for the given request. + */ +- (void)setQueryStringSerializationWithBlock:(NSString * (^)(NSURLRequest *request, id parameters, NSError * __autoreleasing *error))block; + +///------------------------------- +/// @name Creating Request Objects +///------------------------------- + +/** + @deprecated This method has been deprecated. Use -requestWithMethod:URLString:parameters:error: instead. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters DEPRECATED_ATTRIBUTE; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and URL string. + + If the HTTP method is `GET`, `HEAD`, or `DELETE`, the parameters will be used to construct a url-encoded query string that is appended to the request's URL. Otherwise, the parameters will be encoded according to the value of the `parameterEncoding` property, and set as the request body. + + @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. This parameter must not be `nil`. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. + @param error The error that occured while constructing the request. + + @return An `NSMutableURLRequest` object. + */ +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + error:(NSError * __autoreleasing *)error; + +/** + @deprecated This method has been deprecated. Use -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error: instead. + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block DEPRECATED_ATTRIBUTE; + +/** + Creates an `NSMutableURLRequest` object with the specified HTTP method and URLString, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 + + Multipart form requests are automatically streamed, reading files directly from disk along with in-memory data in a single HTTP body. The resulting `NSMutableURLRequest` object has an `HTTPBodyStream` property, so refrain from setting `HTTPBodyStream` or `HTTPBody` on this request object, as it will clear out the multipart form body stream. + + @param method The HTTP method for the request. This parameter must not be `GET` or `HEAD`, or `nil`. + @param URLString The URL string used to create the request URL. + @param parameters The parameters to be encoded and set in the request HTTP body. + @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. + @param error The error that occured while constructing the request. + + @return An `NSMutableURLRequest` object + */ +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block + error:(NSError * __autoreleasing *)error; + +/** + Creates an `NSMutableURLRequest` by removing the `HTTPBodyStream` from a request, and asynchronously writing its contents into the specified file, invoking the completion handler when finished. + + @param request The multipart form request. The `HTTPBodyStream` property of `request` must not be `nil`. + @param fileURL The file URL to write multipart form contents to. + @param handler A handler block to execute. + + @discussion There is a bug in `NSURLSessionTask` that causes requests to not send a `Content-Length` header when streaming contents from an HTTP body, which is notably problematic when interacting with the Amazon S3 webservice. As a workaround, this method takes a request constructed with `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:`, or any other request with an `HTTPBodyStream`, writes the contents to the specified file and returns a copy of the original request with the `HTTPBodyStream` property set to `nil`. From here, the file can either be passed to `AFURLSessionManager -uploadTaskWithRequest:fromFile:progress:completionHandler:`, or have its contents read into an `NSData` that's assigned to the `HTTPBody` property of the request. + + @see https://github.com/AFNetworking/AFNetworking/issues/1398 + */ +- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request + writingStreamContentsToFile:(NSURL *)fileURL + completionHandler:(void (^)(NSError *error))handler; + +@end + +#pragma mark - + +/** + The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:`. + */ +@protocol AFMultipartFormData + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{generated filename}; name=#{name}"` and `Content-Type: #{generated mimeType}`, followed by the encoded file data and the multipart form boundary. + + The filename and MIME type for this data in the form will be automatically generated, using the last path component of the `fileURL` and system associated MIME type for the `fileURL` extension, respectively. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended, otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The file name to be used in the `Content-Disposition` header. This parameter must not be `nil`. + @param mimeType The declared MIME type of the file data. This parameter must not be `nil`. + @param error If an error occurs, upon return contains an `NSError` object that describes the problem. + + @return `YES` if the file data was successfully appended otherwise `NO`. + */ +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __autoreleasing *)error; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the data from the input stream and the multipart form boundary. + + @param inputStream The input stream to be appended to the form data + @param name The name to be associated with the specified input stream. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified input stream. This parameter must not be `nil`. + @param length The length of the specified input stream in bytes. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithInputStream:(NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(int64_t)length + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + @param fileName The filename to be associated with the specified data. This parameter must not be `nil`. + @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. + */ +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType; + +/** + Appends the HTTP headers `Content-Disposition: form-data; name=#{name}"`, followed by the encoded data and the multipart form boundary. + + @param data The data to be encoded and appended to the form data. + @param name The name to be associated with the specified data. This parameter must not be `nil`. + */ + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name; + + +/** + Appends HTTP headers, followed by the encoded data and the multipart form boundary. + + @param headers The HTTP headers to be appended to the form data. + @param body The data to be encoded and appended to the form data. This parameter must not be `nil`. + */ +- (void)appendPartWithHeaders:(NSDictionary *)headers + body:(NSData *)body; + +/** + Throttles request bandwidth by limiting the packet size and adding a delay for each chunk read from the upload stream. + + When uploading over a 3G or EDGE connection, requests may fail with "request body stream exhausted". Setting a maximum packet size and delay according to the recommended values (`kAFUploadStream3GSuggestedPacketSize` and `kAFUploadStream3GSuggestedDelay`) lowers the risk of the input stream exceeding its allocated bandwidth. Unfortunately, there is no definite way to distinguish between a 3G, EDGE, or LTE connection over `NSURLConnection`. As such, it is not recommended that you throttle bandwidth based solely on network reachability. Instead, you should consider checking for the "request body stream exhausted" in a failure block, and then retrying the request with throttled bandwidth. + + @param numberOfBytes Maximum packet size, in number of bytes. The default packet size for an input stream is 16kb. + @param delay Duration of delay each time a packet is read. By default, no delay is set. + */ +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay; + +@end + +#pragma mark - + +/** + `AFJSONRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSJSONSerialization`, setting the `Content-Type` of the encoded request to `application/json`. + */ +@interface AFJSONRequestSerializer : AFHTTPRequestSerializer + +/** + Options for writing the request JSON data from Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONWritingOptions". `0` by default. + */ +@property (nonatomic, assign) NSJSONWritingOptions writingOptions; + +/** + Creates and returns a JSON serializer with specified reading and writing options. + + @param writingOptions The specified JSON writing options. + */ ++ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions; + +@end + +#pragma mark - + +/** + `AFPropertyListRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSPropertyListSerializer`, setting the `Content-Type` of the encoded request to `application/x-plist`. + */ +@interface AFPropertyListRequestSerializer : AFHTTPRequestSerializer + +/** + The property list format. Possible values are described in "NSPropertyListFormat". + */ +@property (nonatomic, assign) NSPropertyListFormat format; + +/** + @warning The `writeOptions` property is currently unused. + */ +@property (nonatomic, assign) NSPropertyListWriteOptions writeOptions; + +/** + Creates and returns a property list serializer with a specified format, read options, and write options. + + @param format The property list format. + @param writeOptions The property list write options. + + @warning The `writeOptions` property is currently unused. + */ ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + writeOptions:(NSPropertyListWriteOptions)writeOptions; + +@end + +#pragma mark - + +///---------------- +/// @name Constants +///---------------- + +/** + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFURLRequestSerializationErrorDomain` + + ### Constants + + `AFURLRequestSerializationErrorDomain` + AFURLRequestSerializer errors. Error codes for `AFURLRequestSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFURLRequestSerializationErrorDomain; + +/** + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLRequestErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLRequestErrorKey` + The corresponding value is an `NSURLRequest` containing the request of the operation associated with an error. This key is only present in the `AFURLRequestSerializationErrorDomain`. + */ +extern NSString * const AFNetworkingOperationFailingURLRequestErrorKey; + +/** + ## Throttling Bandwidth for HTTP Request Input Streams + + @see -throttleBandwidthWithPacketSize:delay: + + ### Constants + + `kAFUploadStream3GSuggestedPacketSize` + Maximum packet size, in number of bytes. Equal to 16kb. + + `kAFUploadStream3GSuggestedDelay` + Duration of delay each time a packet is read. Equal to 0.2 seconds. + */ +extern NSUInteger const kAFUploadStream3GSuggestedPacketSize; +extern NSTimeInterval const kAFUploadStream3GSuggestedDelay; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m new file mode 100644 index 00000000000..5b55b5fc5fc --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m @@ -0,0 +1,1384 @@ +// AFURLRequestSerialization.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFURLRequestSerialization.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED +#import +#else +#import +#endif + +NSString * const AFURLRequestSerializationErrorDomain = @"com.alamofire.error.serialization.request"; +NSString * const AFNetworkingOperationFailingURLRequestErrorKey = @"com.alamofire.serialization.request.error.response"; + +typedef NSString * (^AFQueryStringSerializationBlock)(NSURLRequest *request, id parameters, NSError *__autoreleasing *error); + +static NSString * AFBase64EncodedStringFromString(NSString *string) { + NSData *data = [NSData dataWithBytes:[string UTF8String] length:[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]]; + NSUInteger length = [data length]; + NSMutableData *mutableData = [NSMutableData dataWithLength:((length + 2) / 3) * 4]; + + uint8_t *input = (uint8_t *)[data bytes]; + uint8_t *output = (uint8_t *)[mutableData mutableBytes]; + + for (NSUInteger i = 0; i < length; i += 3) { + NSUInteger value = 0; + for (NSUInteger j = i; j < (i + 3); j++) { + value <<= 8; + if (j < length) { + value |= (0xFF & input[j]); + } + } + + static uint8_t const kAFBase64EncodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + + NSUInteger idx = (i / 3) * 4; + output[idx + 0] = kAFBase64EncodingTable[(value >> 18) & 0x3F]; + output[idx + 1] = kAFBase64EncodingTable[(value >> 12) & 0x3F]; + output[idx + 2] = (i + 1) < length ? kAFBase64EncodingTable[(value >> 6) & 0x3F] : '='; + output[idx + 3] = (i + 2) < length ? kAFBase64EncodingTable[(value >> 0) & 0x3F] : '='; + } + + return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding]; +} + +static NSString * const kAFCharactersToBeEscapedInQueryString = @":/?&=;+!@#$()',*"; + +static NSString * AFPercentEscapedQueryStringKeyFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + static NSString * const kAFCharactersToLeaveUnescapedInQueryStringPairKey = @"[]."; + + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescapedInQueryStringPairKey, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +static NSString * AFPercentEscapedQueryStringValueFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { + return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); +} + +#pragma mark - + +@interface AFQueryStringPair : NSObject +@property (readwrite, nonatomic, strong) id field; +@property (readwrite, nonatomic, strong) id value; + +- (id)initWithField:(id)field value:(id)value; + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding; +@end + +@implementation AFQueryStringPair + +- (id)initWithField:(id)field value:(id)value { + self = [super init]; + if (!self) { + return nil; + } + + self.field = field; + self.value = value; + + return self; +} + +- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { + if (!self.value || [self.value isEqual:[NSNull null]]) { + return AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding); + } else { + return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringValueFromStringWithEncoding([self.value description], stringEncoding)]; + } +} + +@end + +#pragma mark - + +extern NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary); +extern NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value); + +static NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) { + NSMutableArray *mutablePairs = [NSMutableArray array]; + for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { + [mutablePairs addObject:[pair URLEncodedStringValueWithEncoding:stringEncoding]]; + } + + return [mutablePairs componentsJoinedByString:@"&"]; +} + +NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary) { + return AFQueryStringPairsFromKeyAndValue(nil, dictionary); +} + +NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value) { + NSMutableArray *mutableQueryStringComponents = [NSMutableArray array]; + + NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)]; + + if ([value isKindOfClass:[NSDictionary class]]) { + NSDictionary *dictionary = value; + // Sort dictionary keys to ensure consistent ordering in query string, which is important when deserializing potentially ambiguous sequences, such as an array of dictionaries + for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + id nestedValue = [dictionary objectForKey:nestedKey]; + if (nestedValue) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)]; + } + } + } else if ([value isKindOfClass:[NSArray class]]) { + NSArray *array = value; + for (id nestedValue in array) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; + } + } else if ([value isKindOfClass:[NSSet class]]) { + NSSet *set = value; + for (id obj in [set sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { + [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue(key, obj)]; + } + } else { + [mutableQueryStringComponents addObject:[[AFQueryStringPair alloc] initWithField:key value:value]]; + } + + return mutableQueryStringComponents; +} + +#pragma mark - + +@interface AFStreamingMultipartFormData : NSObject +- (instancetype)initWithURLRequest:(NSMutableURLRequest *)urlRequest + stringEncoding:(NSStringEncoding)encoding; + +- (NSMutableURLRequest *)requestByFinalizingMultipartFormData; +@end + +#pragma mark - + +static NSArray * AFHTTPRequestSerializerObservedKeyPaths() { + static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _AFHTTPRequestSerializerObservedKeyPaths = @[NSStringFromSelector(@selector(allowsCellularAccess)), NSStringFromSelector(@selector(cachePolicy)), NSStringFromSelector(@selector(HTTPShouldHandleCookies)), NSStringFromSelector(@selector(HTTPShouldUsePipelining)), NSStringFromSelector(@selector(networkServiceType)), NSStringFromSelector(@selector(timeoutInterval))]; + }); + + return _AFHTTPRequestSerializerObservedKeyPaths; +} + +static void *AFHTTPRequestSerializerObserverContext = &AFHTTPRequestSerializerObserverContext; + +@interface AFHTTPRequestSerializer () +@property (readwrite, nonatomic, strong) NSMutableSet *mutableObservedChangedKeyPaths; +@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableHTTPRequestHeaders; +@property (readwrite, nonatomic, assign) AFHTTPRequestQueryStringSerializationStyle queryStringSerializationStyle; +@property (readwrite, nonatomic, copy) AFQueryStringSerializationBlock queryStringSerialization; +@end + +@implementation AFHTTPRequestSerializer + ++ (instancetype)serializer { + return [[self alloc] init]; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = NSUTF8StringEncoding; + + self.mutableHTTPRequestHeaders = [NSMutableDictionary dictionary]; + + // Accept-Language HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 + NSMutableArray *acceptLanguagesComponents = [NSMutableArray array]; + [[NSLocale preferredLanguages] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + float q = 1.0f - (idx * 0.1f); + [acceptLanguagesComponents addObject:[NSString stringWithFormat:@"%@;q=%0.1g", obj, q]]; + *stop = q <= 0.5f; + }]; + [self setValue:[acceptLanguagesComponents componentsJoinedByString:@", "] forHTTPHeaderField:@"Accept-Language"]; + + NSString *userAgent = nil; +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 + userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) + userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; +#endif +#pragma clang diagnostic pop + if (userAgent) { + if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) { + NSMutableString *mutableUserAgent = [userAgent mutableCopy]; + if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false)) { + userAgent = mutableUserAgent; + } + } + [self setValue:userAgent forHTTPHeaderField:@"User-Agent"]; + } + + // HTTP Method Definitions; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html + self.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", @"DELETE", nil]; + + self.mutableObservedChangedKeyPaths = [NSMutableSet set]; + for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { + if ([self respondsToSelector:NSSelectorFromString(keyPath)]) { + [self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:AFHTTPRequestSerializerObserverContext]; + } + } + + return self; +} + +- (void)dealloc { + for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { + if ([self respondsToSelector:NSSelectorFromString(keyPath)]) { + [self removeObserver:self forKeyPath:keyPath context:AFHTTPRequestSerializerObserverContext]; + } + } +} + +#pragma mark - + +// Workarounds for crashing behavior using Key-Value Observing with XCTest +// See https://github.com/AFNetworking/AFNetworking/issues/2523 + +- (void)setAllowsCellularAccess:(BOOL)allowsCellularAccess { + [self willChangeValueForKey:NSStringFromSelector(@selector(allowsCellularAccess))]; + _allowsCellularAccess = allowsCellularAccess; + [self didChangeValueForKey:NSStringFromSelector(@selector(allowsCellularAccess))]; +} + +- (void)setCachePolicy:(NSURLRequestCachePolicy)cachePolicy { + [self willChangeValueForKey:NSStringFromSelector(@selector(cachePolicy))]; + _cachePolicy = cachePolicy; + [self didChangeValueForKey:NSStringFromSelector(@selector(cachePolicy))]; +} + +- (void)setHTTPShouldHandleCookies:(BOOL)HTTPShouldHandleCookies { + [self willChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldHandleCookies))]; + _HTTPShouldHandleCookies = HTTPShouldHandleCookies; + [self didChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldHandleCookies))]; +} + +- (void)setHTTPShouldUsePipelining:(BOOL)HTTPShouldUsePipelining { + [self willChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldUsePipelining))]; + _HTTPShouldUsePipelining = HTTPShouldUsePipelining; + [self didChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldUsePipelining))]; +} + +- (void)setNetworkServiceType:(NSURLRequestNetworkServiceType)networkServiceType { + [self willChangeValueForKey:NSStringFromSelector(@selector(networkServiceType))]; + _networkServiceType = networkServiceType; + [self didChangeValueForKey:NSStringFromSelector(@selector(networkServiceType))]; +} + +- (void)setTimeoutInterval:(NSTimeInterval)timeoutInterval { + [self willChangeValueForKey:NSStringFromSelector(@selector(timeoutInterval))]; + _timeoutInterval = timeoutInterval; + [self didChangeValueForKey:NSStringFromSelector(@selector(timeoutInterval))]; +} + +#pragma mark - + +- (NSDictionary *)HTTPRequestHeaders { + return [NSDictionary dictionaryWithDictionary:self.mutableHTTPRequestHeaders]; +} + +- (void)setValue:(NSString *)value +forHTTPHeaderField:(NSString *)field +{ + [self.mutableHTTPRequestHeaders setValue:value forKey:field]; +} + +- (NSString *)valueForHTTPHeaderField:(NSString *)field { + return [self.mutableHTTPRequestHeaders valueForKey:field]; +} + +- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username + password:(NSString *)password +{ + NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", username, password]; + [self setValue:[NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)] forHTTPHeaderField:@"Authorization"]; +} + +- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token { + [self setValue:[NSString stringWithFormat:@"Token token=\"%@\"", token] forHTTPHeaderField:@"Authorization"]; +} + +- (void)clearAuthorizationHeader { + [self.mutableHTTPRequestHeaders removeObjectForKey:@"Authorization"]; +} + +#pragma mark - + +- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style { + self.queryStringSerializationStyle = style; + self.queryStringSerialization = nil; +} + +- (void)setQueryStringSerializationWithBlock:(NSString *(^)(NSURLRequest *, id, NSError *__autoreleasing *))block { + self.queryStringSerialization = block; +} + +#pragma mark - + +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters +{ + return [self requestWithMethod:method URLString:URLString parameters:parameters error:nil]; +} + +- (NSMutableURLRequest *)requestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(method); + NSParameterAssert(URLString); + + NSURL *url = [NSURL URLWithString:URLString]; + + NSParameterAssert(url); + + NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url]; + mutableRequest.HTTPMethod = method; + + for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { + if ([self.mutableObservedChangedKeyPaths containsObject:keyPath]) { + [mutableRequest setValue:[self valueForKeyPath:keyPath] forKey:keyPath]; + } + } + + mutableRequest = [[self requestBySerializingRequest:mutableRequest withParameters:parameters error:error] mutableCopy]; + + return mutableRequest; +} + +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block +{ + return [self multipartFormRequestWithMethod:method URLString:URLString parameters:parameters constructingBodyWithBlock:block error:nil]; +} + +- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method + URLString:(NSString *)URLString + parameters:(NSDictionary *)parameters + constructingBodyWithBlock:(void (^)(id formData))block + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(method); + NSParameterAssert(![method isEqualToString:@"GET"] && ![method isEqualToString:@"HEAD"]); + + NSMutableURLRequest *mutableRequest = [self requestWithMethod:method URLString:URLString parameters:nil error:error]; + + __block AFStreamingMultipartFormData *formData = [[AFStreamingMultipartFormData alloc] initWithURLRequest:mutableRequest stringEncoding:NSUTF8StringEncoding]; + + if (parameters) { + for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { + NSData *data = nil; + if ([pair.value isKindOfClass:[NSData class]]) { + data = pair.value; + } else if ([pair.value isEqual:[NSNull null]]) { + data = [NSData data]; + } else { + data = [[pair.value description] dataUsingEncoding:self.stringEncoding]; + } + + if (data) { + [formData appendPartWithFormData:data name:[pair.field description]]; + } + } + } + + if (block) { + block(formData); + } + + return [formData requestByFinalizingMultipartFormData]; +} + +- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request + writingStreamContentsToFile:(NSURL *)fileURL + completionHandler:(void (^)(NSError *error))handler +{ + NSParameterAssert(request.HTTPBodyStream); + NSParameterAssert([fileURL isFileURL]); + + NSInputStream *inputStream = request.HTTPBodyStream; + NSOutputStream *outputStream = [[NSOutputStream alloc] initWithURL:fileURL append:NO]; + __block NSError *error = nil; + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; + + [inputStream open]; + [outputStream open]; + + while ([inputStream hasBytesAvailable] && [outputStream hasSpaceAvailable]) { + uint8_t buffer[1024]; + + NSInteger bytesRead = [inputStream read:buffer maxLength:1024]; + if (inputStream.streamError || bytesRead < 0) { + error = inputStream.streamError; + break; + } + + NSInteger bytesWritten = [outputStream write:buffer maxLength:(NSUInteger)bytesRead]; + if (outputStream.streamError || bytesWritten < 0) { + error = outputStream.streamError; + break; + } + + if (bytesRead == 0 && bytesWritten == 0) { + break; + } + } + + [outputStream close]; + [inputStream close]; + + if (handler) { + dispatch_async(dispatch_get_main_queue(), ^{ + handler(error); + }); + } + }); + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + mutableRequest.HTTPBodyStream = nil; + + return mutableRequest; +} + +#pragma mark - AFURLRequestSerialization + +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(request); + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { + if (![request valueForHTTPHeaderField:field]) { + [mutableRequest setValue:value forHTTPHeaderField:field]; + } + }]; + + if (parameters) { + NSString *query = nil; + if (self.queryStringSerialization) { + NSError *serializationError; + query = self.queryStringSerialization(request, parameters, &serializationError); + + if (serializationError) { + if (error) { + *error = serializationError; + } + + return nil; + } + } else { + switch (self.queryStringSerializationStyle) { + case AFHTTPRequestQueryStringDefaultStyle: + query = AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding); + break; + } + } + + if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { + mutableRequest.URL = [NSURL URLWithString:[[mutableRequest.URL absoluteString] stringByAppendingFormat:mutableRequest.URL.query ? @"&%@" : @"?%@", query]]; + } else { + if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { + [mutableRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; + } + [mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]]; + } + } + + return mutableRequest; +} + +#pragma mark - NSKeyValueObserving + ++ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key { + if ([AFHTTPRequestSerializerObservedKeyPaths() containsObject:key]) { + return NO; + } + + return [super automaticallyNotifiesObserversForKey:key]; +} + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(__unused id)object + change:(NSDictionary *)change + context:(void *)context +{ + if (context == AFHTTPRequestSerializerObserverContext) { + if ([change[NSKeyValueChangeNewKey] isEqual:[NSNull null]]) { + [self.mutableObservedChangedKeyPaths removeObject:keyPath]; + } else { + [self.mutableObservedChangedKeyPaths addObject:keyPath]; + } + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [self init]; + if (!self) { + return nil; + } + + self.mutableHTTPRequestHeaders = [[decoder decodeObjectOfClass:[NSDictionary class] forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))] mutableCopy]; + self.queryStringSerializationStyle = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.mutableHTTPRequestHeaders forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))]; + [coder encodeInteger:self.queryStringSerializationStyle forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPRequestSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.mutableHTTPRequestHeaders = [self.mutableHTTPRequestHeaders mutableCopyWithZone:zone]; + serializer.queryStringSerializationStyle = self.queryStringSerializationStyle; + serializer.queryStringSerialization = self.queryStringSerialization; + + return serializer; +} + +@end + +#pragma mark - + +static NSString * AFCreateMultipartFormBoundary() { + return [NSString stringWithFormat:@"Boundary+%08X%08X", arc4random(), arc4random()]; +} + +static NSString * const kAFMultipartFormCRLF = @"\r\n"; + +static inline NSString * AFMultipartFormInitialBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"--%@%@", boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFMultipartFormEncapsulationBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"%@--%@%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFMultipartFormFinalBoundary(NSString *boundary) { + return [NSString stringWithFormat:@"%@--%@--%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; +} + +static inline NSString * AFContentTypeForPathExtension(NSString *extension) { +#ifdef __UTTYPE__ + NSString *UTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, NULL); + NSString *contentType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)UTI, kUTTagClassMIMEType); + if (!contentType) { + return @"application/octet-stream"; + } else { + return contentType; + } +#else +#pragma unused (extension) + return @"application/octet-stream"; +#endif +} + +NSUInteger const kAFUploadStream3GSuggestedPacketSize = 1024 * 16; +NSTimeInterval const kAFUploadStream3GSuggestedDelay = 0.2; + +@interface AFHTTPBodyPart : NSObject +@property (nonatomic, assign) NSStringEncoding stringEncoding; +@property (nonatomic, strong) NSDictionary *headers; +@property (nonatomic, copy) NSString *boundary; +@property (nonatomic, strong) id body; +@property (nonatomic, assign) unsigned long long bodyContentLength; +@property (nonatomic, strong) NSInputStream *inputStream; + +@property (nonatomic, assign) BOOL hasInitialBoundary; +@property (nonatomic, assign) BOOL hasFinalBoundary; + +@property (readonly, nonatomic, assign, getter = hasBytesAvailable) BOOL bytesAvailable; +@property (readonly, nonatomic, assign) unsigned long long contentLength; + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length; +@end + +@interface AFMultipartBodyStream : NSInputStream +@property (nonatomic, assign) NSUInteger numberOfBytesInPacket; +@property (nonatomic, assign) NSTimeInterval delay; +@property (nonatomic, strong) NSInputStream *inputStream; +@property (readonly, nonatomic, assign) unsigned long long contentLength; +@property (readonly, nonatomic, assign, getter = isEmpty) BOOL empty; + +- (id)initWithStringEncoding:(NSStringEncoding)encoding; +- (void)setInitialAndFinalBoundaries; +- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart; +@end + +#pragma mark - + +@interface AFStreamingMultipartFormData () +@property (readwrite, nonatomic, copy) NSMutableURLRequest *request; +@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; +@property (readwrite, nonatomic, copy) NSString *boundary; +@property (readwrite, nonatomic, strong) AFMultipartBodyStream *bodyStream; +@end + +@implementation AFStreamingMultipartFormData + +- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest + stringEncoding:(NSStringEncoding)encoding +{ + self = [super init]; + if (!self) { + return nil; + } + + self.request = urlRequest; + self.stringEncoding = encoding; + self.boundary = AFCreateMultipartFormBoundary(); + self.bodyStream = [[AFMultipartBodyStream alloc] initWithStringEncoding:encoding]; + + return self; +} + +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + error:(NSError * __autoreleasing *)error +{ + NSParameterAssert(fileURL); + NSParameterAssert(name); + + NSString *fileName = [fileURL lastPathComponent]; + NSString *mimeType = AFContentTypeForPathExtension([fileURL pathExtension]); + + return [self appendPartWithFileURL:fileURL name:name fileName:fileName mimeType:mimeType error:error]; +} + +- (BOOL)appendPartWithFileURL:(NSURL *)fileURL + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType + error:(NSError * __autoreleasing *)error +{ + NSParameterAssert(fileURL); + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + if (![fileURL isFileURL]) { + NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"Expected URL to be a file URL", @"AFNetworking", nil)}; + if (error) { + *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; + } + + return NO; + } else if ([fileURL checkResourceIsReachableAndReturnError:error] == NO) { + NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"File URL not reachable.", @"AFNetworking", nil)}; + if (error) { + *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; + } + + return NO; + } + + NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[fileURL path] error:error]; + if (!fileAttributes) { + return NO; + } + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = mutableHeaders; + bodyPart.boundary = self.boundary; + bodyPart.body = fileURL; + bodyPart.bodyContentLength = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; + [self.bodyStream appendHTTPBodyPart:bodyPart]; + + return YES; +} + +- (void)appendPartWithInputStream:(NSInputStream *)inputStream + name:(NSString *)name + fileName:(NSString *)fileName + length:(int64_t)length + mimeType:(NSString *)mimeType +{ + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = mutableHeaders; + bodyPart.boundary = self.boundary; + bodyPart.body = inputStream; + + bodyPart.bodyContentLength = (unsigned long long)length; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; +} + +- (void)appendPartWithFileData:(NSData *)data + name:(NSString *)name + fileName:(NSString *)fileName + mimeType:(NSString *)mimeType +{ + NSParameterAssert(name); + NSParameterAssert(fileName); + NSParameterAssert(mimeType); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; + [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; + + [self appendPartWithHeaders:mutableHeaders body:data]; +} + +- (void)appendPartWithFormData:(NSData *)data + name:(NSString *)name +{ + NSParameterAssert(name); + + NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; + [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"", name] forKey:@"Content-Disposition"]; + + [self appendPartWithHeaders:mutableHeaders body:data]; +} + +- (void)appendPartWithHeaders:(NSDictionary *)headers + body:(NSData *)body +{ + NSParameterAssert(body); + + AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = headers; + bodyPart.boundary = self.boundary; + bodyPart.bodyContentLength = [body length]; + bodyPart.body = body; + + [self.bodyStream appendHTTPBodyPart:bodyPart]; +} + +- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes + delay:(NSTimeInterval)delay +{ + self.bodyStream.numberOfBytesInPacket = numberOfBytes; + self.bodyStream.delay = delay; +} + +- (NSMutableURLRequest *)requestByFinalizingMultipartFormData { + if ([self.bodyStream isEmpty]) { + return self.request; + } + + // Reset the initial and final boundaries to ensure correct Content-Length + [self.bodyStream setInitialAndFinalBoundaries]; + [self.request setHTTPBodyStream:self.bodyStream]; + + [self.request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", self.boundary] forHTTPHeaderField:@"Content-Type"]; + [self.request setValue:[NSString stringWithFormat:@"%llu", [self.bodyStream contentLength]] forHTTPHeaderField:@"Content-Length"]; + + return self.request; +} + +@end + +#pragma mark - + +@interface NSStream () +@property (readwrite) NSStreamStatus streamStatus; +@property (readwrite, copy) NSError *streamError; +@end + +@interface AFMultipartBodyStream () +@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; +@property (readwrite, nonatomic, strong) NSMutableArray *HTTPBodyParts; +@property (readwrite, nonatomic, strong) NSEnumerator *HTTPBodyPartEnumerator; +@property (readwrite, nonatomic, strong) AFHTTPBodyPart *currentHTTPBodyPart; +@property (readwrite, nonatomic, strong) NSOutputStream *outputStream; +@property (readwrite, nonatomic, strong) NSMutableData *buffer; +@end + +@implementation AFMultipartBodyStream +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wimplicit-atomic-properties" +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1100) +@synthesize delegate; +#endif +@synthesize streamStatus; +@synthesize streamError; +#pragma clang diagnostic pop + +- (id)initWithStringEncoding:(NSStringEncoding)encoding { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = encoding; + self.HTTPBodyParts = [NSMutableArray array]; + self.numberOfBytesInPacket = NSIntegerMax; + + return self; +} + +- (void)setInitialAndFinalBoundaries { + if ([self.HTTPBodyParts count] > 0) { + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + bodyPart.hasInitialBoundary = NO; + bodyPart.hasFinalBoundary = NO; + } + + [[self.HTTPBodyParts objectAtIndex:0] setHasInitialBoundary:YES]; + [[self.HTTPBodyParts lastObject] setHasFinalBoundary:YES]; + } +} + +- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart { + [self.HTTPBodyParts addObject:bodyPart]; +} + +- (BOOL)isEmpty { + return [self.HTTPBodyParts count] == 0; +} + +#pragma mark - NSInputStream + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ + if ([self streamStatus] == NSStreamStatusClosed) { + return 0; + } + + NSInteger totalNumberOfBytesRead = 0; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + while ((NSUInteger)totalNumberOfBytesRead < MIN(length, self.numberOfBytesInPacket)) { + if (!self.currentHTTPBodyPart || ![self.currentHTTPBodyPart hasBytesAvailable]) { + if (!(self.currentHTTPBodyPart = [self.HTTPBodyPartEnumerator nextObject])) { + break; + } + } else { + NSUInteger maxLength = length - (NSUInteger)totalNumberOfBytesRead; + NSInteger numberOfBytesRead = [self.currentHTTPBodyPart read:&buffer[totalNumberOfBytesRead] maxLength:maxLength]; + if (numberOfBytesRead == -1) { + self.streamError = self.currentHTTPBodyPart.inputStream.streamError; + break; + } else { + totalNumberOfBytesRead += numberOfBytesRead; + + if (self.delay > 0.0f) { + [NSThread sleepForTimeInterval:self.delay]; + } + } + } + } +#pragma clang diagnostic pop + + return totalNumberOfBytesRead; +} + +- (BOOL)getBuffer:(__unused uint8_t **)buffer + length:(__unused NSUInteger *)len +{ + return NO; +} + +- (BOOL)hasBytesAvailable { + return [self streamStatus] == NSStreamStatusOpen; +} + +#pragma mark - NSStream + +- (void)open { + if (self.streamStatus == NSStreamStatusOpen) { + return; + } + + self.streamStatus = NSStreamStatusOpen; + + [self setInitialAndFinalBoundaries]; + self.HTTPBodyPartEnumerator = [self.HTTPBodyParts objectEnumerator]; +} + +- (void)close { + self.streamStatus = NSStreamStatusClosed; +} + +- (id)propertyForKey:(__unused NSString *)key { + return nil; +} + +- (BOOL)setProperty:(__unused id)property + forKey:(__unused NSString *)key +{ + return NO; +} + +- (void)scheduleInRunLoop:(__unused NSRunLoop *)aRunLoop + forMode:(__unused NSString *)mode +{} + +- (void)removeFromRunLoop:(__unused NSRunLoop *)aRunLoop + forMode:(__unused NSString *)mode +{} + +- (unsigned long long)contentLength { + unsigned long long length = 0; + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + length += [bodyPart contentLength]; + } + + return length; +} + +#pragma mark - Undocumented CFReadStream Bridged Methods + +- (void)_scheduleInCFRunLoop:(__unused CFRunLoopRef)aRunLoop + forMode:(__unused CFStringRef)aMode +{} + +- (void)_unscheduleFromCFRunLoop:(__unused CFRunLoopRef)aRunLoop + forMode:(__unused CFStringRef)aMode +{} + +- (BOOL)_setCFClientFlags:(__unused CFOptionFlags)inFlags + callback:(__unused CFReadStreamClientCallBack)inCallback + context:(__unused CFStreamClientContext *)inContext { + return NO; +} + +#pragma mark - NSCopying + +-(id)copyWithZone:(NSZone *)zone { + AFMultipartBodyStream *bodyStreamCopy = [[[self class] allocWithZone:zone] initWithStringEncoding:self.stringEncoding]; + + for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { + [bodyStreamCopy appendHTTPBodyPart:[bodyPart copy]]; + } + + [bodyStreamCopy setInitialAndFinalBoundaries]; + + return bodyStreamCopy; +} + +@end + +#pragma mark - + +typedef enum { + AFEncapsulationBoundaryPhase = 1, + AFHeaderPhase = 2, + AFBodyPhase = 3, + AFFinalBoundaryPhase = 4, +} AFHTTPBodyPartReadPhase; + +@interface AFHTTPBodyPart () { + AFHTTPBodyPartReadPhase _phase; + NSInputStream *_inputStream; + unsigned long long _phaseReadOffset; +} + +- (BOOL)transitionToNextPhase; +- (NSInteger)readData:(NSData *)data + intoBuffer:(uint8_t *)buffer + maxLength:(NSUInteger)length; +@end + +@implementation AFHTTPBodyPart + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + [self transitionToNextPhase]; + + return self; +} + +- (void)dealloc { + if (_inputStream) { + [_inputStream close]; + _inputStream = nil; + } +} + +- (NSInputStream *)inputStream { + if (!_inputStream) { + if ([self.body isKindOfClass:[NSData class]]) { + _inputStream = [NSInputStream inputStreamWithData:self.body]; + } else if ([self.body isKindOfClass:[NSURL class]]) { + _inputStream = [NSInputStream inputStreamWithURL:self.body]; + } else if ([self.body isKindOfClass:[NSInputStream class]]) { + _inputStream = self.body; + } else { + _inputStream = [NSInputStream inputStreamWithData:[NSData data]]; + } + } + + return _inputStream; +} + +- (NSString *)stringForHeaders { + NSMutableString *headerString = [NSMutableString string]; + for (NSString *field in [self.headers allKeys]) { + [headerString appendString:[NSString stringWithFormat:@"%@: %@%@", field, [self.headers valueForKey:field], kAFMultipartFormCRLF]]; + } + [headerString appendString:kAFMultipartFormCRLF]; + + return [NSString stringWithString:headerString]; +} + +- (unsigned long long)contentLength { + unsigned long long length = 0; + + NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; + length += [encapsulationBoundaryData length]; + + NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; + length += [headersData length]; + + length += _bodyContentLength; + + NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); + length += [closingBoundaryData length]; + + return length; +} + +- (BOOL)hasBytesAvailable { + // Allows `read:maxLength:` to be called again if `AFMultipartFormFinalBoundary` doesn't fit into the available buffer + if (_phase == AFFinalBoundaryPhase) { + return YES; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" + switch (self.inputStream.streamStatus) { + case NSStreamStatusNotOpen: + case NSStreamStatusOpening: + case NSStreamStatusOpen: + case NSStreamStatusReading: + case NSStreamStatusWriting: + return YES; + case NSStreamStatusAtEnd: + case NSStreamStatusClosed: + case NSStreamStatusError: + default: + return NO; + } +#pragma clang diagnostic pop +} + +- (NSInteger)read:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ + NSInteger totalNumberOfBytesRead = 0; + + if (_phase == AFEncapsulationBoundaryPhase) { + NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; + totalNumberOfBytesRead += [self readData:encapsulationBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + if (_phase == AFHeaderPhase) { + NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; + totalNumberOfBytesRead += [self readData:headersData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + if (_phase == AFBodyPhase) { + NSInteger numberOfBytesRead = 0; + + numberOfBytesRead = [self.inputStream read:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + if (numberOfBytesRead == -1) { + return -1; + } else { + totalNumberOfBytesRead += numberOfBytesRead; + + if ([self.inputStream streamStatus] >= NSStreamStatusAtEnd) { + [self transitionToNextPhase]; + } + } + } + + if (_phase == AFFinalBoundaryPhase) { + NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); + totalNumberOfBytesRead += [self readData:closingBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; + } + + return totalNumberOfBytesRead; +} + +- (NSInteger)readData:(NSData *)data + intoBuffer:(uint8_t *)buffer + maxLength:(NSUInteger)length +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + NSRange range = NSMakeRange((NSUInteger)_phaseReadOffset, MIN([data length] - ((NSUInteger)_phaseReadOffset), length)); + [data getBytes:buffer range:range]; +#pragma clang diagnostic pop + + _phaseReadOffset += range.length; + + if (((NSUInteger)_phaseReadOffset) >= [data length]) { + [self transitionToNextPhase]; + } + + return (NSInteger)range.length; +} + +- (BOOL)transitionToNextPhase { + if (![[NSThread currentThread] isMainThread]) { + dispatch_sync(dispatch_get_main_queue(), ^{ + [self transitionToNextPhase]; + }); + return YES; + } + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wcovered-switch-default" + switch (_phase) { + case AFEncapsulationBoundaryPhase: + _phase = AFHeaderPhase; + break; + case AFHeaderPhase: + [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; + [self.inputStream open]; + _phase = AFBodyPhase; + break; + case AFBodyPhase: + [self.inputStream close]; + _phase = AFFinalBoundaryPhase; + break; + case AFFinalBoundaryPhase: + default: + _phase = AFEncapsulationBoundaryPhase; + break; + } + _phaseReadOffset = 0; +#pragma clang diagnostic pop + + return YES; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPBodyPart *bodyPart = [[[self class] allocWithZone:zone] init]; + + bodyPart.stringEncoding = self.stringEncoding; + bodyPart.headers = self.headers; + bodyPart.bodyContentLength = self.bodyContentLength; + bodyPart.body = self.body; + bodyPart.boundary = self.boundary; + + return bodyPart; +} + +@end + +#pragma mark - + +@implementation AFJSONRequestSerializer + ++ (instancetype)serializer { + return [self serializerWithWritingOptions:(NSJSONWritingOptions)0]; +} + ++ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions +{ + AFJSONRequestSerializer *serializer = [[self alloc] init]; + serializer.writingOptions = writingOptions; + + return serializer; +} + +#pragma mark - AFURLRequestSerialization + +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(request); + + if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { + return [super requestBySerializingRequest:request withParameters:parameters error:error]; + } + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { + if (![request valueForHTTPHeaderField:field]) { + [mutableRequest setValue:value forHTTPHeaderField:field]; + } + }]; + + if (parameters) { + if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { + [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + } + + [mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]]; + } + + return mutableRequest; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.writingOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(writingOptions))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeInteger:self.writingOptions forKey:NSStringFromSelector(@selector(writingOptions))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFJSONRequestSerializer *serializer = [super copyWithZone:zone]; + serializer.writingOptions = self.writingOptions; + + return serializer; +} + +@end + +#pragma mark - + +@implementation AFPropertyListRequestSerializer + ++ (instancetype)serializer { + return [self serializerWithFormat:NSPropertyListXMLFormat_v1_0 writeOptions:0]; +} + ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + writeOptions:(NSPropertyListWriteOptions)writeOptions +{ + AFPropertyListRequestSerializer *serializer = [[self alloc] init]; + serializer.format = format; + serializer.writeOptions = writeOptions; + + return serializer; +} + +#pragma mark - AFURLRequestSerializer + +- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request + withParameters:(id)parameters + error:(NSError *__autoreleasing *)error +{ + NSParameterAssert(request); + + if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { + return [super requestBySerializingRequest:request withParameters:parameters error:error]; + } + + NSMutableURLRequest *mutableRequest = [request mutableCopy]; + + [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { + if (![request valueForHTTPHeaderField:field]) { + [mutableRequest setValue:value forHTTPHeaderField:field]; + } + }]; + + if (parameters) { + if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { + [mutableRequest setValue:@"application/x-plist" forHTTPHeaderField:@"Content-Type"]; + } + + [mutableRequest setHTTPBody:[NSPropertyListSerialization dataWithPropertyList:parameters format:self.format options:self.writeOptions error:error]]; + } + + return mutableRequest; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.format = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(format))] unsignedIntegerValue]; + self.writeOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(writeOptions))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeInteger:self.format forKey:NSStringFromSelector(@selector(format))]; + [coder encodeObject:@(self.writeOptions) forKey:NSStringFromSelector(@selector(writeOptions))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFPropertyListRequestSerializer *serializer = [super copyWithZone:zone]; + serializer.format = self.format; + serializer.writeOptions = self.writeOptions; + + return serializer; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h new file mode 100644 index 00000000000..9cd4ad2dd98 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h @@ -0,0 +1,309 @@ +// AFURLResponseSerialization.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import +#import + +/** + The `AFURLResponseSerialization` protocol is adopted by an object that decodes data into a more useful object representation, according to details in the server response. Response serializers may additionally perform validation on the incoming response and data. + + For example, a JSON response serializer may check for an acceptable status code (`2XX` range) and content type (`application/json`), decoding a valid JSON response into an object. + */ +@protocol AFURLResponseSerialization + +/** + The response object decoded from the data associated with a specified response. + + @param response The response to be processed. + @param data The response data to be decoded. + @param error The error that occurred while attempting to decode the response data. + + @return The object decoded from the specified response data. + */ +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error; + +@end + +#pragma mark - + +/** + `AFHTTPResponseSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. + + Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPResponseSerializer` in order to ensure consistent default behavior. + */ +@interface AFHTTPResponseSerializer : NSObject + +- (instancetype) init; + +/** + The string encoding used to serialize data received from the server, when no string encoding is specified by the response. `NSUTF8StringEncoding` by default. + */ +@property (nonatomic, assign) NSStringEncoding stringEncoding; + +/** + Creates and returns a serializer with default configuration. + */ ++ (instancetype)serializer; + +///----------------------------------------- +/// @name Configuring Response Serialization +///----------------------------------------- + +/** + The acceptable HTTP status codes for responses. When non-`nil`, responses with status codes not contained by the set will result in an error during validation. + + See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html + */ +@property (nonatomic, copy) NSIndexSet *acceptableStatusCodes; + +/** + The acceptable MIME types for responses. When non-`nil`, responses with a `Content-Type` with MIME types that do not intersect with the set will result in an error during validation. + */ +@property (nonatomic, copy) NSSet *acceptableContentTypes; + +/** + Validates the specified response and data. + + In its base implementation, this method checks for an acceptable status code and content type. Subclasses may wish to add other domain-specific checks. + + @param response The response to be validated. + @param data The data associated with the response. + @param error The error that occurred while attempting to validate the response. + + @return `YES` if the response is valid, otherwise `NO`. + */ +- (BOOL)validateResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error; + +@end + +#pragma mark - + + +/** + `AFJSONResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes JSON responses. + + By default, `AFJSONResponseSerializer` accepts the following MIME types, which includes the official standard, `application/json`, as well as other commonly-used types: + + - `application/json` + - `text/json` + - `text/javascript` + */ +@interface AFJSONResponseSerializer : AFHTTPResponseSerializer + +- (instancetype) init; + +/** + Options for reading the response JSON data and creating the Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. + */ +@property (nonatomic, assign) NSJSONReadingOptions readingOptions; + +/** + Whether to remove keys with `NSNull` values from response JSON. Defaults to `NO`. + */ +@property (nonatomic, assign) BOOL removesKeysWithNullValues; + +/** + Creates and returns a JSON serializer with specified reading and writing options. + + @param readingOptions The specified JSON reading options. + */ ++ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions; + +@end + +#pragma mark - + +/** + `AFXMLParserResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLParser` objects. + + By default, `AFXMLParserResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + */ +@interface AFXMLParserResponseSerializer : AFHTTPResponseSerializer + +@end + +#pragma mark - + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED + +/** + `AFXMLDocumentResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. + + By default, `AFXMLDocumentResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: + + - `application/xml` + - `text/xml` + */ +@interface AFXMLDocumentResponseSerializer : AFHTTPResponseSerializer + +- (instancetype) init; + +/** + Input and output options specifically intended for `NSXMLDocument` objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. + */ +@property (nonatomic, assign) NSUInteger options; + +/** + Creates and returns an XML document serializer with the specified options. + + @param mask The XML document options. + */ ++ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask; + +@end + +#endif + +#pragma mark - + +/** + `AFPropertyListResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. + + By default, `AFPropertyListResponseSerializer` accepts the following MIME types: + + - `application/x-plist` + */ +@interface AFPropertyListResponseSerializer : AFHTTPResponseSerializer + +- (instancetype) init; + +/** + The property list format. Possible values are described in "NSPropertyListFormat". + */ +@property (nonatomic, assign) NSPropertyListFormat format; + +/** + The property list reading options. Possible values are described in "NSPropertyListMutabilityOptions." + */ +@property (nonatomic, assign) NSPropertyListReadOptions readOptions; + +/** + Creates and returns a property list serializer with a specified format, read options, and write options. + + @param format The property list format. + @param readOptions The property list reading options. + */ ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + readOptions:(NSPropertyListReadOptions)readOptions; + +@end + +#pragma mark - + +/** + `AFImageResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes image responses. + + By default, `AFImageResponseSerializer` accepts the following MIME types, which correspond to the image formats supported by UIImage or NSImage: + + - `image/tiff` + - `image/jpeg` + - `image/gif` + - `image/png` + - `image/ico` + - `image/x-icon` + - `image/bmp` + - `image/x-bmp` + - `image/x-xbitmap` + - `image/x-win-bitmap` + */ +@interface AFImageResponseSerializer : AFHTTPResponseSerializer + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +/** + The scale factor used when interpreting the image data to construct `responseImage`. Specifying a scale factor of 1.0 results in an image whose size matches the pixel-based dimensions of the image. Applying a different scale factor changes the size of the image as reported by the size property. This is set to the value of scale of the main screen by default, which automatically scales images for retina displays, for instance. + */ +@property (nonatomic, assign) CGFloat imageScale; + +/** + Whether to automatically inflate response image data for compressed formats (such as PNG or JPEG). Enabling this can significantly improve drawing performance on iOS when used with `setCompletionBlockWithSuccess:failure:`, as it allows a bitmap representation to be constructed in the background rather than on the main thread. `YES` by default. + */ +@property (nonatomic, assign) BOOL automaticallyInflatesResponseImage; +#endif + +@end + +#pragma mark - + +/** + `AFCompoundSerializer` is a subclass of `AFHTTPResponseSerializer` that delegates the response serialization to the first `AFHTTPResponseSerializer` object that returns an object for `responseObjectForResponse:data:error:`, falling back on the default behavior of `AFHTTPResponseSerializer`. This is useful for supporting multiple potential types and structures of server responses with a single serializer. + */ +@interface AFCompoundResponseSerializer : AFHTTPResponseSerializer + +/** + The component response serializers. + */ +@property (readonly, nonatomic, copy) NSArray *responseSerializers; + +/** + Creates and returns a compound serializer comprised of the specified response serializers. + + @warning Each response serializer specified must be a subclass of `AFHTTPResponseSerializer`, and response to `-validateResponse:data:error:`. + */ ++ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers; + +@end + +///---------------- +/// @name Constants +///---------------- + +/** + ## Error Domains + + The following error domain is predefined. + + - `NSString * const AFURLResponseSerializationErrorDomain` + + ### Constants + + `AFURLResponseSerializationErrorDomain` + AFURLResponseSerializer errors. Error codes for `AFURLResponseSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. + */ +extern NSString * const AFURLResponseSerializationErrorDomain; + +/** + ## User info dictionary keys + + These keys may exist in the user info dictionary, in addition to those defined for NSError. + + - `NSString * const AFNetworkingOperationFailingURLResponseErrorKey` + - `NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey` + + ### Constants + + `AFNetworkingOperationFailingURLResponseErrorKey` + The corresponding value is an `NSURLResponse` containing the response of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. + + `AFNetworkingOperationFailingURLResponseDataErrorKey` + The corresponding value is an `NSData` containing the original data of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. + */ +extern NSString * const AFNetworkingOperationFailingURLResponseErrorKey; + +extern NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey; + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m new file mode 100644 index 00000000000..a672d205ca4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m @@ -0,0 +1,797 @@ +// AFURLResponseSerialization.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFURLResponseSerialization.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) +#import +#endif + +NSString * const AFURLResponseSerializationErrorDomain = @"com.alamofire.error.serialization.response"; +NSString * const AFNetworkingOperationFailingURLResponseErrorKey = @"com.alamofire.serialization.response.error.response"; +NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey = @"com.alamofire.serialization.response.error.data"; + +static NSError * AFErrorWithUnderlyingError(NSError *error, NSError *underlyingError) { + if (!error) { + return underlyingError; + } + + if (!underlyingError || error.userInfo[NSUnderlyingErrorKey]) { + return error; + } + + NSMutableDictionary *mutableUserInfo = [error.userInfo mutableCopy]; + mutableUserInfo[NSUnderlyingErrorKey] = underlyingError; + + return [[NSError alloc] initWithDomain:error.domain code:error.code userInfo:mutableUserInfo]; +} + +static BOOL AFErrorOrUnderlyingErrorHasCodeInDomain(NSError *error, NSInteger code, NSString *domain) { + if ([error.domain isEqualToString:domain] && error.code == code) { + return YES; + } else if (error.userInfo[NSUnderlyingErrorKey]) { + return AFErrorOrUnderlyingErrorHasCodeInDomain(error.userInfo[NSUnderlyingErrorKey], code, domain); + } + + return NO; +} + +static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingOptions readingOptions) { + if ([JSONObject isKindOfClass:[NSArray class]]) { + NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:[(NSArray *)JSONObject count]]; + for (id value in (NSArray *)JSONObject) { + [mutableArray addObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions)]; + } + + return (readingOptions & NSJSONReadingMutableContainers) ? mutableArray : [NSArray arrayWithArray:mutableArray]; + } else if ([JSONObject isKindOfClass:[NSDictionary class]]) { + NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:JSONObject]; + for (id key in [(NSDictionary *)JSONObject allKeys]) { + id value = [(NSDictionary *)JSONObject objectForKey:key]; + if (!value || [value isEqual:[NSNull null]]) { + [mutableDictionary removeObjectForKey:key]; + } else if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) { + [mutableDictionary setObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions) forKey:key]; + } + } + + return (readingOptions & NSJSONReadingMutableContainers) ? mutableDictionary : [NSDictionary dictionaryWithDictionary:mutableDictionary]; + } + + return JSONObject; +} + +@implementation AFHTTPResponseSerializer + ++ (instancetype)serializer { + return [[self alloc] init]; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.stringEncoding = NSUTF8StringEncoding; + + self.acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; + self.acceptableContentTypes = nil; + + return self; +} + +#pragma mark - + +- (BOOL)validateResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError * __autoreleasing *)error +{ + BOOL responseIsValid = YES; + NSError *validationError = nil; + + if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { + if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]]) { + if ([data length] > 0 && [response URL]) { + NSMutableDictionary *mutableUserInfo = [@{ + NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: unacceptable content-type: %@", @"AFNetworking", nil), [response MIMEType]], + NSURLErrorFailingURLErrorKey:[response URL], + AFNetworkingOperationFailingURLResponseErrorKey: response, + } mutableCopy]; + if (data) { + mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data; + } + + validationError = AFErrorWithUnderlyingError([NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:mutableUserInfo], validationError); + } + + responseIsValid = NO; + } + + if (self.acceptableStatusCodes && ![self.acceptableStatusCodes containsIndex:(NSUInteger)response.statusCode] && [response URL]) { + NSMutableDictionary *mutableUserInfo = [@{ + NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: %@ (%ld)", @"AFNetworking", nil), [NSHTTPURLResponse localizedStringForStatusCode:response.statusCode], (long)response.statusCode], + NSURLErrorFailingURLErrorKey:[response URL], + AFNetworkingOperationFailingURLResponseErrorKey: response, + } mutableCopy]; + + if (data) { + mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data; + } + + validationError = AFErrorWithUnderlyingError([NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorBadServerResponse userInfo:mutableUserInfo], validationError); + + responseIsValid = NO; + } + } + + if (error && !responseIsValid) { + *error = validationError; + } + + return responseIsValid; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]; + + return data; +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + self = [self init]; + if (!self) { + return nil; + } + + self.acceptableStatusCodes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; + self.acceptableContentTypes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.acceptableStatusCodes forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; + [coder encodeObject:self.acceptableContentTypes forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFHTTPResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.acceptableStatusCodes = [self.acceptableStatusCodes copyWithZone:zone]; + serializer.acceptableContentTypes = [self.acceptableContentTypes copyWithZone:zone]; + + return serializer; +} + +@end + +#pragma mark - + +@implementation AFJSONResponseSerializer + ++ (instancetype)serializer { + return [self serializerWithReadingOptions:(NSJSONReadingOptions)0]; +} + ++ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions { + AFJSONResponseSerializer *serializer = [[self alloc] init]; + serializer.readingOptions = readingOptions; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + // Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization. + // See https://github.com/rails/rails/issues/1742 + NSStringEncoding stringEncoding = self.stringEncoding; + if (response.textEncodingName) { + CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + if (encoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); + } + } + + id responseObject = nil; + NSError *serializationError = nil; + @autoreleasepool { + NSString *responseString = [[NSString alloc] initWithData:data encoding:stringEncoding]; + if (responseString && ![responseString isEqualToString:@" "]) { + // Workaround for a bug in NSJSONSerialization when Unicode character escape codes are used instead of the actual character + // See http://stackoverflow.com/a/12843465/157142 + data = [responseString dataUsingEncoding:NSUTF8StringEncoding]; + + if (data) { + if ([data length] > 0) { + responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError]; + } else { + return nil; + } + } else { + NSDictionary *userInfo = @{ + NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"Data failed decoding as a UTF-8 string", @"AFNetworking", nil), + NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Could not decode string: %@", @"AFNetworking", nil), responseString] + }; + + serializationError = [NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; + } + } + } + + if (self.removesKeysWithNullValues && responseObject) { + responseObject = AFJSONObjectByRemovingKeysWithNullValues(responseObject, self.readingOptions); + } + + if (error) { + *error = AFErrorWithUnderlyingError(serializationError, *error); + } + + return responseObject; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.readingOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(readingOptions))] unsignedIntegerValue]; + self.removesKeysWithNullValues = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(removesKeysWithNullValues))] boolValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:@(self.readingOptions) forKey:NSStringFromSelector(@selector(readingOptions))]; + [coder encodeObject:@(self.removesKeysWithNullValues) forKey:NSStringFromSelector(@selector(removesKeysWithNullValues))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFJSONResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.readingOptions = self.readingOptions; + serializer.removesKeysWithNullValues = self.removesKeysWithNullValues; + + return serializer; +} + +@end + +#pragma mark - + +@implementation AFXMLParserResponseSerializer + ++ (instancetype)serializer { + AFXMLParserResponseSerializer *serializer = [[self alloc] init]; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSHTTPURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + return [[NSXMLParser alloc] initWithData:data]; +} + +@end + +#pragma mark - + +#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED + +@implementation AFXMLDocumentResponseSerializer + ++ (instancetype)serializer { + return [self serializerWithXMLDocumentOptions:0]; +} + ++ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask { + AFXMLDocumentResponseSerializer *serializer = [[self alloc] init]; + serializer.options = mask; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + NSError *serializationError = nil; + NSXMLDocument *document = [[NSXMLDocument alloc] initWithData:data options:self.options error:&serializationError]; + + if (error) { + *error = AFErrorWithUnderlyingError(serializationError, *error); + } + + return document; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.options = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(options))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:@(self.options) forKey:NSStringFromSelector(@selector(options))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFXMLDocumentResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.options = self.options; + + return serializer; +} + +@end + +#endif + +#pragma mark - + +@implementation AFPropertyListResponseSerializer + ++ (instancetype)serializer { + return [self serializerWithFormat:NSPropertyListXMLFormat_v1_0 readOptions:0]; +} + ++ (instancetype)serializerWithFormat:(NSPropertyListFormat)format + readOptions:(NSPropertyListReadOptions)readOptions +{ + AFPropertyListResponseSerializer *serializer = [[self alloc] init]; + serializer.format = format; + serializer.readOptions = readOptions; + + return serializer; +} + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/x-plist", nil]; + + return self; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + + id responseObject; + NSError *serializationError = nil; + + if (data) { + responseObject = [NSPropertyListSerialization propertyListWithData:data options:self.readOptions format:NULL error:&serializationError]; + } + + if (error) { + *error = AFErrorWithUnderlyingError(serializationError, *error); + } + + return responseObject; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.format = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(format))] unsignedIntegerValue]; + self.readOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(readOptions))] unsignedIntegerValue]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:@(self.format) forKey:NSStringFromSelector(@selector(format))]; + [coder encodeObject:@(self.readOptions) forKey:NSStringFromSelector(@selector(readOptions))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFPropertyListResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.format = self.format; + serializer.readOptions = self.readOptions; + + return serializer; +} + +@end + +#pragma mark - + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) +#import + +static UIImage * AFImageWithDataAtScale(NSData *data, CGFloat scale) { + UIImage *image = [[UIImage alloc] initWithData:data]; + if (image.images) { + return image; + } + + return [[UIImage alloc] initWithCGImage:[image CGImage] scale:scale orientation:image.imageOrientation]; +} + +static UIImage * AFInflatedImageFromResponseWithDataAtScale(NSHTTPURLResponse *response, NSData *data, CGFloat scale) { + if (!data || [data length] == 0) { + return nil; + } + + CGImageRef imageRef = NULL; + CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); + + if ([response.MIMEType isEqualToString:@"image/png"]) { + imageRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); + } else if ([response.MIMEType isEqualToString:@"image/jpeg"]) { + imageRef = CGImageCreateWithJPEGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); + + if (imageRef) { + CGColorSpaceRef imageColorSpace = CGImageGetColorSpace(imageRef); + CGColorSpaceModel imageColorSpaceModel = CGColorSpaceGetModel(imageColorSpace); + + // CGImageCreateWithJPEGDataProvider does not properly handle CMKY, so fall back to AFImageWithDataAtScale + if (imageColorSpaceModel == kCGColorSpaceModelCMYK) { + CGImageRelease(imageRef); + imageRef = NULL; + } + } + } + + CGDataProviderRelease(dataProvider); + + UIImage *image = AFImageWithDataAtScale(data, scale); + if (!imageRef) { + if (image.images || !image) { + return image; + } + + imageRef = CGImageCreateCopy([image CGImage]); + if (!imageRef) { + return nil; + } + } + + size_t width = CGImageGetWidth(imageRef); + size_t height = CGImageGetHeight(imageRef); + size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef); + + if (width * height > 1024 * 1024 || bitsPerComponent > 8) { + CGImageRelease(imageRef); + + return image; + } + + // CGImageGetBytesPerRow() calculates incorrectly in iOS 5.0, so defer to CGBitmapContextCreate + size_t bytesPerRow = 0; + CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); + CGColorSpaceModel colorSpaceModel = CGColorSpaceGetModel(colorSpace); + CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); + + if (colorSpaceModel == kCGColorSpaceModelRGB) { + uint32_t alpha = (bitmapInfo & kCGBitmapAlphaInfoMask); +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wassign-enum" + if (alpha == kCGImageAlphaNone) { + bitmapInfo &= ~kCGBitmapAlphaInfoMask; + bitmapInfo |= kCGImageAlphaNoneSkipFirst; + } else if (!(alpha == kCGImageAlphaNoneSkipFirst || alpha == kCGImageAlphaNoneSkipLast)) { + bitmapInfo &= ~kCGBitmapAlphaInfoMask; + bitmapInfo |= kCGImageAlphaPremultipliedFirst; + } +#pragma clang diagnostic pop + } + + CGContextRef context = CGBitmapContextCreate(NULL, width, height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo); + + CGColorSpaceRelease(colorSpace); + + if (!context) { + CGImageRelease(imageRef); + + return image; + } + + CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, width, height), imageRef); + CGImageRef inflatedImageRef = CGBitmapContextCreateImage(context); + + CGContextRelease(context); + + UIImage *inflatedImage = [[UIImage alloc] initWithCGImage:inflatedImageRef scale:scale orientation:image.imageOrientation]; + + CGImageRelease(inflatedImageRef); + CGImageRelease(imageRef); + + return inflatedImage; +} +#endif + + +@implementation AFImageResponseSerializer + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon", @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil]; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + self.imageScale = [[UIScreen mainScreen] scale]; + self.automaticallyInflatesResponseImage = YES; +#endif + + return self; +} + +#pragma mark - AFURLResponseSerializer + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { + if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { + return nil; + } + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + if (self.automaticallyInflatesResponseImage) { + return AFInflatedImageFromResponseWithDataAtScale((NSHTTPURLResponse *)response, data, self.imageScale); + } else { + return AFImageWithDataAtScale(data, self.imageScale); + } +#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) + // Ensure that the image is set to it's correct pixel width and height + NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:data]; + NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])]; + [image addRepresentation:bitimage]; + + return image; +#endif + + return nil; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + NSNumber *imageScale = [decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(imageScale))]; +#if CGFLOAT_IS_DOUBLE + self.imageScale = [imageScale doubleValue]; +#else + self.imageScale = [imageScale floatValue]; +#endif + + self.automaticallyInflatesResponseImage = [decoder decodeBoolForKey:NSStringFromSelector(@selector(automaticallyInflatesResponseImage))]; +#endif + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + [coder encodeObject:@(self.imageScale) forKey:NSStringFromSelector(@selector(imageScale))]; + [coder encodeBool:self.automaticallyInflatesResponseImage forKey:NSStringFromSelector(@selector(automaticallyInflatesResponseImage))]; +#endif +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFImageResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + serializer.imageScale = self.imageScale; + serializer.automaticallyInflatesResponseImage = self.automaticallyInflatesResponseImage; +#endif + + return serializer; +} + +@end + +#pragma mark - + +@interface AFCompoundResponseSerializer () +@property (readwrite, nonatomic, copy) NSArray *responseSerializers; +@end + +@implementation AFCompoundResponseSerializer + ++ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers { + AFCompoundResponseSerializer *serializer = [[self alloc] init]; + serializer.responseSerializers = responseSerializers; + + return serializer; +} + +#pragma mark - AFURLResponseSerialization + +- (id)responseObjectForResponse:(NSURLResponse *)response + data:(NSData *)data + error:(NSError *__autoreleasing *)error +{ + for (id serializer in self.responseSerializers) { + if (![serializer isKindOfClass:[AFHTTPResponseSerializer class]]) { + continue; + } + + NSError *serializerError = nil; + id responseObject = [serializer responseObjectForResponse:response data:data error:&serializerError]; + if (responseObject) { + if (error) { + *error = AFErrorWithUnderlyingError(serializerError, *error); + } + + return responseObject; + } + } + + return [super responseObjectForResponse:response data:data error:error]; +} + +#pragma mark - NSSecureCoding + +- (id)initWithCoder:(NSCoder *)decoder { + self = [super initWithCoder:decoder]; + if (!self) { + return nil; + } + + self.responseSerializers = [decoder decodeObjectOfClass:[NSArray class] forKey:NSStringFromSelector(@selector(responseSerializers))]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [super encodeWithCoder:coder]; + + [coder encodeObject:self.responseSerializers forKey:NSStringFromSelector(@selector(responseSerializers))]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + AFCompoundResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; + serializer.responseSerializers = self.responseSerializers; + + return serializer; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h new file mode 100644 index 00000000000..21d9d64f9fb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h @@ -0,0 +1,546 @@ +// AFURLSessionManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" +#import "AFSecurityPolicy.h" +#import "AFNetworkReachabilityManager.h" + +#ifndef NS_DESIGNATED_INITIALIZER +#if __has_attribute(objc_designated_initializer) +#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +#else +#define NS_DESIGNATED_INITIALIZER +#endif +#endif + +/** + `AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to ``, ``, ``, and ``. + + ## Subclassing Notes + + This is the base class for `AFHTTPSessionManager`, which adds functionality specific to making HTTP requests. If you are looking to extend `AFURLSessionManager` specifically for HTTP, consider subclassing `AFHTTPSessionManager` instead. + + ## NSURLSession & NSURLSessionTask Delegate Methods + + `AFURLSessionManager` implements the following delegate methods: + + ### `NSURLSessionDelegate` + + - `URLSession:didBecomeInvalidWithError:` + - `URLSession:didReceiveChallenge:completionHandler:` + - `URLSessionDidFinishEventsForBackgroundURLSession:` + + ### `NSURLSessionTaskDelegate` + + - `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:` + - `URLSession:task:didReceiveChallenge:completionHandler:` + - `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:` + - `URLSession:task:didCompleteWithError:` + + ### `NSURLSessionDataDelegate` + + - `URLSession:dataTask:didReceiveResponse:completionHandler:` + - `URLSession:dataTask:didBecomeDownloadTask:` + - `URLSession:dataTask:didReceiveData:` + - `URLSession:dataTask:willCacheResponse:completionHandler:` + + ### `NSURLSessionDownloadDelegate` + + - `URLSession:downloadTask:didFinishDownloadingToURL:` + - `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:` + - `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:` + + If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. + + ## Network Reachability Monitoring + + Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. + + ## NSCoding Caveats + + - Encoded managers do not include any block properties. Be sure to set delegate callback blocks when using `-initWithCoder:` or `NSKeyedUnarchiver`. + + ## NSCopying Caveats + + - `-copy` and `-copyWithZone:` return a new manager with a new `NSURLSession` created from the configuration of the original. + - Operation copies do not include any delegate callback blocks, as they often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ session manager when copied. + + @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. + */ + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +@interface AFURLSessionManager : NSObject + +/** + The managed session. + */ +@property (readonly, nonatomic, strong) NSURLSession *session; + +/** + The operation queue on which delegate callbacks are run. + */ +@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; + +/** + Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. + + @warning `responseSerializer` must not be `nil`. + */ +@property (nonatomic, strong) id responseSerializer; + +///------------------------------- +/// @name Managing Security Policy +///------------------------------- + +/** + The security policy used by created request operations to evaluate server trust for secure connections. `AFURLSessionManager` uses the `defaultPolicy` unless otherwise specified. + */ +@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; + +///-------------------------------------- +/// @name Monitoring Network Reachability +///-------------------------------------- + +/** + The network reachability manager. `AFURLSessionManager` uses the `sharedManager` by default. + */ +@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; + +///---------------------------- +/// @name Getting Session Tasks +///---------------------------- + +/** + The data, upload, and download tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *tasks; + +/** + The data tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *dataTasks; + +/** + The upload tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *uploadTasks; + +/** + The download tasks currently run by the managed session. + */ +@property (readonly, nonatomic, strong) NSArray *downloadTasks; + +///------------------------------- +/// @name Managing Callback Queues +///------------------------------- + +/** + The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong) dispatch_queue_t completionQueue; +#else +@property (nonatomic, assign) dispatch_queue_t completionQueue; +#endif + +/** + The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. + */ +#if OS_OBJECT_HAVE_OBJC_SUPPORT +@property (nonatomic, strong) dispatch_group_t completionGroup; +#else +@property (nonatomic, assign) dispatch_group_t completionGroup; +#endif + +///--------------------------------- +/// @name Working Around System Bugs +///--------------------------------- + +/** + Whether to attempt to retry creation of upload tasks for background sessions when initial call returns `nil`. `NO` by default. + + @bug As of iOS 7.0, there is a bug where upload tasks created for background tasks are sometimes `nil`. As a workaround, if this property is `YES`, AFNetworking will follow Apple's recommendation to try creating the task again. + + @see https://github.com/AFNetworking/AFNetworking/issues/1675 + */ +@property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions; + +///--------------------- +/// @name Initialization +///--------------------- + +/** + Creates and returns a manager for a session created with the specified configuration. This is the designated initializer. + + @param configuration The configuration used to create the managed session. + + @return A manager for a newly-created session. + */ +- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; + +/** + Invalidates the managed session, optionally canceling pending tasks. + + @param cancelPendingTasks Whether or not to cancel pending tasks. + */ +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks; + +///------------------------- +/// @name Running Data Tasks +///------------------------- + +/** + Creates an `NSURLSessionDataTask` with the specified request. + + @param request The HTTP request for the request. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +///--------------------------- +/// @name Running Upload Tasks +///--------------------------- + +/** + Creates an `NSURLSessionUploadTask` with the specified request for a local file. + + @param request The HTTP request for the request. + @param fileURL A URL to the local file to be uploaded. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + + @see `attemptsToRecreateUploadTasksForBackgroundSessions` + */ +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromFile:(NSURL *)fileURL + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +/** + Creates an `NSURLSessionUploadTask` with the specified request for an HTTP body. + + @param request The HTTP request for the request. + @param bodyData A data object containing the HTTP body to be uploaded. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromData:(NSData *)bodyData + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +/** + Creates an `NSURLSessionUploadTask` with the specified streaming request. + + @param request The HTTP request for the request. + @param progress A progress object monitoring the current upload progress. + @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. + */ +- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; + +///----------------------------- +/// @name Running Download Tasks +///----------------------------- + +/** + Creates an `NSURLSessionDownloadTask` with the specified request. + + @param request The HTTP request for the request. + @param progress A progress object monitoring the current download progress. + @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. + @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. + + @warning If using a background `NSURLSessionConfiguration` on iOS, these blocks will be lost when the app is terminated. Background sessions may prefer to use `-setDownloadTaskDidFinishDownloadingBlock:` to specify the URL for saving the downloaded file, rather than the destination block of this method. + */ +- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler; + +/** + Creates an `NSURLSessionDownloadTask` with the specified resume data. + + @param resumeData The data used to resume downloading. + @param progress A progress object monitoring the current download progress. + @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. + @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. + */ +- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler; + +///--------------------------------- +/// @name Getting Progress for Tasks +///--------------------------------- + +/** + Returns the upload progress of the specified task. + + @param uploadTask The session upload task. Must not be `nil`. + + @return An `NSProgress` object reporting the upload progress of a task, or `nil` if the progress is unavailable. + */ +- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask; + +/** + Returns the download progress of the specified task. + + @param downloadTask The session download task. Must not be `nil`. + + @return An `NSProgress` object reporting the download progress of a task, or `nil` if the progress is unavailable. + */ +- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask; + +///----------------------------------------- +/// @name Setting Session Delegate Callbacks +///----------------------------------------- + +/** + Sets a block to be executed when the managed session becomes invalid, as handled by the `NSURLSessionDelegate` method `URLSession:didBecomeInvalidWithError:`. + + @param block A block object to be executed when the managed session becomes invalid. The block has no return value, and takes two arguments: the session, and the error related to the cause of invalidation. + */ +- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block; + +/** + Sets a block to be executed when a connection level authentication challenge has occurred, as handled by the `NSURLSessionDelegate` method `URLSession:didReceiveChallenge:completionHandler:`. + + @param block A block object to be executed when a connection level authentication challenge has occurred. The block returns the disposition of the authentication challenge, and takes three arguments: the session, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + */ +- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block; + +///-------------------------------------- +/// @name Setting Task Delegate Callbacks +///-------------------------------------- + +/** + Sets a block to be executed when a task requires a new request body stream to send to the remote server, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:needNewBodyStream:`. + + @param block A block object to be executed when a task requires a new request body stream. + */ +- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block; + +/** + Sets a block to be executed when an HTTP request is attempting to perform a redirection to a different URL, as handled by the `NSURLSessionTaskDelegate` method `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:`. + + @param block A block object to be executed when an HTTP request is attempting to perform a redirection to a different URL. The block returns the request to be made for the redirection, and takes four arguments: the session, the task, the redirection response, and the request corresponding to the redirection response. + */ +- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block; + +/** + Sets a block to be executed when a session task has received a request specific authentication challenge, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didReceiveChallenge:completionHandler:`. + + @param block A block object to be executed when a session task has received a request specific authentication challenge. The block returns the disposition of the authentication challenge, and takes four arguments: the session, the task, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. + */ +- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block; + +/** + Sets a block to be executed periodically to track upload progress, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:`. + + @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes five arguments: the session, the task, the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. + */ +- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block; + +/** + Sets a block to be executed as the last message related to a specific task, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didCompleteWithError:`. + + @param block A block object to be executed when a session task is completed. The block has no return value, and takes three arguments: the session, the task, and any error that occurred in the process of executing the task. + */ +- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block; + +///------------------------------------------- +/// @name Setting Data Task Delegate Callbacks +///------------------------------------------- + +/** + Sets a block to be executed when a data task has received a response, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveResponse:completionHandler:`. + + @param block A block object to be executed when a data task has received a response. The block returns the disposition of the session response, and takes three arguments: the session, the data task, and the received response. + */ +- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block; + +/** + Sets a block to be executed when a data task has become a download task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didBecomeDownloadTask:`. + + @param block A block object to be executed when a data task has become a download task. The block has no return value, and takes three arguments: the session, the data task, and the download task it has become. + */ +- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block; + +/** + Sets a block to be executed when a data task receives data, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveData:`. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the session, the data task, and the data received. This block may be called multiple times, and will execute on the session manager operation queue. + */ +- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block; + +/** + Sets a block to be executed to determine the caching behavior of a data task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:willCacheResponse:completionHandler:`. + + @param block A block object to be executed to determine the caching behavior of a data task. The block returns the response to cache, and takes three arguments: the session, the data task, and the proposed cached URL response. + */ +- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block; + +/** + Sets a block to be executed once all messages enqueued for a session have been delivered, as handled by the `NSURLSessionDataDelegate` method `URLSessionDidFinishEventsForBackgroundURLSession:`. + + @param block A block object to be executed once all messages enqueued for a session have been delivered. The block has no return value and takes a single argument: the session. + */ +- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block; + +///----------------------------------------------- +/// @name Setting Download Task Delegate Callbacks +///----------------------------------------------- + +/** + Sets a block to be executed when a download task has completed a download, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didFinishDownloadingToURL:`. + + @param block A block object to be executed when a download task has completed. The block returns the URL the download should be moved to, and takes three arguments: the session, the download task, and the temporary location of the downloaded file. If the file manager encounters an error while attempting to move the temporary file to the destination, an `AFURLSessionDownloadTaskDidFailToMoveFileNotification` will be posted, with the download task as its object, and the user info of the error. + */ +- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block; + +/** + Sets a block to be executed periodically to track download progress, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:`. + + @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes five arguments: the session, the download task, the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the session manager operation queue. + */ +- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block; + +/** + Sets a block to be executed when a download task has been resumed, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:`. + + @param block A block object to be executed when a download task has been resumed. The block has no return value and takes four arguments: the session, the download task, the file offset of the resumed download, and the total number of bytes expected to be downloaded. + */ +- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block; + +@end + +#endif + +///-------------------- +/// @name Notifications +///-------------------- + +/** + Posted when a task begins executing. + + @deprecated Use `AFNetworkingTaskDidResumeNotification` instead. + */ +extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE; + +/** + Posted when a task resumes. + */ +extern NSString * const AFNetworkingTaskDidResumeNotification; + +/** + Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. + + @deprecated Use `AFNetworkingTaskDidCompleteNotification` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE; + +/** + Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. + */ +extern NSString * const AFNetworkingTaskDidCompleteNotification; + +/** + Posted when a task suspends its execution. + */ +extern NSString * const AFNetworkingTaskDidSuspendNotification; + +/** + Posted when a session is invalidated. + */ +extern NSString * const AFURLSessionDidInvalidateNotification; + +/** + Posted when a session download task encountered an error when moving the temporary download file to a specified destination. + */ +extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification; + +/** + The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. + + @deprecated Use `AFNetworkingTaskDidCompleteResponseDataKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE; + +/** + The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. + */ +extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey; + +/** + The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. + + @deprecated Use `AFNetworkingTaskDidCompleteSerializedResponseKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE; + +/** + The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. + */ +extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey; + +/** + The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. + + @deprecated Use `AFNetworkingTaskDidCompleteResponseSerializerKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE; + +/** + The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. + */ +extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey; + +/** + The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. + + @deprecated Use `AFNetworkingTaskDidCompleteAssetPathKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE; + +/** + The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. + */ +extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey; + +/** + Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. + + @deprecated Use `AFNetworkingTaskDidCompleteErrorKey` instead. + */ +extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE; + +/** + Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. + */ +extern NSString * const AFNetworkingTaskDidCompleteErrorKey; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m new file mode 100644 index 00000000000..99eadfbee6d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m @@ -0,0 +1,1156 @@ +// AFURLSessionManager.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFURLSessionManager.h" +#import + +#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) + +static dispatch_queue_t url_session_manager_creation_queue() { + static dispatch_queue_t af_url_session_manager_creation_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_session_manager_creation_queue = dispatch_queue_create("com.alamofire.networking.session.manager.creation", DISPATCH_QUEUE_SERIAL); + }); + + return af_url_session_manager_creation_queue; +} + +static dispatch_queue_t url_session_manager_processing_queue() { + static dispatch_queue_t af_url_session_manager_processing_queue; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_session_manager_processing_queue = dispatch_queue_create("com.alamofire.networking.session.manager.processing", DISPATCH_QUEUE_CONCURRENT); + }); + + return af_url_session_manager_processing_queue; +} + +static dispatch_group_t url_session_manager_completion_group() { + static dispatch_group_t af_url_session_manager_completion_group; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + af_url_session_manager_completion_group = dispatch_group_create(); + }); + + return af_url_session_manager_completion_group; +} + +NSString * const AFNetworkingTaskDidResumeNotification = @"com.alamofire.networking.task.resume"; +NSString * const AFNetworkingTaskDidCompleteNotification = @"com.alamofire.networking.task.complete"; +NSString * const AFNetworkingTaskDidSuspendNotification = @"com.alamofire.networking.task.suspend"; +NSString * const AFURLSessionDidInvalidateNotification = @"com.alamofire.networking.session.invalidate"; +NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification = @"com.alamofire.networking.session.download.file-manager-error"; + +NSString * const AFNetworkingTaskDidStartNotification = @"com.alamofire.networking.task.resume"; // Deprecated +NSString * const AFNetworkingTaskDidFinishNotification = @"com.alamofire.networking.task.complete"; // Deprecated + +NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; +NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey = @"com.alamofire.networking.task.complete.responseserializer"; +NSString * const AFNetworkingTaskDidCompleteResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; +NSString * const AFNetworkingTaskDidCompleteErrorKey = @"com.alamofire.networking.task.complete.error"; +NSString * const AFNetworkingTaskDidCompleteAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; + +NSString * const AFNetworkingTaskDidFinishSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; // Deprecated +NSString * const AFNetworkingTaskDidFinishResponseSerializerKey = @"com.alamofire.networking.task.complete.responseserializer"; // Deprecated +NSString * const AFNetworkingTaskDidFinishResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; // Deprecated +NSString * const AFNetworkingTaskDidFinishErrorKey = @"com.alamofire.networking.task.complete.error"; // Deprecated +NSString * const AFNetworkingTaskDidFinishAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; // Deprecated + +static NSString * const AFURLSessionManagerLockName = @"com.alamofire.networking.session.manager.lock"; + +static NSUInteger const AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask = 3; + +static void * AFTaskStateChangedContext = &AFTaskStateChangedContext; + +typedef void (^AFURLSessionDidBecomeInvalidBlock)(NSURLSession *session, NSError *error); +typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); + +typedef NSURLRequest * (^AFURLSessionTaskWillPerformHTTPRedirectionBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request); +typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionTaskDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); +typedef void (^AFURLSessionDidFinishEventsForBackgroundURLSessionBlock)(NSURLSession *session); + +typedef NSInputStream * (^AFURLSessionTaskNeedNewBodyStreamBlock)(NSURLSession *session, NSURLSessionTask *task); +typedef void (^AFURLSessionTaskDidSendBodyDataBlock)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); +typedef void (^AFURLSessionTaskDidCompleteBlock)(NSURLSession *session, NSURLSessionTask *task, NSError *error); + +typedef NSURLSessionResponseDisposition (^AFURLSessionDataTaskDidReceiveResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response); +typedef void (^AFURLSessionDataTaskDidBecomeDownloadTaskBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask); +typedef void (^AFURLSessionDataTaskDidReceiveDataBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data); +typedef NSCachedURLResponse * (^AFURLSessionDataTaskWillCacheResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse); + +typedef NSURL * (^AFURLSessionDownloadTaskDidFinishDownloadingBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location); +typedef void (^AFURLSessionDownloadTaskDidWriteDataBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); +typedef void (^AFURLSessionDownloadTaskDidResumeBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes); + +typedef void (^AFURLSessionTaskCompletionHandler)(NSURLResponse *response, id responseObject, NSError *error); + +#pragma mark - + +@interface AFURLSessionManagerTaskDelegate : NSObject +@property (nonatomic, weak) AFURLSessionManager *manager; +@property (nonatomic, strong) NSMutableData *mutableData; +@property (nonatomic, strong) NSProgress *progress; +@property (nonatomic, copy) NSURL *downloadFileURL; +@property (nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; +@property (nonatomic, copy) AFURLSessionTaskCompletionHandler completionHandler; +@end + +@implementation AFURLSessionManagerTaskDelegate + +- (instancetype)init { + self = [super init]; + if (!self) { + return nil; + } + + self.mutableData = [NSMutableData data]; + + self.progress = [NSProgress progressWithTotalUnitCount:0]; + + return self; +} + +#pragma mark - NSURLSessionTaskDelegate + +- (void)URLSession:(__unused NSURLSession *)session + task:(__unused NSURLSessionTask *)task + didSendBodyData:(__unused int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend +{ + self.progress.totalUnitCount = totalBytesExpectedToSend; + self.progress.completedUnitCount = totalBytesSent; +} + +- (void)URLSession:(__unused NSURLSession *)session + task:(NSURLSessionTask *)task +didCompleteWithError:(NSError *)error +{ +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + __strong AFURLSessionManager *manager = self.manager; + + __block id responseObject = nil; + + __block NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; + userInfo[AFNetworkingTaskDidCompleteResponseSerializerKey] = manager.responseSerializer; + + if (self.downloadFileURL) { + userInfo[AFNetworkingTaskDidCompleteAssetPathKey] = self.downloadFileURL; + } else if (self.mutableData) { + userInfo[AFNetworkingTaskDidCompleteResponseDataKey] = [NSData dataWithData:self.mutableData]; + } + + if (error) { + userInfo[AFNetworkingTaskDidCompleteErrorKey] = error; + + dispatch_group_async(manager.completionGroup ?: url_session_manager_completion_group(), manager.completionQueue ?: dispatch_get_main_queue(), ^{ + if (self.completionHandler) { + self.completionHandler(task.response, responseObject, error); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo]; + }); + }); + } else { + dispatch_async(url_session_manager_processing_queue(), ^{ + NSError *serializationError = nil; + responseObject = [manager.responseSerializer responseObjectForResponse:task.response data:[NSData dataWithData:self.mutableData] error:&serializationError]; + + if (self.downloadFileURL) { + responseObject = self.downloadFileURL; + } + + if (responseObject) { + userInfo[AFNetworkingTaskDidCompleteSerializedResponseKey] = responseObject; + } + + if (serializationError) { + userInfo[AFNetworkingTaskDidCompleteErrorKey] = serializationError; + } + + dispatch_group_async(manager.completionGroup ?: url_session_manager_completion_group(), manager.completionQueue ?: dispatch_get_main_queue(), ^{ + if (self.completionHandler) { + self.completionHandler(task.response, responseObject, serializationError); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo]; + }); + }); + }); + } +#pragma clang diagnostic pop +} + +#pragma mark - NSURLSessionDataTaskDelegate + +- (void)URLSession:(__unused NSURLSession *)session + dataTask:(__unused NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data +{ + [self.mutableData appendData:data]; +} + +#pragma mark - NSURLSessionDownloadTaskDelegate + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask +didFinishDownloadingToURL:(NSURL *)location +{ + NSError *fileManagerError = nil; + self.downloadFileURL = nil; + + if (self.downloadTaskDidFinishDownloading) { + self.downloadFileURL = self.downloadTaskDidFinishDownloading(session, downloadTask, location); + if (self.downloadFileURL) { + [[NSFileManager defaultManager] moveItemAtURL:location toURL:self.downloadFileURL error:&fileManagerError]; + + if (fileManagerError) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:fileManagerError.userInfo]; + } + } + } +} + +- (void)URLSession:(__unused NSURLSession *)session + downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask + didWriteData:(__unused int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten +totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite +{ + self.progress.totalUnitCount = totalBytesExpectedToWrite; + self.progress.completedUnitCount = totalBytesWritten; +} + +- (void)URLSession:(__unused NSURLSession *)session + downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset +expectedTotalBytes:(int64_t)expectedTotalBytes { + self.progress.totalUnitCount = expectedTotalBytes; + self.progress.completedUnitCount = fileOffset; +} + +@end + +#pragma mark - + +/** + * A workaround for issues related to key-value observing the `state` of an `NSURLSessionTask`. + * + * See: + * - https://github.com/AFNetworking/AFNetworking/issues/1477 + * - https://github.com/AFNetworking/AFNetworking/issues/2638 + * - https://github.com/AFNetworking/AFNetworking/pull/2702 + */ + +static inline void af_swizzleSelector(Class class, SEL originalSelector, SEL swizzledSelector) { + Method originalMethod = class_getInstanceMethod(class, originalSelector); + Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); + method_exchangeImplementations(originalMethod, swizzledMethod); +} + +static inline BOOL af_addMethod(Class class, SEL selector, Method method) { + return class_addMethod(class, selector, method_getImplementation(method), method_getTypeEncoding(method)); +} + +static NSString * const AFNSURLSessionTaskDidResumeNotification = @"com.alamofire.networking.nsurlsessiontask.resume"; +static NSString * const AFNSURLSessionTaskDidSuspendNotification = @"com.alamofire.networking.nsurlsessiontask.suspend"; + +@interface _AFURLSessionTaskSwizzling : NSObject + +@end + +@implementation _AFURLSessionTaskSwizzling + ++ (void)load { + /** + WARNING: Trouble Ahead + https://github.com/AFNetworking/AFNetworking/pull/2702 + */ + + if (NSClassFromString(@"NSURLSessionTask")) { + /** + iOS 7 and iOS 8 differ in NSURLSessionTask implementation, which makes the next bit of code a bit tricky. + Many Unit Tests have been built to validate as much of this behavior has possible. + Here is what we know: + - NSURLSessionTasks are implemented with class clusters, meaning the class you request from the API isn't actually the type of class you will get back. + - Simply referencing `[NSURLSessionTask class]` will not work. You need to ask an `NSURLSession` to actually create an object, and grab the class from there. + - On iOS 7, `localDataTask` is a `__NSCFLocalDataTask`, which inherits from `__NSCFLocalSessionTask`, which inherits from `__NSCFURLSessionTask`. + - On iOS 8, `localDataTask` is a `__NSCFLocalDataTask`, which inherits from `__NSCFLocalSessionTask`, which inherits from `NSURLSessionTask`. + - On iOS 7, `__NSCFLocalSessionTask` and `__NSCFURLSessionTask` are the only two classes that have their own implementations of `resume` and `suspend`, and `__NSCFLocalSessionTask` DOES NOT CALL SUPER. This means both classes need to be swizzled. + - On iOS 8, `NSURLSessionTask` is the only class that implements `resume` and `suspend`. This means this is the only class that needs to be swizzled. + - Because `NSURLSessionTask` is not involved in the class hierarchy for every version of iOS, its easier to add the swizzled methods to a dummy class and manage them there. + + Some Assumptions: + - No implementations of `resume` or `suspend` call super. If this were to change in a future version of iOS, we'd need to handle it. + - No background task classes override `resume` or `suspend` + + The current solution: + 1) Grab an instance of `__NSCFLocalDataTask` by asking an instance of `NSURLSession` for a data task. + 2) Grab a pointer to the original implementation of `af_resume` + 3) Check to see if the current class has an implementation of resume. If so, continue to step 4. + 4) Grab the super class of the current class. + 5) Grab a pointer for the current class to the current implementation of `resume`. + 6) Grab a pointer for the super class to the current implementation of `resume`. + 7) If the current class implementation of `resume` is not equal to the super class implementation of `resume` AND the current implementation of `resume` is not equal to the original implementation of `af_resume`, THEN swizzle the methods + 8) Set the current class to the super class, and repeat steps 3-8 + */ + NSURLSessionDataTask *localDataTask = [[NSURLSession sessionWithConfiguration:nil] dataTaskWithURL:nil]; + IMP originalAFResumeIMP = method_getImplementation(class_getInstanceMethod([_AFURLSessionTaskSwizzling class], @selector(af_resume))); + Class currentClass = [localDataTask class]; + + while (class_getInstanceMethod(currentClass, @selector(resume))) { + Class superClass = [currentClass superclass]; + IMP classResumeIMP = method_getImplementation(class_getInstanceMethod(currentClass, @selector(resume))); + IMP superclassResumeIMP = method_getImplementation(class_getInstanceMethod(superClass, @selector(resume))); + if (classResumeIMP != superclassResumeIMP && + originalAFResumeIMP != classResumeIMP) { + [self swizzleResumeAndSuspendMethodForClass:currentClass]; + } + currentClass = [currentClass superclass]; + } + + [localDataTask cancel]; + } +} + ++ (void)swizzleResumeAndSuspendMethodForClass:(Class)class { + Method afResumeMethod = class_getInstanceMethod(self, @selector(af_resume)); + Method afSuspendMethod = class_getInstanceMethod(self, @selector(af_suspend)); + + af_addMethod(class, @selector(af_resume), afResumeMethod); + af_addMethod(class, @selector(af_suspend), afSuspendMethod); + + af_swizzleSelector(class, @selector(resume), @selector(af_resume)); + af_swizzleSelector(class, @selector(suspend), @selector(af_suspend)); +} + +- (NSURLSessionTaskState)state { + NSAssert(NO, @"State method should never be called in the actual dummy class"); + return NSURLSessionTaskStateCanceling; +} + +- (void)af_resume { + NSAssert([self respondsToSelector:@selector(state)], @"Does not respond to state"); + NSURLSessionTaskState state = [self state]; + [self af_resume]; + + if (state != NSURLSessionTaskStateRunning) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFNSURLSessionTaskDidResumeNotification object:self]; + } +} + +- (void)af_suspend { + NSAssert([self respondsToSelector:@selector(state)], @"Does not respond to state"); + NSURLSessionTaskState state = [self state]; + [self af_suspend]; + + if (state != NSURLSessionTaskStateSuspended) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFNSURLSessionTaskDidSuspendNotification object:self]; + } +} +@end + +#pragma mark - + +@interface AFURLSessionManager () +@property (readwrite, nonatomic, strong) NSURLSessionConfiguration *sessionConfiguration; +@property (readwrite, nonatomic, strong) NSOperationQueue *operationQueue; +@property (readwrite, nonatomic, strong) NSURLSession *session; +@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableTaskDelegatesKeyedByTaskIdentifier; +@property (readonly, nonatomic, copy) NSString *taskDescriptionForSessionTasks; +@property (readwrite, nonatomic, strong) NSLock *lock; +@property (readwrite, nonatomic, copy) AFURLSessionDidBecomeInvalidBlock sessionDidBecomeInvalid; +@property (readwrite, nonatomic, copy) AFURLSessionDidReceiveAuthenticationChallengeBlock sessionDidReceiveAuthenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLSessionDidFinishEventsForBackgroundURLSessionBlock didFinishEventsForBackgroundURLSession; +@property (readwrite, nonatomic, copy) AFURLSessionTaskWillPerformHTTPRedirectionBlock taskWillPerformHTTPRedirection; +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidReceiveAuthenticationChallengeBlock taskDidReceiveAuthenticationChallenge; +@property (readwrite, nonatomic, copy) AFURLSessionTaskNeedNewBodyStreamBlock taskNeedNewBodyStream; +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidSendBodyDataBlock taskDidSendBodyData; +@property (readwrite, nonatomic, copy) AFURLSessionTaskDidCompleteBlock taskDidComplete; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveResponseBlock dataTaskDidReceiveResponse; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidBecomeDownloadTaskBlock dataTaskDidBecomeDownloadTask; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveDataBlock dataTaskDidReceiveData; +@property (readwrite, nonatomic, copy) AFURLSessionDataTaskWillCacheResponseBlock dataTaskWillCacheResponse; +@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; +@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidWriteDataBlock downloadTaskDidWriteData; +@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidResumeBlock downloadTaskDidResume; +@end + +@implementation AFURLSessionManager + +- (instancetype)init { + return [self initWithSessionConfiguration:nil]; +} + +- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration { + self = [super init]; + if (!self) { + return nil; + } + + if (!configuration) { + configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; + } + + self.sessionConfiguration = configuration; + + self.operationQueue = [[NSOperationQueue alloc] init]; + self.operationQueue.maxConcurrentOperationCount = 1; + + self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue]; + + self.responseSerializer = [AFJSONResponseSerializer serializer]; + + self.securityPolicy = [AFSecurityPolicy defaultPolicy]; + + self.reachabilityManager = [AFNetworkReachabilityManager sharedManager]; + + self.mutableTaskDelegatesKeyedByTaskIdentifier = [[NSMutableDictionary alloc] init]; + + self.lock = [[NSLock alloc] init]; + self.lock.name = AFURLSessionManagerLockName; + + [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { + for (NSURLSessionDataTask *task in dataTasks) { + [self addDelegateForDataTask:task completionHandler:nil]; + } + + for (NSURLSessionUploadTask *uploadTask in uploadTasks) { + [self addDelegateForUploadTask:uploadTask progress:nil completionHandler:nil]; + } + + for (NSURLSessionDownloadTask *downloadTask in downloadTasks) { + [self addDelegateForDownloadTask:downloadTask progress:nil destination:nil completionHandler:nil]; + } + }]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidResume:) name:AFNSURLSessionTaskDidResumeNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidSuspend:) name:AFNSURLSessionTaskDidSuspendNotification object:nil]; + + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +#pragma mark - + +- (NSString *)taskDescriptionForSessionTasks { + return [NSString stringWithFormat:@"%p", self]; +} + +- (void)taskDidResume:(NSNotification *)notification { + NSURLSessionTask *task = notification.object; + if ([task respondsToSelector:@selector(taskDescription)]) { + if ([task.taskDescription isEqualToString:self.taskDescriptionForSessionTasks]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidResumeNotification object:task]; + }); + } + } +} + +- (void)taskDidSuspend:(NSNotification *)notification { + NSURLSessionTask *task = notification.object; + if ([task respondsToSelector:@selector(taskDescription)]) { + if ([task.taskDescription isEqualToString:self.taskDescriptionForSessionTasks]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidSuspendNotification object:task]; + }); + } + } +} + +#pragma mark - + +- (AFURLSessionManagerTaskDelegate *)delegateForTask:(NSURLSessionTask *)task { + NSParameterAssert(task); + + AFURLSessionManagerTaskDelegate *delegate = nil; + [self.lock lock]; + delegate = self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)]; + [self.lock unlock]; + + return delegate; +} + +- (void)setDelegate:(AFURLSessionManagerTaskDelegate *)delegate + forTask:(NSURLSessionTask *)task +{ + NSParameterAssert(task); + NSParameterAssert(delegate); + + [self.lock lock]; + self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)] = delegate; + [self.lock unlock]; +} + +- (void)addDelegateForDataTask:(NSURLSessionDataTask *)dataTask + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; + delegate.manager = self; + delegate.completionHandler = completionHandler; + + dataTask.taskDescription = self.taskDescriptionForSessionTasks; + [self setDelegate:delegate forTask:dataTask]; +} + +- (void)addDelegateForUploadTask:(NSURLSessionUploadTask *)uploadTask + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; + delegate.manager = self; + delegate.completionHandler = completionHandler; + + int64_t totalUnitCount = uploadTask.countOfBytesExpectedToSend; + if(totalUnitCount == NSURLSessionTransferSizeUnknown) { + NSString *contentLength = [uploadTask.originalRequest valueForHTTPHeaderField:@"Content-Length"]; + if(contentLength) { + totalUnitCount = (int64_t)[contentLength longLongValue]; + } + } + + if (delegate.progress) { + delegate.progress.totalUnitCount = totalUnitCount; + } else { + delegate.progress = [NSProgress progressWithTotalUnitCount:totalUnitCount]; + } + + delegate.progress.pausingHandler = ^{ + [uploadTask suspend]; + }; + delegate.progress.cancellationHandler = ^{ + [uploadTask cancel]; + }; + + if (progress) { + *progress = delegate.progress; + } + + uploadTask.taskDescription = self.taskDescriptionForSessionTasks; + + [self setDelegate:delegate forTask:uploadTask]; +} + +- (void)addDelegateForDownloadTask:(NSURLSessionDownloadTask *)downloadTask + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler +{ + AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; + delegate.manager = self; + delegate.completionHandler = completionHandler; + + if (destination) { + delegate.downloadTaskDidFinishDownloading = ^NSURL * (NSURLSession * __unused session, NSURLSessionDownloadTask *task, NSURL *location) { + return destination(location, task.response); + }; + } + + if (progress) { + *progress = delegate.progress; + } + + downloadTask.taskDescription = self.taskDescriptionForSessionTasks; + + [self setDelegate:delegate forTask:downloadTask]; +} + +- (void)removeDelegateForTask:(NSURLSessionTask *)task { + NSParameterAssert(task); + + [self.lock lock]; + [self.mutableTaskDelegatesKeyedByTaskIdentifier removeObjectForKey:@(task.taskIdentifier)]; + [self.lock unlock]; +} + +- (void)removeAllDelegates { + [self.lock lock]; + [self.mutableTaskDelegatesKeyedByTaskIdentifier removeAllObjects]; + [self.lock unlock]; +} + +#pragma mark - + +- (NSArray *)tasksForKeyPath:(NSString *)keyPath { + __block NSArray *tasks = nil; + dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); + [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { + if ([keyPath isEqualToString:NSStringFromSelector(@selector(dataTasks))]) { + tasks = dataTasks; + } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(uploadTasks))]) { + tasks = uploadTasks; + } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(downloadTasks))]) { + tasks = downloadTasks; + } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(tasks))]) { + tasks = [@[dataTasks, uploadTasks, downloadTasks] valueForKeyPath:@"@unionOfArrays.self"]; + } + + dispatch_semaphore_signal(semaphore); + }]; + + dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); + + return tasks; +} + +- (NSArray *)tasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +- (NSArray *)dataTasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +- (NSArray *)uploadTasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +- (NSArray *)downloadTasks { + return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; +} + +#pragma mark - + +- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks { + dispatch_async(dispatch_get_main_queue(), ^{ + if (cancelPendingTasks) { + [self.session invalidateAndCancel]; + } else { + [self.session finishTasksAndInvalidate]; + } + }); +} + +#pragma mark - + +- (void)setResponseSerializer:(id )responseSerializer { + NSParameterAssert(responseSerializer); + + _responseSerializer = responseSerializer; +} + +#pragma mark - + +- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionDataTask *dataTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + dataTask = [self.session dataTaskWithRequest:request]; + }); + + [self addDelegateForDataTask:dataTask completionHandler:completionHandler]; + + return dataTask; +} + +#pragma mark - + +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromFile:(NSURL *)fileURL + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionUploadTask *uploadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; + }); + + if (!uploadTask && self.attemptsToRecreateUploadTasksForBackgroundSessions && self.session.configuration.identifier) { + for (NSUInteger attempts = 0; !uploadTask && attempts < AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask; attempts++) { + uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; + } + } + + [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; + + return uploadTask; +} + +- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request + fromData:(NSData *)bodyData + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionUploadTask *uploadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + uploadTask = [self.session uploadTaskWithRequest:request fromData:bodyData]; + }); + + [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; + + return uploadTask; +} + +- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler +{ + __block NSURLSessionUploadTask *uploadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + uploadTask = [self.session uploadTaskWithStreamedRequest:request]; + }); + + [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; + + return uploadTask; +} + +#pragma mark - + +- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler +{ + __block NSURLSessionDownloadTask *downloadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + downloadTask = [self.session downloadTaskWithRequest:request]; + }); + + [self addDelegateForDownloadTask:downloadTask progress:progress destination:destination completionHandler:completionHandler]; + + return downloadTask; +} + +- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData + progress:(NSProgress * __autoreleasing *)progress + destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination + completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler +{ + __block NSURLSessionDownloadTask *downloadTask = nil; + dispatch_sync(url_session_manager_creation_queue(), ^{ + downloadTask = [self.session downloadTaskWithResumeData:resumeData]; + }); + + [self addDelegateForDownloadTask:downloadTask progress:progress destination:destination completionHandler:completionHandler]; + + return downloadTask; +} + +#pragma mark - + +- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask { + return [[self delegateForTask:uploadTask] progress]; +} + +- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask { + return [[self delegateForTask:downloadTask] progress]; +} + +#pragma mark - + +- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block { + self.sessionDidBecomeInvalid = block; +} + +- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { + self.sessionDidReceiveAuthenticationChallenge = block; +} + +- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block { + self.didFinishEventsForBackgroundURLSession = block; +} + +#pragma mark - + +- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block { + self.taskNeedNewBodyStream = block; +} + +- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block { + self.taskWillPerformHTTPRedirection = block; +} + +- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { + self.taskDidReceiveAuthenticationChallenge = block; +} + +- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block { + self.taskDidSendBodyData = block; +} + +- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block { + self.taskDidComplete = block; +} + +#pragma mark - + +- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block { + self.dataTaskDidReceiveResponse = block; +} + +- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block { + self.dataTaskDidBecomeDownloadTask = block; +} + +- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block { + self.dataTaskDidReceiveData = block; +} + +- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block { + self.dataTaskWillCacheResponse = block; +} + +#pragma mark - + +- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block { + self.downloadTaskDidFinishDownloading = block; +} + +- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block { + self.downloadTaskDidWriteData = block; +} + +- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block { + self.downloadTaskDidResume = block; +} + +#pragma mark - NSObject + +- (NSString *)description { + return [NSString stringWithFormat:@"<%@: %p, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, self.session, self.operationQueue]; +} + +- (BOOL)respondsToSelector:(SEL)selector { + if (selector == @selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)) { + return self.taskWillPerformHTTPRedirection != nil; + } else if (selector == @selector(URLSession:dataTask:didReceiveResponse:completionHandler:)) { + return self.dataTaskDidReceiveResponse != nil; + } else if (selector == @selector(URLSession:dataTask:willCacheResponse:completionHandler:)) { + return self.dataTaskWillCacheResponse != nil; + } else if (selector == @selector(URLSessionDidFinishEventsForBackgroundURLSession:)) { + return self.didFinishEventsForBackgroundURLSession != nil; + } + + return [[self class] instancesRespondToSelector:selector]; +} + +#pragma mark - NSURLSessionDelegate + +- (void)URLSession:(NSURLSession *)session +didBecomeInvalidWithError:(NSError *)error +{ + if (self.sessionDidBecomeInvalid) { + self.sessionDidBecomeInvalid(session, error); + } + + [self removeAllDelegates]; + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDidInvalidateNotification object:session]; +} + +- (void)URLSession:(NSURLSession *)session +didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler +{ + NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; + __block NSURLCredential *credential = nil; + + if (self.sessionDidReceiveAuthenticationChallenge) { + disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential); + } else { + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + if (credential) { + disposition = NSURLSessionAuthChallengeUseCredential; + } else { + disposition = NSURLSessionAuthChallengePerformDefaultHandling; + } + } else { + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + } + } else { + disposition = NSURLSessionAuthChallengePerformDefaultHandling; + } + } + + if (completionHandler) { + completionHandler(disposition, credential); + } +} + +#pragma mark - NSURLSessionTaskDelegate + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +willPerformHTTPRedirection:(NSHTTPURLResponse *)response + newRequest:(NSURLRequest *)request + completionHandler:(void (^)(NSURLRequest *))completionHandler +{ + NSURLRequest *redirectRequest = request; + + if (self.taskWillPerformHTTPRedirection) { + redirectRequest = self.taskWillPerformHTTPRedirection(session, task, response, request); + } + + if (completionHandler) { + completionHandler(redirectRequest); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler +{ + NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; + __block NSURLCredential *credential = nil; + + if (self.taskDidReceiveAuthenticationChallenge) { + disposition = self.taskDidReceiveAuthenticationChallenge(session, task, challenge, &credential); + } else { + if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { + if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { + disposition = NSURLSessionAuthChallengeUseCredential; + credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; + } else { + disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; + } + } else { + disposition = NSURLSessionAuthChallengePerformDefaultHandling; + } + } + + if (completionHandler) { + completionHandler(disposition, credential); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + needNewBodyStream:(void (^)(NSInputStream *bodyStream))completionHandler +{ + NSInputStream *inputStream = nil; + + if (self.taskNeedNewBodyStream) { + inputStream = self.taskNeedNewBodyStream(session, task); + } else if (task.originalRequest.HTTPBodyStream && [task.originalRequest.HTTPBodyStream conformsToProtocol:@protocol(NSCopying)]) { + inputStream = [task.originalRequest.HTTPBodyStream copy]; + } + + if (completionHandler) { + completionHandler(inputStream); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task + didSendBodyData:(int64_t)bytesSent + totalBytesSent:(int64_t)totalBytesSent +totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend +{ + + int64_t totalUnitCount = totalBytesExpectedToSend; + if(totalUnitCount == NSURLSessionTransferSizeUnknown) { + NSString *contentLength = [task.originalRequest valueForHTTPHeaderField:@"Content-Length"]; + if(contentLength) { + totalUnitCount = (int64_t) [contentLength longLongValue]; + } + } + + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; + [delegate URLSession:session task:task didSendBodyData:bytesSent totalBytesSent:totalBytesSent totalBytesExpectedToSend:totalUnitCount]; + + if (self.taskDidSendBodyData) { + self.taskDidSendBodyData(session, task, bytesSent, totalBytesSent, totalUnitCount); + } +} + +- (void)URLSession:(NSURLSession *)session + task:(NSURLSessionTask *)task +didCompleteWithError:(NSError *)error +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; + + // delegate may be nil when completing a task in the background + if (delegate) { + [delegate URLSession:session task:task didCompleteWithError:error]; + + [self removeDelegateForTask:task]; + } + + if (self.taskDidComplete) { + self.taskDidComplete(session, task, error); + } + +} + +#pragma mark - NSURLSessionDataDelegate + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didReceiveResponse:(NSURLResponse *)response + completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler +{ + NSURLSessionResponseDisposition disposition = NSURLSessionResponseAllow; + + if (self.dataTaskDidReceiveResponse) { + disposition = self.dataTaskDidReceiveResponse(session, dataTask, response); + } + + if (completionHandler) { + completionHandler(disposition); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask +didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:dataTask]; + if (delegate) { + [self removeDelegateForTask:dataTask]; + [self setDelegate:delegate forTask:downloadTask]; + } + + if (self.dataTaskDidBecomeDownloadTask) { + self.dataTaskDidBecomeDownloadTask(session, dataTask, downloadTask); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + didReceiveData:(NSData *)data +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:dataTask]; + [delegate URLSession:session dataTask:dataTask didReceiveData:data]; + + if (self.dataTaskDidReceiveData) { + self.dataTaskDidReceiveData(session, dataTask, data); + } +} + +- (void)URLSession:(NSURLSession *)session + dataTask:(NSURLSessionDataTask *)dataTask + willCacheResponse:(NSCachedURLResponse *)proposedResponse + completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler +{ + NSCachedURLResponse *cachedResponse = proposedResponse; + + if (self.dataTaskWillCacheResponse) { + cachedResponse = self.dataTaskWillCacheResponse(session, dataTask, proposedResponse); + } + + if (completionHandler) { + completionHandler(cachedResponse); + } +} + +- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { + if (self.didFinishEventsForBackgroundURLSession) { + dispatch_async(dispatch_get_main_queue(), ^{ + self.didFinishEventsForBackgroundURLSession(session); + }); + } +} + +#pragma mark - NSURLSessionDownloadDelegate + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask +didFinishDownloadingToURL:(NSURL *)location +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; + if (self.downloadTaskDidFinishDownloading) { + NSURL *fileURL = self.downloadTaskDidFinishDownloading(session, downloadTask, location); + if (fileURL) { + delegate.downloadFileURL = fileURL; + NSError *error = nil; + [[NSFileManager defaultManager] moveItemAtURL:location toURL:fileURL error:&error]; + if (error) { + [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:error.userInfo]; + } + + return; + } + } + + if (delegate) { + [delegate URLSession:session downloadTask:downloadTask didFinishDownloadingToURL:location]; + } +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didWriteData:(int64_t)bytesWritten + totalBytesWritten:(int64_t)totalBytesWritten +totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; + [delegate URLSession:session downloadTask:downloadTask didWriteData:bytesWritten totalBytesWritten:totalBytesWritten totalBytesExpectedToWrite:totalBytesExpectedToWrite]; + + if (self.downloadTaskDidWriteData) { + self.downloadTaskDidWriteData(session, downloadTask, bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } +} + +- (void)URLSession:(NSURLSession *)session + downloadTask:(NSURLSessionDownloadTask *)downloadTask + didResumeAtOffset:(int64_t)fileOffset +expectedTotalBytes:(int64_t)expectedTotalBytes +{ + AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; + [delegate URLSession:session downloadTask:downloadTask didResumeAtOffset:fileOffset expectedTotalBytes:expectedTotalBytes]; + + if (self.downloadTaskDidResume) { + self.downloadTaskDidResume(session, downloadTask, fileOffset, expectedTotalBytes); + } +} + +#pragma mark - NSSecureCoding + ++ (BOOL)supportsSecureCoding { + return YES; +} + +- (id)initWithCoder:(NSCoder *)decoder { + NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"]; + + self = [self initWithSessionConfiguration:configuration]; + if (!self) { + return nil; + } + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"]; +} + +#pragma mark - NSCopying + +- (id)copyWithZone:(NSZone *)zone { + return [[[self class] allocWithZone:zone] initWithSessionConfiguration:self.session.configuration]; +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE new file mode 100644 index 00000000000..91f125b005e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md new file mode 100644 index 00000000000..916a242f9b2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md @@ -0,0 +1,385 @@ +

    + AFNetworking +

    + +[![Build Status](https://travis-ci.org/AFNetworking/AFNetworking.svg)](https://travis-ci.org/AFNetworking/AFNetworking) + +AFNetworking is a delightful networking library for iOS and Mac OS X. It's built on top of the [Foundation URL Loading System](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html), extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. + +Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac. + +Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did! + +## How To Get Started + +- [Download AFNetworking](https://github.com/AFNetworking/AFNetworking/archive/master.zip) and try out the included Mac and iPhone example apps +- Read the ["Getting Started" guide](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking), [FAQ](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ), or [other articles on the Wiki](https://github.com/AFNetworking/AFNetworking/wiki) +- Check out the [documentation](http://cocoadocs.org/docsets/AFNetworking/) for a comprehensive look at all of the APIs available in AFNetworking +- Read the [AFNetworking 2.0 Migration Guide](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-2.0-Migration-Guide) for an overview of the architectural changes from 1.0. + +## Communication + +- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking). (Tag 'afnetworking') +- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking). +- If you **found a bug**, _and can provide steps to reliably reproduce it_, open an issue. +- If you **have a feature request**, open an issue. +- If you **want to contribute**, submit a pull request. + +### Installation with CocoaPods + +[CocoaPods](http://cocoapods.org) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like AFNetworking in your projects. See the ["Getting Started" guide for more information](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking). + +#### Podfile + +```ruby +platform :ios, '7.0' +pod "AFNetworking", "~> 2.0" +``` + +## Requirements + +| AFNetworking Version | Minimum iOS Target | Minimum OS X Target | Notes | +|:--------------------:|:---------------------------:|:----------------------------:|:-------------------------------------------------------------------------:| +| 2.x | iOS 6 | OS X 10.8 | Xcode 5 is required. `NSURLSession` subspec requires iOS 7 or OS X 10.9. | +| [1.x](https://github.com/AFNetworking/AFNetworking/tree/1.x) | iOS 5 | Mac OS X 10.7 | | +| [0.10.x](https://github.com/AFNetworking/AFNetworking/tree/0.10.x) | iOS 4 | Mac OS X 10.6 | | + +(OS X projects must support [64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)). + +> Programming in Swift? Try [Alamofire](https://github.com/Alamofire/Alamofire) for a more conventional set of APIs. + +## Architecture + +### NSURLConnection + +- `AFURLConnectionOperation` +- `AFHTTPRequestOperation` +- `AFHTTPRequestOperationManager` + +### NSURLSession _(iOS 7 / Mac OS X 10.9)_ + +- `AFURLSessionManager` +- `AFHTTPSessionManager` + +### Serialization + +* `` + - `AFHTTPRequestSerializer` + - `AFJSONRequestSerializer` + - `AFPropertyListRequestSerializer` +* `` + - `AFHTTPResponseSerializer` + - `AFJSONResponseSerializer` + - `AFXMLParserResponseSerializer` + - `AFXMLDocumentResponseSerializer` _(Mac OS X)_ + - `AFPropertyListResponseSerializer` + - `AFImageResponseSerializer` + - `AFCompoundResponseSerializer` + +### Additional Functionality + +- `AFSecurityPolicy` +- `AFNetworkReachabilityManager` + +## Usage + +### HTTP Request Operation Manager + +`AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. + +#### `GET` Request + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"JSON: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +``` + +#### `POST` URL-Form-Encoded Request + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +NSDictionary *parameters = @{@"foo": @"bar"}; +[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"JSON: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +``` + +#### `POST` Multi-Part Request + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +NSDictionary *parameters = @{@"foo": @"bar"}; +NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; +[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileURL:filePath name:@"image" error:nil]; +} success:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"Success: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +``` + +--- + +### AFURLSessionManager + +`AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to ``, ``, ``, and ``. + +#### Creating a Download Task + +```objective-c +NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + +NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + +NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { + NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; + return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; +} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { + NSLog(@"File downloaded to: %@", filePath); +}]; +[downloadTask resume]; +``` + +#### Creating an Upload Task + +```objective-c +NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + +NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + +NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; +NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } else { + NSLog(@"Success: %@ %@", response, responseObject); + } +}]; +[uploadTask resume]; +``` + +#### Creating an Upload Task for a Multi-Part Request, with Progress + +```objective-c +NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil]; + } error:nil]; + +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; +NSProgress *progress = nil; + +NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } else { + NSLog(@"%@ %@", response, responseObject); + } +}]; + +[uploadTask resume]; +``` + +#### Creating a Data Task + +```objective-c +NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; +AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; + +NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; + +NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { + if (error) { + NSLog(@"Error: %@", error); + } else { + NSLog(@"%@ %@", response, responseObject); + } +}]; +[dataTask resume]; +``` + +--- + +### Request Serialization + +Request serializers create requests from URL strings, encoding parameters as either a query string or HTTP body. + +```objective-c +NSString *URLString = @"http://example.com"; +NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]}; +``` + +#### Query String Parameter Encoding + +```objective-c +[[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:URLString parameters:parameters error:nil]; +``` + + GET http://example.com?foo=bar&baz[]=1&baz[]=2&baz[]=3 + +#### URL Form Parameter Encoding + +```objective-c +[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; +``` + + POST http://example.com/ + Content-Type: application/x-www-form-urlencoded + + foo=bar&baz[]=1&baz[]=2&baz[]=3 + +#### JSON Parameter Encoding + +```objective-c +[[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; +``` + + POST http://example.com/ + Content-Type: application/json + + {"foo": "bar", "baz": [1,2,3]} + +--- + +### Network Reachability Manager + +`AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. + +**Network reachability is a diagnostic tool that can be used to understand why a request might have failed. It should not be used to determine whether or not to make a request.** + +#### Shared Network Reachability + +```objective-c +[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); +}]; +``` + +#### HTTP Manager Reachability + +```objective-c +NSURL *baseURL = [NSURL URLWithString:@"http://example.com/"]; +AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; + +NSOperationQueue *operationQueue = manager.operationQueue; +[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + switch (status) { + case AFNetworkReachabilityStatusReachableViaWWAN: + case AFNetworkReachabilityStatusReachableViaWiFi: + [operationQueue setSuspended:NO]; + break; + case AFNetworkReachabilityStatusNotReachable: + default: + [operationQueue setSuspended:YES]; + break; + } +}]; + +[manager.reachabilityManager startMonitoring]; +``` + +--- + +### Security Policy + +`AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. + +Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. + +#### Allowing Invalid SSL Certificates + +```objective-c +AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; +manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production +``` + +--- + +### AFHTTPRequestOperation + +`AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. + +Although `AFHTTPRequestOperationManager` is usually the best way to go about making requests, `AFHTTPRequestOperation` can be used by itself. + +#### `GET` with `AFHTTPRequestOperation` + +```objective-c +NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"]; +NSURLRequest *request = [NSURLRequest requestWithURL:URL]; +AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; +op.responseSerializer = [AFJSONResponseSerializer serializer]; +[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + NSLog(@"JSON: %@", responseObject); +} failure:^(AFHTTPRequestOperation *operation, NSError *error) { + NSLog(@"Error: %@", error); +}]; +[[NSOperationQueue mainQueue] addOperation:op]; +``` + +#### Batch of Operations + +```objective-c +NSMutableArray *mutableOperations = [NSMutableArray array]; +for (NSURL *fileURL in filesToUpload) { + NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id formData) { + [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil]; + }]; + + AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; + + [mutableOperations addObject:operation]; +} + +NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) { + NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations); +} completionBlock:^(NSArray *operations) { + NSLog(@"All operations in batch complete"); +}]; +[[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO]; +``` + +## Unit Tests + +AFNetworking includes a suite of unit tests within the Tests subdirectory. In order to run the unit tests, you must install the testing dependencies via [CocoaPods](http://cocoapods.org/): + + $ cd Tests + $ pod install + +Once testing dependencies are installed, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. + +### Running Tests from the Command Line + +Tests can also be run from the command line or within a continuous integration environment. The [`xcpretty`](https://github.com/mneorr/xcpretty) utility needs to be installed before running the tests from the command line: + + $ gem install xcpretty + +Once `xcpretty` is installed, you can execute the suite via `rake test`. + +## Credits + +AFNetworking is owned and maintained by the [Alamofire Software Foundation](http://alamofire.org). + +AFNetworking was originally created by [Scott Raymond](https://github.com/sco/) and [Mattt Thompson](https://github.com/mattt/) in the development of [Gowalla for iPhone](http://en.wikipedia.org/wiki/Gowalla). + +AFNetworking's logo was designed by [Alan Defibaugh](http://www.alandefibaugh.com/). + +And most of all, thanks to AFNetworking's [growing list of contributors](https://github.com/AFNetworking/AFNetworking/contributors). + +### Security Disclosure + +If you believe you have identified a security vulnerability with AFNetworking, you should report it as soon as possible via email to security@alamofire.org. Please do not post it to a public issue tracker. + +## License + +AFNetworking is released under the MIT license. See LICENSE for details. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 100644 index 00000000000..8242035869c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1,75 @@ +// AFNetworkActivityIndicatorManager.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +/** + `AFNetworkActivityIndicatorManager` manages the state of the network activity indicator in the status bar. When enabled, it will listen for notifications indicating that a network request operation has started or finished, and start or stop animating the indicator accordingly. The number of active requests is incremented and decremented much like a stack or a semaphore, and the activity indicator will animate so long as that number is greater than zero. + + You should enable the shared instance of `AFNetworkActivityIndicatorManager` when your application finishes launching. In `AppDelegate application:didFinishLaunchingWithOptions:` you can do so with the following code: + + [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; + + By setting `enabled` to `YES` for `sharedManager`, the network activity indicator will show and hide automatically as requests start and finish. You should not ever need to call `incrementActivityCount` or `decrementActivityCount` yourself. + + See the Apple Human Interface Guidelines section about the Network Activity Indicator for more information: + http://developer.apple.com/library/iOS/#documentation/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW44 + */ +@interface AFNetworkActivityIndicatorManager : NSObject + +/** + A Boolean value indicating whether the manager is enabled. + + If YES, the manager will change status bar network activity indicator according to network operation notifications it receives. The default value is NO. + */ +@property (nonatomic, assign, getter = isEnabled) BOOL enabled; + +/** + A Boolean value indicating whether the network activity indicator is currently displayed in the status bar. + */ +@property (readonly, nonatomic, assign) BOOL isNetworkActivityIndicatorVisible; + +/** + Returns the shared network activity indicator manager object for the system. + + @return The systemwide network activity indicator manager. + */ ++ (instancetype)sharedManager; + +/** + Increments the number of active network requests. If this number was zero before incrementing, this will start animating the status bar network activity indicator. + */ +- (void)incrementActivityCount; + +/** + Decrements the number of active network requests. If this number becomes zero after decrementing, this will stop animating the status bar network activity indicator. + */ +- (void)decrementActivityCount; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m new file mode 100644 index 00000000000..82c6cc3d54e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m @@ -0,0 +1,172 @@ +// AFNetworkActivityIndicatorManager.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "AFNetworkActivityIndicatorManager.h" + +#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) + +#import "AFHTTPRequestOperation.h" + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 +#import "AFURLSessionManager.h" +#endif + +static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; + +static NSURLRequest * AFNetworkRequestFromNotification(NSNotification *notification) { + if ([[notification object] isKindOfClass:[AFURLConnectionOperation class]]) { + return [(AFURLConnectionOperation *)[notification object] request]; + } + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 + if ([[notification object] respondsToSelector:@selector(originalRequest)]) { + return [(NSURLSessionTask *)[notification object] originalRequest]; + } +#endif + + return nil; +} + +@interface AFNetworkActivityIndicatorManager () +@property (readwrite, nonatomic, assign) NSInteger activityCount; +@property (readwrite, nonatomic, strong) NSTimer *activityIndicatorVisibilityTimer; +@property (readonly, nonatomic, getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; + +- (void)updateNetworkActivityIndicatorVisibility; +- (void)updateNetworkActivityIndicatorVisibilityDelayed; +@end + +@implementation AFNetworkActivityIndicatorManager +@dynamic networkActivityIndicatorVisible; + ++ (instancetype)sharedManager { + static AFNetworkActivityIndicatorManager *_sharedManager = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _sharedManager = [[self alloc] init]; + }); + + return _sharedManager; +} + ++ (NSSet *)keyPathsForValuesAffectingIsNetworkActivityIndicatorVisible { + return [NSSet setWithObject:@"activityCount"]; +} + +- (id)init { + self = [super init]; + if (!self) { + return nil; + } + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingOperationDidStartNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingOperationDidFinishNotification object:nil]; + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingTaskDidResumeNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidSuspendNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidCompleteNotification object:nil]; +#endif + + return self; +} + +- (void)dealloc { + [[NSNotificationCenter defaultCenter] removeObserver:self]; + + [_activityIndicatorVisibilityTimer invalidate]; +} + +- (void)updateNetworkActivityIndicatorVisibilityDelayed { + if (self.enabled) { + // Delay hiding of activity indicator for a short interval, to avoid flickering + if (![self isNetworkActivityIndicatorVisible]) { + [self.activityIndicatorVisibilityTimer invalidate]; + self.activityIndicatorVisibilityTimer = [NSTimer timerWithTimeInterval:kAFNetworkActivityIndicatorInvisibilityDelay target:self selector:@selector(updateNetworkActivityIndicatorVisibility) userInfo:nil repeats:NO]; + [[NSRunLoop mainRunLoop] addTimer:self.activityIndicatorVisibilityTimer forMode:NSRunLoopCommonModes]; + } else { + [self performSelectorOnMainThread:@selector(updateNetworkActivityIndicatorVisibility) withObject:nil waitUntilDone:NO modes:@[NSRunLoopCommonModes]]; + } + } +} + +- (BOOL)isNetworkActivityIndicatorVisible { + return self.activityCount > 0; +} + +- (void)updateNetworkActivityIndicatorVisibility { +#if !defined(AF_APP_EXTENSIONS) + [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:[self isNetworkActivityIndicatorVisible]]; +#endif +} + +- (void)setActivityCount:(NSInteger)activityCount { + @synchronized(self) { + _activityCount = activityCount; + } + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)incrementActivityCount { + [self willChangeValueForKey:@"activityCount"]; + @synchronized(self) { + _activityCount++; + } + [self didChangeValueForKey:@"activityCount"]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)decrementActivityCount { + [self willChangeValueForKey:@"activityCount"]; + @synchronized(self) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + _activityCount = MAX(_activityCount - 1, 0); +#pragma clang diagnostic pop + } + [self didChangeValueForKey:@"activityCount"]; + + dispatch_async(dispatch_get_main_queue(), ^{ + [self updateNetworkActivityIndicatorVisibilityDelayed]; + }); +} + +- (void)networkRequestDidStart:(NSNotification *)notification { + if ([AFNetworkRequestFromNotification(notification) URL]) { + [self incrementActivityCount]; + } +} + +- (void)networkRequestDidFinish:(NSNotification *)notification { + if ([AFNetworkRequestFromNotification(notification) URL]) { + [self decrementActivityCount]; + } +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h new file mode 100644 index 00000000000..06e89c487ab --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1,63 @@ +// UIActivityIndicatorView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIActivityIndicatorView` class. The methods in this category provide support for automatically starting and stopping animation depending on the loading state of a request operation or session task. + */ +@interface UIActivityIndicatorView (AFNetworking) + +///---------------------------------- +/// @name Animating for Session Tasks +///---------------------------------- + +/** + Binds the animating state to the state of the specified task. + + @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setAnimatingWithStateOfTask:(NSURLSessionTask *)task; +#endif + +///--------------------------------------- +/// @name Animating for Request Operations +///--------------------------------------- + +/** + Binds the animating state to the execution state of the specified operation. + + @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +- (void)setAnimatingWithStateOfOperation:(AFURLConnectionOperation *)operation; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m new file mode 100644 index 00000000000..1a36091b7b0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m @@ -0,0 +1,96 @@ +// UIActivityIndicatorView+AFNetworking.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIActivityIndicatorView+AFNetworking.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +@implementation UIActivityIndicatorView (AFNetworking) + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setAnimatingWithStateOfTask:(NSURLSessionTask *)task { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingTaskDidResumeNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidSuspendNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidCompleteNotification object:nil]; + + if (task) { + if (task.state != NSURLSessionTaskStateCompleted) { + if (task.state == NSURLSessionTaskStateRunning) { + [self startAnimating]; + } else { + [self stopAnimating]; + } + + [notificationCenter addObserver:self selector:@selector(af_startAnimating) name:AFNetworkingTaskDidResumeNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingTaskDidCompleteNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingTaskDidSuspendNotification object:task]; + } + } +} +#endif + +#pragma mark - + +- (void)setAnimatingWithStateOfOperation:(AFURLConnectionOperation *)operation { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingOperationDidStartNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingOperationDidFinishNotification object:nil]; + + if (operation) { + if (![operation isFinished]) { + if ([operation isExecuting]) { + [self startAnimating]; + } else { + [self stopAnimating]; + } + + [notificationCenter addObserver:self selector:@selector(af_startAnimating) name:AFNetworkingOperationDidStartNotification object:operation]; + [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingOperationDidFinishNotification object:operation]; + } + } +} + +#pragma mark - + +- (void)af_startAnimating { + dispatch_async(dispatch_get_main_queue(), ^{ + [self startAnimating]; + }); +} + +- (void)af_stopAnimating { + dispatch_async(dispatch_get_main_queue(), ^{ + [self stopAnimating]; + }); +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h new file mode 100644 index 00000000000..80eddc16a70 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h @@ -0,0 +1,95 @@ +// UIAlertView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIAlertView` class. The methods in this category provide support for automatically showing an alert if a session task or request operation finishes with an error. Alert title and message are filled from the corresponding `localizedDescription` & `localizedRecoverySuggestion` or `localizedFailureReason` of the error. + */ +@interface UIAlertView (AFNetworking) + +///------------------------------------- +/// @name Showing Alert for Session Task +///------------------------------------- + +/** + Shows an alert view with the error of the specified session task, if any. + + @param task The session task. + @param delegate The alert view delegate. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate; +#endif + +/** + Shows an alert view with the error of the specified session task, if any, with a custom cancel button title and other button titles. + + @param task The session task. + @param delegate The alert view delegate. + @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. + @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; +#endif + +///------------------------------------------ +/// @name Showing Alert for Request Operation +///------------------------------------------ + +/** + Shows an alert view with the error of the specified request operation, if any. + + @param operation The request operation. + @param delegate The alert view delegate. + */ ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate; + +/** + Shows an alert view with the error of the specified request operation, if any, with a custom cancel button title and other button titles. + + @param operation The request operation. + @param delegate The alert view delegate. + @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. + @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. + */ ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m new file mode 100644 index 00000000000..a128544f16c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m @@ -0,0 +1,141 @@ +// UIAlertView+AFNetworking.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIAlertView+AFNetworking.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) + +#import "AFURLConnectionOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +static void AFGetAlertViewTitleAndMessageFromError(NSError *error, NSString * __autoreleasing *title, NSString * __autoreleasing *message) { + if (error.localizedDescription && (error.localizedRecoverySuggestion || error.localizedFailureReason)) { + *title = error.localizedDescription; + + if (error.localizedRecoverySuggestion) { + *message = error.localizedRecoverySuggestion; + } else { + *message = error.localizedFailureReason; + } + } else if (error.localizedDescription) { + *title = NSLocalizedStringFromTable(@"Error", @"AFNetworking", @"Fallback Error Description"); + *message = error.localizedDescription; + } else { + *title = NSLocalizedStringFromTable(@"Error", @"AFNetworking", @"Fallback Error Description"); + *message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"%@ Error: %ld", @"AFNetworking", @"Fallback Error Failure Reason Format"), error.domain, (long)error.code]; + } +} + +@implementation UIAlertView (AFNetworking) + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate +{ + [self showAlertViewForTaskWithErrorOnCompletion:task delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil]; +} + ++ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION +{ + NSMutableArray *mutableOtherTitles = [NSMutableArray array]; + va_list otherButtonTitleList; + va_start(otherButtonTitleList, otherButtonTitles); + { + for (NSString *otherButtonTitle = otherButtonTitles; otherButtonTitle != nil; otherButtonTitle = va_arg(otherButtonTitleList, NSString *)) { + [mutableOtherTitles addObject:otherButtonTitle]; + } + } + va_end(otherButtonTitleList); + + __block __weak id observer = [[NSNotificationCenter defaultCenter] addObserverForName:AFNetworkingTaskDidCompleteNotification object:task queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { + NSError *error = notification.userInfo[AFNetworkingTaskDidCompleteErrorKey]; + if (error) { + NSString *title, *message; + AFGetAlertViewTitleAndMessageFromError(error, &title, &message); + + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil, nil]; + for (NSString *otherButtonTitle in mutableOtherTitles) { + [alertView addButtonWithTitle:otherButtonTitle]; + } + [alertView setTitle:title]; + [alertView setMessage:message]; + [alertView show]; + } + + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + }]; +} +#endif + +#pragma mark - + ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate +{ + [self showAlertViewForRequestOperationWithErrorOnCompletion:operation delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil]; +} + ++ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation + delegate:(id)delegate + cancelButtonTitle:(NSString *)cancelButtonTitle + otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION +{ + NSMutableArray *mutableOtherTitles = [NSMutableArray array]; + va_list otherButtonTitleList; + va_start(otherButtonTitleList, otherButtonTitles); + { + for (NSString *otherButtonTitle = otherButtonTitles; otherButtonTitle != nil; otherButtonTitle = va_arg(otherButtonTitleList, NSString *)) { + [mutableOtherTitles addObject:otherButtonTitle]; + } + } + va_end(otherButtonTitleList); + + __block __weak id observer = [[NSNotificationCenter defaultCenter] addObserverForName:AFNetworkingOperationDidFinishNotification object:operation queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { + + if (notification.object && [notification.object isKindOfClass:[AFURLConnectionOperation class]]) { + NSError *error = [(AFURLConnectionOperation *)notification.object error]; + if (error) { + NSString *title, *message; + AFGetAlertViewTitleAndMessageFromError(error, &title, &message); + + UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil, nil]; + for (NSString *otherButtonTitle in mutableOtherTitles) { + [alertView addButtonWithTitle:otherButtonTitle]; + } + [alertView setTitle:title]; + [alertView setMessage:message]; + [alertView show]; + } + } + + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + }]; +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h new file mode 100644 index 00000000000..6c09b7aefb2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h @@ -0,0 +1,180 @@ +// UIButton+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@protocol AFURLResponseSerialization, AFImageCache; + +/** + This category adds methods to the UIKit framework's `UIButton` class. The methods in this category provide support for loading remote images and background images asynchronously from a URL. + + @warning Compound values for control `state` (such as `UIControlStateHighlighted | UIControlStateDisabled`) are unsupported. + */ +@interface UIButton (AFNetworking) + +///---------------------------- +/// @name Accessing Image Cache +///---------------------------- + +/** + The image cache used to improve image loadiing performance on scroll views. By default, `UIButton` will use the `sharedImageCache` of `UIImageView`. + */ ++ (id )sharedImageCache; + +/** + Set the cache used for image loading. + + @param imageCache The image cache. + */ ++ (void)setSharedImageCache:(id )imageCache; + +///------------------------------------ +/// @name Accessing Response Serializer +///------------------------------------ + +/** + The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. + + @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer + */ +@property (nonatomic, strong) id imageResponseSerializer; + +///-------------------- +/// @name Setting Image +///-------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the image request. + */ +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. + */ +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setImage:forState:` is applied. + + @param state The control state. + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes two arguments: the server response and the image. If the image was returned from cache, the request and response parameters will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)setImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure; + + +///------------------------------- +/// @name Setting Background Image +///------------------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous background image request for the receiver will be cancelled. + + If the background image is cached locally, the background image is set immediately, otherwise the specified placeholder background image will be set immediately, and then the remote background image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the background image request. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + @param state The control state. + @param url The URL used for the background image request. + @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setBackgroundImage:forState:` is applied. + + @param state The control state. + @param urlRequest The URL request used for the image request. + @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. + */ +- (void)setBackgroundImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure; + + +///------------------------------ +/// @name Canceling Image Loading +///------------------------------ + +/** + Cancels any executing image operation for the specified control state of the receiver, if one exists. + + @param state The control state. + */ +- (void)cancelImageRequestOperationForState:(UIControlState)state; + +/** + Cancels any executing background image operation for the specified control state of the receiver, if one exists. + + @param state The control state. + */ +- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m new file mode 100644 index 00000000000..f34631e1898 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m @@ -0,0 +1,293 @@ +// UIButton+AFNetworking.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIButton+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFURLResponseSerialization.h" +#import "AFHTTPRequestOperation.h" + +#import "UIImageView+AFNetworking.h" + +@interface UIButton (_AFNetworking) +@end + +@implementation UIButton (_AFNetworking) + ++ (NSOperationQueue *)af_sharedImageRequestOperationQueue { + static NSOperationQueue *_af_sharedImageRequestOperationQueue = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_sharedImageRequestOperationQueue = [[NSOperationQueue alloc] init]; + _af_sharedImageRequestOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; + }); + + return _af_sharedImageRequestOperationQueue; +} + +#pragma mark - + +static char AFImageRequestOperationNormal; +static char AFImageRequestOperationHighlighted; +static char AFImageRequestOperationSelected; +static char AFImageRequestOperationDisabled; + +static const char * af_imageRequestOperationKeyForState(UIControlState state) { + switch (state) { + case UIControlStateHighlighted: + return &AFImageRequestOperationHighlighted; + case UIControlStateSelected: + return &AFImageRequestOperationSelected; + case UIControlStateDisabled: + return &AFImageRequestOperationDisabled; + case UIControlStateNormal: + default: + return &AFImageRequestOperationNormal; + } +} + +- (AFHTTPRequestOperation *)af_imageRequestOperationForState:(UIControlState)state { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, af_imageRequestOperationKeyForState(state)); +} + +- (void)af_setImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation + forState:(UIControlState)state +{ + objc_setAssociatedObject(self, af_imageRequestOperationKeyForState(state), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +static char AFBackgroundImageRequestOperationNormal; +static char AFBackgroundImageRequestOperationHighlighted; +static char AFBackgroundImageRequestOperationSelected; +static char AFBackgroundImageRequestOperationDisabled; + +static const char * af_backgroundImageRequestOperationKeyForState(UIControlState state) { + switch (state) { + case UIControlStateHighlighted: + return &AFBackgroundImageRequestOperationHighlighted; + case UIControlStateSelected: + return &AFBackgroundImageRequestOperationSelected; + case UIControlStateDisabled: + return &AFBackgroundImageRequestOperationDisabled; + case UIControlStateNormal: + default: + return &AFBackgroundImageRequestOperationNormal; + } +} + +- (AFHTTPRequestOperation *)af_backgroundImageRequestOperationForState:(UIControlState)state { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, af_backgroundImageRequestOperationKeyForState(state)); +} + +- (void)af_setBackgroundImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation + forState:(UIControlState)state +{ + objc_setAssociatedObject(self, af_backgroundImageRequestOperationKeyForState(state), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - + +@implementation UIButton (AFNetworking) + ++ (id )sharedImageCache { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(sharedImageCache)) ?: [UIImageView sharedImageCache]; +#pragma clang diagnostic pop +} + ++ (void)setSharedImageCache:(id )imageCache { + objc_setAssociatedObject(self, @selector(sharedImageCache), imageCache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (id )imageResponseSerializer { + static id _af_defaultImageResponseSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultImageResponseSerializer = [AFImageResponseSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(imageResponseSerializer)) ?: _af_defaultImageResponseSerializer; +#pragma clang diagnostic pop +} + +- (void)setImageResponseSerializer:(id )serializer { + objc_setAssociatedObject(self, @selector(imageResponseSerializer), serializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url +{ + [self setImageForState:state withURL:url placeholderImage:nil]; +} + +- (void)setImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setImageForState:state withURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure +{ + [self cancelImageRequestOperationForState:state]; + + UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + if (success) { + success(nil, nil, cachedImage); + } else { + [self setImage:cachedImage forState:state]; + } + + [self af_setImageRequestOperation:nil forState:state]; + } else { + if (placeholderImage) { + [self setImage:placeholderImage forState:state]; + } + + __weak __typeof(self)weakSelf = self; + AFHTTPRequestOperation *imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + imageRequestOperation.responseSerializer = self.imageResponseSerializer; + [imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (success) { + success(operation.request, operation.response, responseObject); + } else if (responseObject) { + [strongSelf setImage:responseObject forState:state]; + } + } + [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (failure) { + failure(error); + } + } + }]; + + [self af_setImageRequestOperation:imageRequestOperation forState:state]; + [[[self class] af_sharedImageRequestOperationQueue] addOperation:imageRequestOperation]; + } +} + +#pragma mark - + +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url +{ + [self setBackgroundImageForState:state withURL:url placeholderImage:nil]; +} + +- (void)setBackgroundImageForState:(UIControlState)state + withURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setBackgroundImageForState:state withURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setBackgroundImageForState:(UIControlState)state + withURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSError *error))failure +{ + [self cancelBackgroundImageRequestOperationForState:state]; + + UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + if (success) { + success(nil, nil, cachedImage); + } else { + [self setBackgroundImage:cachedImage forState:state]; + } + + [self af_setBackgroundImageRequestOperation:nil forState:state]; + } else { + if (placeholderImage) { + [self setBackgroundImage:placeholderImage forState:state]; + } + + __weak __typeof(self)weakSelf = self; + AFHTTPRequestOperation *backgroundImageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + backgroundImageRequestOperation.responseSerializer = self.imageResponseSerializer; + [backgroundImageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (success) { + success(operation.request, operation.response, responseObject); + } else if (responseObject) { + [strongSelf setBackgroundImage:responseObject forState:state]; + } + } + [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if ([[urlRequest URL] isEqual:[operation.request URL]]) { + if (failure) { + failure(error); + } + } + }]; + + [self af_setBackgroundImageRequestOperation:backgroundImageRequestOperation forState:state]; + [[[self class] af_sharedImageRequestOperationQueue] addOperation:backgroundImageRequestOperation]; + } +} + +#pragma mark - + +- (void)cancelImageRequestOperationForState:(UIControlState)state { + [[self af_imageRequestOperationForState:state] cancel]; + [self af_setImageRequestOperation:nil forState:state]; +} + +- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state { + [[self af_backgroundImageRequestOperationForState:state] cancel]; + [self af_setBackgroundImageRequestOperation:nil forState:state]; +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h new file mode 100644 index 00000000000..2fdff9ff9b3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1,142 @@ +// UIImageView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@protocol AFURLResponseSerialization, AFImageCache; + +/** + This category adds methods to the UIKit framework's `UIImageView` class. The methods in this category provide support for loading remote images asynchronously from a URL. + */ +@interface UIImageView (AFNetworking) + +///---------------------------- +/// @name Accessing Image Cache +///---------------------------- + +/** + The image cache used to improve image loading performance on scroll views. By default, this is an `NSCache` subclass conforming to the `AFImageCache` protocol, which listens for notification warnings and evicts objects accordingly. +*/ ++ (id )sharedImageCache; + +/** + Set the cache used for image loading. + + @param imageCache The image cache. + */ ++ (void)setSharedImageCache:(id )imageCache; + +///------------------------------------ +/// @name Accessing Response Serializer +///------------------------------------ + +/** + The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. + + @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer + */ +@property (nonatomic, strong) id imageResponseSerializer; + +///-------------------- +/// @name Setting Image +///-------------------- + +/** + Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + */ +- (void)setImageWithURL:(NSURL *)url; + +/** + Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` + + @param url The URL used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + */ +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage; + +/** + Asynchronously downloads an image from the specified URL request, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. + + If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. + + If a success block is specified, it is the responsibility of the block to set the image of the image view before returning. If no success block is specified, the default behavior of setting the image with `self.image = image` is applied. + + @param urlRequest The URL request used for the image request. + @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. + @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the image created from the response data of request. If the image was returned from cache, the request and response parameters will be `nil`. + @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error object describing the network or parsing error that occurred. + */ +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; + +/** + Cancels any executing image operation for the receiver, if one exists. + */ +- (void)cancelImageRequestOperation; + +@end + +#pragma mark - + +/** + The `AFImageCache` protocol is adopted by an object used to cache images loaded by the AFNetworking category on `UIImageView`. + */ +@protocol AFImageCache + +/** + Returns a cached image for the specififed request, if available. + + @param request The image request. + + @return The cached image. + */ +- (UIImage *)cachedImageForRequest:(NSURLRequest *)request; + +/** + Caches a particular image for the specified request. + + @param image The image to cache. + @param request The request to be used as a cache key. + */ +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request; +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m new file mode 100644 index 00000000000..1400b4a0609 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m @@ -0,0 +1,215 @@ +// UIImageView+AFNetworking.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIImageView+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" + +@interface AFImageCache : NSCache +@end + +#pragma mark - + +@interface UIImageView (_AFNetworking) +@property (readwrite, nonatomic, strong, setter = af_setImageRequestOperation:) AFHTTPRequestOperation *af_imageRequestOperation; +@end + +@implementation UIImageView (_AFNetworking) + ++ (NSOperationQueue *)af_sharedImageRequestOperationQueue { + static NSOperationQueue *_af_sharedImageRequestOperationQueue = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_sharedImageRequestOperationQueue = [[NSOperationQueue alloc] init]; + _af_sharedImageRequestOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; + }); + + return _af_sharedImageRequestOperationQueue; +} + +- (AFHTTPRequestOperation *)af_imageRequestOperation { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, @selector(af_imageRequestOperation)); +} + +- (void)af_setImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation { + objc_setAssociatedObject(self, @selector(af_imageRequestOperation), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - + +@implementation UIImageView (AFNetworking) +@dynamic imageResponseSerializer; + ++ (id )sharedImageCache { + static AFImageCache *_af_defaultImageCache = nil; + static dispatch_once_t oncePredicate; + dispatch_once(&oncePredicate, ^{ + _af_defaultImageCache = [[AFImageCache alloc] init]; + + [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * __unused notification) { + [_af_defaultImageCache removeAllObjects]; + }]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(sharedImageCache)) ?: _af_defaultImageCache; +#pragma clang diagnostic pop +} + ++ (void)setSharedImageCache:(id )imageCache { + objc_setAssociatedObject(self, @selector(sharedImageCache), imageCache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (id )imageResponseSerializer { + static id _af_defaultImageResponseSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultImageResponseSerializer = [AFImageResponseSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(imageResponseSerializer)) ?: _af_defaultImageResponseSerializer; +#pragma clang diagnostic pop +} + +- (void)setImageResponseSerializer:(id )serializer { + objc_setAssociatedObject(self, @selector(imageResponseSerializer), serializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (void)setImageWithURL:(NSURL *)url { + [self setImageWithURL:url placeholderImage:nil]; +} + +- (void)setImageWithURL:(NSURL *)url + placeholderImage:(UIImage *)placeholderImage +{ + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; + + [self setImageWithURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; +} + +- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest + placeholderImage:(UIImage *)placeholderImage + success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success + failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure +{ + [self cancelImageRequestOperation]; + + UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; + if (cachedImage) { + if (success) { + success(nil, nil, cachedImage); + } else { + self.image = cachedImage; + } + + self.af_imageRequestOperation = nil; + } else { + if (placeholderImage) { + self.image = placeholderImage; + } + + __weak __typeof(self)weakSelf = self; + self.af_imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; + self.af_imageRequestOperation.responseSerializer = self.imageResponseSerializer; + [self.af_imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) { + if (success) { + success(urlRequest, operation.response, responseObject); + } else if (responseObject) { + strongSelf.image = responseObject; + } + + if (operation == strongSelf.af_imageRequestOperation){ + strongSelf.af_imageRequestOperation = nil; + } + } + + [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) { + if (failure) { + failure(urlRequest, operation.response, error); + } + + if (operation == strongSelf.af_imageRequestOperation){ + strongSelf.af_imageRequestOperation = nil; + } + } + }]; + + [[[self class] af_sharedImageRequestOperationQueue] addOperation:self.af_imageRequestOperation]; + } +} + +- (void)cancelImageRequestOperation { + [self.af_imageRequestOperation cancel]; + self.af_imageRequestOperation = nil; +} + +@end + +#pragma mark - + +static inline NSString * AFImageCacheKeyFromURLRequest(NSURLRequest *request) { + return [[request URL] absoluteString]; +} + +@implementation AFImageCache + +- (UIImage *)cachedImageForRequest:(NSURLRequest *)request { + switch ([request cachePolicy]) { + case NSURLRequestReloadIgnoringCacheData: + case NSURLRequestReloadIgnoringLocalAndRemoteCacheData: + return nil; + default: + break; + } + + return [self objectForKey:AFImageCacheKeyFromURLRequest(request)]; +} + +- (void)cacheImage:(UIImage *)image + forRequest:(NSURLRequest *)request +{ + if (image && request) { + [self setObject:image forKey:AFImageCacheKeyFromURLRequest(request)]; + } +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h new file mode 100644 index 00000000000..94082f6cb58 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h @@ -0,0 +1,38 @@ +// UIKit+AFNetworking.h +// +// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#ifndef _UIKIT_AFNETWORKING_ + #define _UIKIT_AFNETWORKING_ + + #import "AFNetworkActivityIndicatorManager.h" + + #import "UIActivityIndicatorView+AFNetworking.h" + #import "UIAlertView+AFNetworking.h" + #import "UIButton+AFNetworking.h" + #import "UIImageView+AFNetworking.h" + #import "UIKit+AFNetworking.h" + #import "UIProgressView+AFNetworking.h" + #import "UIRefreshControl+AFNetworking.h" + #import "UIWebView+AFNetworking.h" +#endif /* _UIKIT_AFNETWORKING_ */ diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h new file mode 100644 index 00000000000..6a4e16f884c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h @@ -0,0 +1,87 @@ +// UIProgressView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIProgressView` class. The methods in this category provide support for binding the progress to the upload and download progress of a session task or request operation. + */ +@interface UIProgressView (AFNetworking) + +///------------------------------------ +/// @name Setting Session Task Progress +///------------------------------------ + +/** + Binds the progress to the upload progress of the specified session task. + + @param task The session task. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task + animated:(BOOL)animated; +#endif + +/** + Binds the progress to the download progress of the specified session task. + + @param task The session task. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task + animated:(BOOL)animated; +#endif + +///------------------------------------ +/// @name Setting Session Task Progress +///------------------------------------ + +/** + Binds the progress to the upload progress of the specified request operation. + + @param operation The request operation. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated; + +/** + Binds the progress to the download progress of the specified request operation. + + @param operation The request operation. + @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. + */ +- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m new file mode 100644 index 00000000000..ad2c280ba8d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m @@ -0,0 +1,182 @@ +// UIProgressView+AFNetworking.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIProgressView+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFURLConnectionOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +static void * AFTaskCountOfBytesSentContext = &AFTaskCountOfBytesSentContext; +static void * AFTaskCountOfBytesReceivedContext = &AFTaskCountOfBytesReceivedContext; + +@interface AFURLConnectionOperation (_UIProgressView) +@property (readwrite, nonatomic, copy) void (^uploadProgress)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +@property (readwrite, nonatomic, assign, setter = af_setUploadProgressAnimated:) BOOL af_uploadProgressAnimated; + +@property (readwrite, nonatomic, copy) void (^downloadProgress)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); +@property (readwrite, nonatomic, assign, setter = af_setDownloadProgressAnimated:) BOOL af_downloadProgressAnimated; +@end + +@implementation AFURLConnectionOperation (_UIProgressView) +@dynamic uploadProgress; // Implemented in AFURLConnectionOperation +@dynamic af_uploadProgressAnimated; + +@dynamic downloadProgress; // Implemented in AFURLConnectionOperation +@dynamic af_downloadProgressAnimated; +@end + +#pragma mark - + +@implementation UIProgressView (AFNetworking) + +- (BOOL)af_uploadProgressAnimated { + return [(NSNumber *)objc_getAssociatedObject(self, @selector(af_uploadProgressAnimated)) boolValue]; +} + +- (void)af_setUploadProgressAnimated:(BOOL)animated { + objc_setAssociatedObject(self, @selector(af_uploadProgressAnimated), @(animated), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (BOOL)af_downloadProgressAnimated { + return [(NSNumber *)objc_getAssociatedObject(self, @selector(af_downloadProgressAnimated)) boolValue]; +} + +- (void)af_setDownloadProgressAnimated:(BOOL)animated { + objc_setAssociatedObject(self, @selector(af_downloadProgressAnimated), @(animated), OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task + animated:(BOOL)animated +{ + [task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesSentContext]; + [task addObserver:self forKeyPath:@"countOfBytesSent" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesSentContext]; + + [self af_setUploadProgressAnimated:animated]; +} + +- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task + animated:(BOOL)animated +{ + [task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext]; + [task addObserver:self forKeyPath:@"countOfBytesReceived" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext]; + + [self af_setDownloadProgressAnimated:animated]; +} +#endif + +#pragma mark - + +- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated +{ + __weak __typeof(self)weakSelf = self; + void (^original)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) = [operation.uploadProgress copy]; + [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { + if (original) { + original(bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + if (totalBytesExpectedToWrite > 0) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + [strongSelf setProgress:(totalBytesWritten / (totalBytesExpectedToWrite * 1.0f)) animated:animated]; + } + }); + }]; +} + +- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation + animated:(BOOL)animated +{ + __weak __typeof(self)weakSelf = self; + void (^original)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) = [operation.downloadProgress copy]; + [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { + if (original) { + original(bytesRead, totalBytesRead, totalBytesExpectedToRead); + } + + dispatch_async(dispatch_get_main_queue(), ^{ + if (totalBytesExpectedToRead > 0) { + __strong __typeof(weakSelf)strongSelf = weakSelf; + [strongSelf setProgress:(totalBytesRead / (totalBytesExpectedToRead * 1.0f)) animated:animated]; + } + }); + }]; +} + +#pragma mark - NSKeyValueObserving + +- (void)observeValueForKeyPath:(NSString *)keyPath + ofObject:(id)object + change:(__unused NSDictionary *)change + context:(void *)context +{ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 + if (context == AFTaskCountOfBytesSentContext || context == AFTaskCountOfBytesReceivedContext) { + if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesSent))]) { + if ([object countOfBytesExpectedToSend] > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setProgress:[object countOfBytesSent] / ([object countOfBytesExpectedToSend] * 1.0f) animated:self.af_uploadProgressAnimated]; + }); + } + } + + if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesReceived))]) { + if ([object countOfBytesExpectedToReceive] > 0) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self setProgress:[object countOfBytesReceived] / ([object countOfBytesExpectedToReceive] * 1.0f) animated:self.af_downloadProgressAnimated]; + }); + } + } + + if ([keyPath isEqualToString:NSStringFromSelector(@selector(state))]) { + if ([(NSURLSessionTask *)object state] == NSURLSessionTaskStateCompleted) { + @try { + [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(state))]; + + if (context == AFTaskCountOfBytesSentContext) { + [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(countOfBytesSent))]; + } + + if (context == AFTaskCountOfBytesReceivedContext) { + [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(countOfBytesReceived))]; + } + } + @catch (NSException * __unused exception) {} + } + } + } +#endif +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h new file mode 100644 index 00000000000..18c12eaaca6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h @@ -0,0 +1,64 @@ +// UIRefreshControl+AFNetworking.m +// +// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFURLConnectionOperation; + +/** + This category adds methods to the UIKit framework's `UIRefreshControl` class. The methods in this category provide support for automatically begining and ending refreshing depending on the loading state of a request operation or session task. + */ +@interface UIRefreshControl (AFNetworking) + +///----------------------------------- +/// @name Refreshing for Session Tasks +///----------------------------------- + +/** + Binds the refreshing state to the state of the specified task. + + @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task; +#endif + +///---------------------------------------- +/// @name Refreshing for Request Operations +///---------------------------------------- + +/** + Binds the refreshing state to the execution state of the specified operation. + + @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. + */ +- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m new file mode 100644 index 00000000000..e266451fe51 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m @@ -0,0 +1,93 @@ +// UIRefreshControl+AFNetworking.m +// +// Copyright (c) 2014 AFNetworking (http://afnetworking.com) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIRefreshControl+AFNetworking.h" + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +#import "AFURLSessionManager.h" +#endif + +@implementation UIRefreshControl (AFNetworking) + +#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 +- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingTaskDidResumeNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidSuspendNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingTaskDidCompleteNotification object:nil]; + + if (task) { + if (task.state == NSURLSessionTaskStateRunning) { + [self beginRefreshing]; + + [notificationCenter addObserver:self selector:@selector(af_beginRefreshing) name:AFNetworkingTaskDidResumeNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingTaskDidCompleteNotification object:task]; + [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingTaskDidSuspendNotification object:task]; + } else { + [self endRefreshing]; + } + } +} +#endif + +- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation { + NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; + + [notificationCenter removeObserver:self name:AFNetworkingOperationDidStartNotification object:nil]; + [notificationCenter removeObserver:self name:AFNetworkingOperationDidFinishNotification object:nil]; + + if (operation) { + if (![operation isFinished]) { + if ([operation isExecuting]) { + [self beginRefreshing]; + } else { + [self endRefreshing]; + } + + [notificationCenter addObserver:self selector:@selector(af_beginRefreshing) name:AFNetworkingOperationDidStartNotification object:operation]; + [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingOperationDidFinishNotification object:operation]; + } + } +} + +#pragma mark - + +- (void)af_beginRefreshing { + dispatch_async(dispatch_get_main_queue(), ^{ + [self beginRefreshing]; + }); +} + +- (void)af_endRefreshing { + dispatch_async(dispatch_get_main_queue(), ^{ + [self endRefreshing]; + }); +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h new file mode 100644 index 00000000000..56e58322542 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h @@ -0,0 +1,82 @@ +// UIWebView+AFNetworking.h +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import + +@class AFHTTPRequestSerializer, AFHTTPResponseSerializer; +@protocol AFURLRequestSerialization, AFURLResponseSerialization; + +/** + This category adds methods to the UIKit framework's `UIWebView` class. The methods in this category provide increased control over the request cycle, including progress monitoring and success / failure handling. + + @discussion When using these category methods, make sure to assign `delegate` for the web view, which implements `–webView:shouldStartLoadWithRequest:navigationType:` appropriately. This allows for tapped links to be loaded through AFNetworking, and can ensure that `canGoBack` & `canGoForward` update their values correctly. + */ +@interface UIWebView (AFNetworking) + +/** + The request serializer used to serialize requests made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPRequestSerializer`. + */ +@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; + +/** + The response serializer used to serialize responses made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPResponseSerializer`. + */ +@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; + +/** + Asynchronously loads the specified request. + + @param request A URL request identifying the location of the content to load. This must not be `nil`. + @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + @param success A block object to be executed when the request finishes loading successfully. This block returns the HTML string to be loaded by the web view, and takes two arguments: the response, and the response string. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)loadRequest:(NSURLRequest *)request + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success + failure:(void (^)(NSError *error))failure; + +/** + Asynchronously loads the data associated with a particular request with a specified MIME type and text encoding. + + @param request A URL request identifying the location of the content to load. This must not be `nil`. + @param MIMEType The MIME type of the content. Defaults to the content type of the response if not specified. + @param textEncodingName The IANA encoding name, as in `utf-8` or `utf-16`. Defaults to the response text encoding if not specified. + @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. + @param success A block object to be executed when the request finishes loading successfully. This block returns the data to be loaded by the web view and takes two arguments: the response, and the downloaded data. + @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. + */ +- (void)loadRequest:(NSURLRequest *)request + MIMEType:(NSString *)MIMEType + textEncodingName:(NSString *)textEncodingName + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success + failure:(void (^)(NSError *error))failure; + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m new file mode 100644 index 00000000000..93eacaa0c1b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m @@ -0,0 +1,159 @@ +// UIWebView+AFNetworking.m +// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. + +#import "UIWebView+AFNetworking.h" + +#import + +#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) + +#import "AFHTTPRequestOperation.h" +#import "AFURLResponseSerialization.h" +#import "AFURLRequestSerialization.h" + +@interface UIWebView (_AFNetworking) +@property (readwrite, nonatomic, strong, setter = af_setHTTPRequestOperation:) AFHTTPRequestOperation *af_HTTPRequestOperation; +@end + +@implementation UIWebView (_AFNetworking) + +- (AFHTTPRequestOperation *)af_HTTPRequestOperation { + return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, @selector(af_HTTPRequestOperation)); +} + +- (void)af_setHTTPRequestOperation:(AFHTTPRequestOperation *)operation { + objc_setAssociatedObject(self, @selector(af_HTTPRequestOperation), operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + +#pragma mark - + +@implementation UIWebView (AFNetworking) + +- (AFHTTPRequestSerializer *)requestSerializer { + static AFHTTPRequestSerializer *_af_defaultRequestSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultRequestSerializer = [AFHTTPRequestSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(requestSerializer)) ?: _af_defaultRequestSerializer; +#pragma clang diagnostic pop +} + +- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { + objc_setAssociatedObject(self, @selector(requestSerializer), requestSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +- (AFHTTPResponseSerializer *)responseSerializer { + static AFHTTPResponseSerializer *_af_defaultResponseSerializer = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _af_defaultResponseSerializer = [AFHTTPResponseSerializer serializer]; + }); + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + return objc_getAssociatedObject(self, @selector(responseSerializer)) ?: _af_defaultResponseSerializer; +#pragma clang diagnostic pop +} + +- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { + objc_setAssociatedObject(self, @selector(responseSerializer), responseSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +#pragma mark - + +- (void)loadRequest:(NSURLRequest *)request + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success + failure:(void (^)(NSError *error))failure +{ + [self loadRequest:request MIMEType:nil textEncodingName:nil progress:progress success:^NSData *(NSHTTPURLResponse *response, NSData *data) { + NSStringEncoding stringEncoding = NSUTF8StringEncoding; + if (response.textEncodingName) { + CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); + if (encoding != kCFStringEncodingInvalidId) { + stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); + } + } + + NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding]; + if (success) { + string = success(response, string); + } + + return [string dataUsingEncoding:stringEncoding]; + } failure:failure]; +} + +- (void)loadRequest:(NSURLRequest *)request + MIMEType:(NSString *)MIMEType + textEncodingName:(NSString *)textEncodingName + progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress + success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success + failure:(void (^)(NSError *error))failure +{ + NSParameterAssert(request); + + if (self.af_HTTPRequestOperation) { + [self.af_HTTPRequestOperation cancel]; + } + + request = [self.requestSerializer requestBySerializingRequest:request withParameters:nil error:nil]; + + self.af_HTTPRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; + self.af_HTTPRequestOperation.responseSerializer = self.responseSerializer; + + __weak __typeof(self)weakSelf = self; + [self.af_HTTPRequestOperation setDownloadProgressBlock:progress]; + [self.af_HTTPRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id __unused responseObject) { + NSData *data = success ? success(operation.response, operation.responseData) : operation.responseData; + +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgnu" + __strong __typeof(weakSelf) strongSelf = weakSelf; + [strongSelf loadData:data MIMEType:(MIMEType ?: [operation.response MIMEType]) textEncodingName:(textEncodingName ?: [operation.response textEncodingName]) baseURL:[operation.response URL]]; + + if ([strongSelf.delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) { + [strongSelf.delegate webViewDidFinishLoad:strongSelf]; + } + +#pragma clang diagnostic pop + } failure:^(AFHTTPRequestOperation * __unused operation, NSError *error) { + if (failure) { + failure(error); + } + }]; + + [self.af_HTTPRequestOperation start]; + + if ([self.delegate respondsToSelector:@selector(webViewDidStartLoad:)]) { + [self.delegate webViewDidStartLoad:self]; + } +} + +@end + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h new file mode 100644 index 00000000000..58b12828396 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h @@ -0,0 +1,25 @@ +// +// EXPRuntimeMatcher.h +// Expecta +// +// Created by Luke Redpath on 26/03/2012. +// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. +// + +#import +#import "EXPMatcher.h" +#import "EXPDefines.h" + +@interface EXPBlockDefinedMatcher : NSObject { + EXPBoolBlock prerequisiteBlock; + EXPBoolBlock matchBlock; + EXPStringBlock failureMessageForToBlock; + EXPStringBlock failureMessageForNotToBlock; +} + +@property(nonatomic, copy) EXPBoolBlock prerequisiteBlock; +@property(nonatomic, copy) EXPBoolBlock matchBlock; +@property(nonatomic, copy) EXPStringBlock failureMessageForToBlock; +@property(nonatomic, copy) EXPStringBlock failureMessageForNotToBlock; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m new file mode 100644 index 00000000000..89bba37732f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m @@ -0,0 +1,60 @@ +// +// EXPRuntimeMatcher.m +// Expecta +// +// Created by Luke Redpath on 26/03/2012. +// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. +// + +#import "EXPBlockDefinedMatcher.h" + +@implementation EXPBlockDefinedMatcher + +- (void)dealloc +{ + self.prerequisiteBlock = nil; + self.matchBlock = nil; + self.failureMessageForToBlock = nil; + self.failureMessageForNotToBlock = nil; + + [super dealloc]; +} + +@synthesize prerequisiteBlock; +@synthesize matchBlock; +@synthesize failureMessageForToBlock; +@synthesize failureMessageForNotToBlock; + +- (BOOL)meetsPrerequesiteFor:(id)actual +{ + if (self.prerequisiteBlock) { + return self.prerequisiteBlock(); + } + return YES; +} + +- (BOOL)matches:(id)actual +{ + if (self.matchBlock) { + return self.matchBlock(); + } + return YES; +} + +- (NSString *)failureMessageForTo:(id)actual +{ + if (self.failureMessageForToBlock) { + return self.failureMessageForToBlock(); + } + return nil; +} + +- (NSString *)failureMessageForNotTo:(id)actual +{ + if (self.failureMessageForNotToBlock) { + return self.failureMessageForNotToBlock(); + } + return nil; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h new file mode 100644 index 00000000000..52af721913c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h @@ -0,0 +1,17 @@ +// +// EXPDefines.h +// Expecta +// +// Created by Luke Redpath on 26/03/2012. +// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. +// + +#ifndef Expecta_EXPDefines_h +#define Expecta_EXPDefines_h + +typedef void (^EXPBasicBlock)(); +typedef id (^EXPIdBlock)(); +typedef BOOL (^EXPBoolBlock)(); +typedef NSString *(^EXPStringBlock)(); + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h new file mode 100644 index 00000000000..4bd231c5700 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h @@ -0,0 +1,13 @@ +#import + +@interface EXPDoubleTuple : NSObject { + double *_values; + size_t _size; +} + +@property (nonatomic, assign) double *values; +@property (nonatomic, assign) size_t size; + +- (instancetype)initWithDoubleValues:(double *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m new file mode 100644 index 00000000000..829e354221b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m @@ -0,0 +1,42 @@ +#import "EXPDoubleTuple.h" + +@implementation EXPDoubleTuple + +@synthesize values = _values, size = _size; + +- (instancetype)initWithDoubleValues:(double *)values size:(size_t)size { + if ((self = [super init])) { + self.values = malloc(sizeof(double) * size); + memcpy(self.values, values, sizeof(double) * size); + self.size = size; + } + return self; +} + +- (void)dealloc { + free(self.values); + [super dealloc]; +} + +- (BOOL)isEqual:(id)object { + if (![object isKindOfClass:[EXPDoubleTuple class]]) return NO; + EXPDoubleTuple *other = (EXPDoubleTuple *)object; + if (self.size == other.size) { + for (int i = 0; i < self.size; ++i) { + if (self.values[i] != other.values[i]) return NO; + } + return YES; + } + return NO; +} + +- (NSString *)description { + if (self.size == 2) { + return [NSString stringWithFormat:@"Double tuple: {%f, %f}", self.values[0], self.values[1]]; + } else if (self.size == 4) { + return [NSString stringWithFormat:@"Double tuple: {%f, %f, %f, %f}", self.values[0], self.values[1], self.values[2], self.values[3]]; + } + return [NSString stringWithFormat:@"Double tuple of unexpected size %zd, sadly", self.size]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h new file mode 100644 index 00000000000..985c1200d50 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h @@ -0,0 +1,45 @@ +#import +#import "EXPMatcher.h" +#import "EXPDefines.h" + +@interface EXPExpect : NSObject { + EXPIdBlock _actualBlock; + id _testCase; + int _lineNumber; + char *_fileName; + BOOL _negative; + BOOL _asynchronous; + NSTimeInterval _timeout; +} + +@property(nonatomic, copy) EXPIdBlock actualBlock; +@property(nonatomic, readonly) id actual; +@property(nonatomic, assign) id testCase; +@property(nonatomic) int lineNumber; +@property(nonatomic) const char *fileName; +@property(nonatomic) BOOL negative; +@property(nonatomic) BOOL asynchronous; +@property(nonatomic) NSTimeInterval timeout; + +@property(nonatomic, readonly) EXPExpect *to; +@property(nonatomic, readonly) EXPExpect *toNot; +@property(nonatomic, readonly) EXPExpect *notTo; +@property(nonatomic, readonly) EXPExpect *will; +@property(nonatomic, readonly) EXPExpect *willNot; +@property(nonatomic, readonly) EXPExpect *(^after)(NSTimeInterval timeInterval); + +- (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName NS_DESIGNATED_INITIALIZER; ++ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName; + +- (void)applyMatcher:(id)matcher; +- (void)applyMatcher:(id)matcher to:(NSObject **)actual; + +@end + +@interface EXPDynamicPredicateMatcher : NSObject { + EXPExpect *_expectation; + SEL _selector; +} +- (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector NS_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly, copy) void (^dispatch)(void); +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m new file mode 100644 index 00000000000..729794d6934 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m @@ -0,0 +1,214 @@ +#import "EXPExpect.h" +#import "NSObject+Expecta.h" +#import "Expecta.h" +#import "EXPUnsupportedObject.h" +#import "EXPMatcher.h" +#import "EXPBlockDefinedMatcher.h" +#import + +@implementation EXPExpect + +@dynamic + actual, + to, + toNot, + notTo, + will, + willNot, + after; + +@synthesize + actualBlock=_actualBlock, + testCase=_testCase, + negative=_negative, + asynchronous=_asynchronous, + timeout=_timeout, + lineNumber=_lineNumber, + fileName=_fileName; + +- (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName { + self = [super init]; + if(self) { + self.actualBlock = actualBlock; + self.testCase = testCase; + self.negative = NO; + self.asynchronous = NO; + self.timeout = [Expecta asynchronousTestTimeout]; + self.lineNumber = lineNumber; + self.fileName = fileName; + } + return self; +} + +- (void)dealloc +{ + _actualBlock = nil; + [super dealloc]; +} + ++ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName { + return [[[EXPExpect alloc] initWithActualBlock:actualBlock testCase:(id)testCase lineNumber:lineNumber fileName:fileName] autorelease]; +} + +#pragma mark - + +- (EXPExpect *)to { + return self; +} + +- (EXPExpect *)toNot { + self.negative = !self.negative; + return self; +} + +- (EXPExpect *)notTo { + return [self toNot]; +} + +- (EXPExpect *)will { + self.asynchronous = YES; + return self; +} + +- (EXPExpect *)willNot { + return self.will.toNot; +} + +- (EXPExpect *(^)(NSTimeInterval))after +{ + EXPExpect * (^block)(NSTimeInterval) = [^EXPExpect *(NSTimeInterval timeout) { + self.asynchronous = YES; + self.timeout = timeout; + return self; + } copy]; + + return [block autorelease]; +} + +#pragma mark - + +- (id)actual { + if(self.actualBlock) { + return self.actualBlock(); + } + return nil; +} + +- (void)applyMatcher:(id)matcher +{ + id actual = [self actual]; + [self applyMatcher:matcher to:&actual]; +} + +- (void)applyMatcher:(id)matcher to:(NSObject **)actual { + if([*actual isKindOfClass:[EXPUnsupportedObject class]]) { + EXPFail(self.testCase, self.lineNumber, self.fileName, + [NSString stringWithFormat:@"expecting a %@ is not supported", ((EXPUnsupportedObject *)*actual).type]); + } else { + BOOL failed = NO; + if([matcher respondsToSelector:@selector(meetsPrerequesiteFor:)] && + ![matcher meetsPrerequesiteFor:*actual]) { + failed = YES; + } else { + BOOL matchResult = NO; + if(self.asynchronous) { + NSTimeInterval timeOut = self.timeout; + NSDate *expiryDate = [NSDate dateWithTimeIntervalSinceNow:timeOut]; + while(1) { + matchResult = [matcher matches:*actual]; + failed = self.negative ? matchResult : !matchResult; + if(!failed || ([(NSDate *)[NSDate date] compare:expiryDate] == NSOrderedDescending)) { + break; + } + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; + OSMemoryBarrier(); + *actual = self.actual; + } + } else { + matchResult = [matcher matches:*actual]; + } + failed = self.negative ? matchResult : !matchResult; + } + if(failed) { + NSString *message = nil; + + if(self.negative) { + if ([matcher respondsToSelector:@selector(failureMessageForNotTo:)]) { + message = [matcher failureMessageForNotTo:*actual]; + } + } else { + if ([matcher respondsToSelector:@selector(failureMessageForTo:)]) { + message = [matcher failureMessageForTo:*actual]; + } + } + if (message == nil) { + message = @"Match Failed."; + } + + EXPFail(self.testCase, self.lineNumber, self.fileName, message); + } + } + self.negative = NO; +} + +#pragma mark - Dynamic predicate dispatch + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector +{ + if ([self.actual respondsToSelector:aSelector]) { + return [self.actual methodSignatureForSelector:aSelector]; + } + return [super methodSignatureForSelector:aSelector]; +} + +- (void)forwardInvocation:(NSInvocation *)anInvocation +{ + if ([self.actual respondsToSelector:anInvocation.selector]) { + EXPDynamicPredicateMatcher *matcher = [[EXPDynamicPredicateMatcher alloc] initWithExpectation:self selector:anInvocation.selector]; + [anInvocation setSelector:@selector(dispatch)]; + [anInvocation invokeWithTarget:matcher]; + [matcher release]; + } + else { + [super forwardInvocation:anInvocation]; + } +} + +@end + +@implementation EXPDynamicPredicateMatcher + +- (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector +{ + if ((self = [super init])) { + _expectation = expectation; + _selector = selector; + } + return self; +} + +- (BOOL)matches:(id)actual +{ + return (BOOL)[actual performSelector:_selector]; +} + +- (NSString *)failureMessageForTo:(id)actual +{ + return [NSString stringWithFormat:@"expected %@ to be true", NSStringFromSelector(_selector)]; +} + +- (NSString *)failureMessageForNotTo:(id)actual +{ + return [NSString stringWithFormat:@"expected %@ to be false", NSStringFromSelector(_selector)]; +} + +- (void (^)(void))dispatch +{ + __block id blockExpectation = _expectation; + + return [[^{ + [blockExpectation applyMatcher:self]; + } copy] autorelease]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h new file mode 100644 index 00000000000..ea8ee810b6b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h @@ -0,0 +1,13 @@ +#import + +@interface EXPFloatTuple : NSObject { + float *_values; + size_t _size; +} + +@property (nonatomic, assign) float *values; +@property (nonatomic, assign) size_t size; + +- (instancetype)initWithFloatValues:(float *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m new file mode 100644 index 00000000000..8e8505bca8c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m @@ -0,0 +1,52 @@ +#import "EXPFloatTuple.h" + +@implementation EXPFloatTuple + +@synthesize values = _values, size = _size; + +- (instancetype)initWithFloatValues:(float *)values size:(size_t)size { + if ((self = [super init])) { + self.values = malloc(sizeof(float) * size); + memcpy(self.values, values, sizeof(float) * size); + self.size = size; + } + return self; +} + +- (void)dealloc { + free(self.values); + [super dealloc]; +} + +- (BOOL)isEqual:(id)object { + if (![object isKindOfClass:[EXPFloatTuple class]]) return NO; + EXPFloatTuple *other = (EXPFloatTuple *)object; + if (self.size == other.size) { + for (int i = 0; i < self.size; ++i) { + if (self.values[i] != other.values[i]) return NO; + } + return YES; + } + return NO; +} + +- (NSUInteger)hash +{ + NSUInteger prime = 31; + NSUInteger hash = 0; + for (int i=0; i + +@protocol EXPMatcher + +- (BOOL)matches:(id)actual; + +@optional +- (BOOL)meetsPrerequesiteFor:(id)actual; +- (NSString *)failureMessageForTo:(id)actual; +- (NSString *)failureMessageForNotTo:(id)actual; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h new file mode 100644 index 00000000000..3ad0561efae --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h @@ -0,0 +1,11 @@ +#import + +@interface EXPUnsupportedObject : NSObject { + NSString *_type; +} + +@property (nonatomic, retain) NSString *type; + +- (instancetype)initWithType:(NSString *)type NS_DESIGNATED_INITIALIZER; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m new file mode 100644 index 00000000000..4312beff177 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m @@ -0,0 +1,20 @@ +#import "EXPUnsupportedObject.h" + +@implementation EXPUnsupportedObject + +@synthesize type=_type; + +- (instancetype)initWithType:(NSString *)type { + self = [super init]; + if(self) { + self.type = type; + } + return self; +} + +- (void)dealloc { + self.type = nil; + [super dealloc]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h new file mode 100644 index 00000000000..6e5188e621d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h @@ -0,0 +1,15 @@ +#import + +//! Project version number for Expecta. +FOUNDATION_EXPORT double ExpectaVersionNumber; + +//! Project version string for Expecta. +FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; + +#import +#import +#import + +// Enable shorthand by default +#define expect(...) EXP_expect((__VA_ARGS__)) +#define failure(...) EXP_failure((__VA_ARGS__)) \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h new file mode 100644 index 00000000000..ef2a38aafbc --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h @@ -0,0 +1,18 @@ +#import + +#define EXPObjectify(value) _EXPObjectify(@encode(__typeof__((value))), (value)) +#define EXP_expect(actual) _EXP_expect(self, __LINE__, __FILE__, ^id{ return EXPObjectify((actual)); }) +#define EXPMatcherInterface(matcherName, matcherArguments) _EXPMatcherInterface(matcherName, matcherArguments) +#define EXPMatcherImplementationBegin(matcherName, matcherArguments) _EXPMatcherImplementationBegin(matcherName, matcherArguments) +#define EXPMatcherImplementationEnd _EXPMatcherImplementationEnd +#define EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) + +#define EXP_failure(message) EXPFail(self, __LINE__, __FILE__, message) + + +@interface Expecta : NSObject + ++ (NSTimeInterval)asynchronousTestTimeout; ++ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m new file mode 100644 index 00000000000..b51e00a9be5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m @@ -0,0 +1,15 @@ +#import "ExpectaObject.h" + +@implementation Expecta + +static NSTimeInterval _asynchronousTestTimeout = 1.0; + ++ (NSTimeInterval)asynchronousTestTimeout { + return _asynchronousTestTimeout; +} + ++ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout { + _asynchronousTestTimeout = timeout; +} + +@end \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h new file mode 100644 index 00000000000..fb0ef4f460e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h @@ -0,0 +1,73 @@ +#import "EXPExpect.h" +#import "EXPBlockDefinedMatcher.h" + +#ifdef __cplusplus +extern "C" { +#endif + +id _EXPObjectify(const char *type, ...); +EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock); + +void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message); +NSString *EXPDescribeObject(id obj); + +void EXP_prerequisite(EXPBoolBlock block); +void EXP_match(EXPBoolBlock block); +void EXP_failureMessageForTo(EXPStringBlock block); +void EXP_failureMessageForNotTo(EXPStringBlock block); + +#if __has_feature(objc_arc) +#define _EXP_release(x) +#define _EXP_autorelease(x) (x) + +#else +#define _EXP_release(x) [x release] +#define _EXP_autorelease(x) [x autorelease] +#endif + +// workaround for the categories bug: http://developer.apple.com/library/mac/#qa/qa1490/_index.html +#define EXPFixCategoriesBug(name) \ +__attribute__((constructor)) static void EXPFixCategoriesBug##name() {} + +#define _EXPMatcherInterface(matcherName, matcherArguments) \ +@interface EXPExpect (matcherName##Matcher) \ +@property (nonatomic, readonly) void(^ matcherName) matcherArguments; \ +@end + +#define _EXPMatcherImplementationBegin(matcherName, matcherArguments) \ +EXPFixCategoriesBug(EXPMatcher##matcherName##Matcher); \ +@implementation EXPExpect (matcherName##Matcher) \ +@dynamic matcherName;\ +- (void(^) matcherArguments) matcherName { \ + EXPBlockDefinedMatcher *matcher = [[EXPBlockDefinedMatcher alloc] init]; \ + [[[NSThread currentThread] threadDictionary] setObject:matcher forKey:@"EXP_currentMatcher"]; \ + __block id actual = self.actual; \ + __block void (^prerequisite)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_prerequisite(block); }; \ + __block void (^match)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_match(block); }; \ + __block void (^failureMessageForTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForTo(block); }; \ + __block void (^failureMessageForNotTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForNotTo(block); }; \ + prerequisite(nil); match(nil); failureMessageForTo(nil); failureMessageForNotTo(nil); \ + void (^matcherBlock) matcherArguments = [^ matcherArguments { \ + { + +#define _EXPMatcherImplementationEnd \ + } \ + [self applyMatcher:matcher to:&actual]; \ + } copy]; \ + _EXP_release(matcher); \ + return _EXP_autorelease(matcherBlock); \ +} \ +@end + +#define _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) \ +EXPFixCategoriesBug(EXPMatcher##newMatcherName##Matcher); \ +@implementation EXPExpect (newMatcherName##Matcher) \ +@dynamic newMatcherName;\ +- (void(^) matcherArguments) newMatcherName { \ + return [self oldMatcherName]; \ +}\ +@end + +#ifdef __cplusplus +} +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m new file mode 100644 index 00000000000..8abe415eda2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m @@ -0,0 +1,176 @@ +#import "ExpectaSupport.h" +#import "NSValue+Expecta.h" +#import "NSObject+Expecta.h" +#import "EXPUnsupportedObject.h" +#import "EXPFloatTuple.h" +#import "EXPDoubleTuple.h" +#import "EXPDefines.h" +#import + +@interface NSObject (ExpectaXCTestRecordFailure) + +// suppress warning +- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected; + +@end + +id _EXPObjectify(const char *type, ...) { + va_list v; + va_start(v, type); + id obj = nil; + if(strcmp(type, @encode(char)) == 0) { + char actual = (char)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(_Bool)) == 0) { + _Static_assert(sizeof(_Bool) <= sizeof(int), "Expected _Bool to be subject to vararg type promotion"); + _Bool actual = (_Bool)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(double)) == 0) { + double actual = (double)va_arg(v, double); + obj = @(actual); + } else if(strcmp(type, @encode(float)) == 0) { + float actual = (float)va_arg(v, double); + obj = @(actual); + } else if(strcmp(type, @encode(int)) == 0) { + int actual = (int)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(long)) == 0) { + long actual = (long)va_arg(v, long); + obj = @(actual); + } else if(strcmp(type, @encode(long long)) == 0) { + long long actual = (long long)va_arg(v, long long); + obj = @(actual); + } else if(strcmp(type, @encode(short)) == 0) { + short actual = (short)va_arg(v, int); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned char)) == 0) { + unsigned char actual = (unsigned char)va_arg(v, unsigned int); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned int)) == 0) { + unsigned int actual = (int)va_arg(v, unsigned int); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned long)) == 0) { + unsigned long actual = (unsigned long)va_arg(v, unsigned long); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned long long)) == 0) { + unsigned long long actual = (unsigned long long)va_arg(v, unsigned long long); + obj = @(actual); + } else if(strcmp(type, @encode(unsigned short)) == 0) { + unsigned short actual = (unsigned short)va_arg(v, unsigned int); + obj = @(actual); + } else if(strstr(type, @encode(EXPBasicBlock)) != NULL) { + // @encode(EXPBasicBlock) returns @? as of clang 4.1. + // This condition must occur before the test for id/class type, + // otherwise blocks will be treated as vanilla objects. + id actual = va_arg(v, EXPBasicBlock); + obj = [[actual copy] autorelease]; + } else if((strstr(type, @encode(id)) != NULL) || (strstr(type, @encode(Class)) != 0)) { + id actual = va_arg(v, id); + obj = actual; + } else if(strcmp(type, @encode(__typeof__(nil))) == 0) { + obj = nil; + } else if(strstr(type, "ff}{") != NULL) { //TODO: of course this only works for a 2x2 e.g. CGRect + obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[4]) size:4] autorelease]; + } else if(strstr(type, "=ff}") != NULL) { + obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[2]) size:2] autorelease]; + } else if(strstr(type, "=ffff}") != NULL) { + obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[4]) size:4] autorelease]; + } else if(strstr(type, "dd}{") != NULL) { //TODO: same here + obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[4]) size:4] autorelease]; + } else if(strstr(type, "=dd}") != NULL) { + obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[2]) size:2] autorelease]; + } else if(strstr(type, "=dddd}") != NULL) { + obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[4]) size:4] autorelease]; + } else if(type[0] == '{') { + EXPUnsupportedObject *actual = [[[EXPUnsupportedObject alloc] initWithType:@"struct"] autorelease]; + obj = actual; + } else if(type[0] == '(') { + EXPUnsupportedObject *actual = [[[EXPUnsupportedObject alloc] initWithType:@"union"] autorelease]; + obj = actual; + } else { + void *actual = va_arg(v, void *); + obj = (actual == NULL ? nil :[NSValue valueWithPointer:actual]); + } + if([obj isKindOfClass:[NSValue class]] && ![obj isKindOfClass:[NSNumber class]]) { + [(NSValue *)obj set_EXP_objCType:type]; + } + va_end(v); + return obj; +} + +EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock) { + return [EXPExpect expectWithActualBlock:actualBlock testCase:testCase lineNumber:lineNumber fileName:fileName]; +} + +void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message) { + NSLog(@"%s:%d %@", fileName, lineNumber, message); + NSString *reason = [NSString stringWithFormat:@"%s:%d %@", fileName, lineNumber, message]; + NSException *exception = [NSException exceptionWithName:@"Expecta Error" reason:reason userInfo:nil]; + + if(testCase && [testCase respondsToSelector:@selector(recordFailureWithDescription:inFile:atLine:expected:)]){ + [testCase recordFailureWithDescription:message + inFile:@(fileName) + atLine:lineNumber + expected:NO]; + } else { + [exception raise]; + } +} + +NSString *EXPDescribeObject(id obj) { + if(obj == nil) { + return @"nil/null"; + } else if([obj isKindOfClass:[NSValue class]] && ![obj isKindOfClass:[NSNumber class]]) { + const char *type = [(NSValue *)obj _EXP_objCType]; + if(type) { + if(strcmp(type, @encode(SEL)) == 0) { + return [NSString stringWithFormat:@"@selector(%@)", NSStringFromSelector([obj pointerValue])]; + } else if(strcmp(type, @encode(Class)) == 0) { + return NSStringFromClass([obj pointerValue]); + } + } + } + NSString *description = [obj description]; + if([obj isKindOfClass:[NSArray class]]) { + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; + for(id o in obj) { + [arr addObject:EXPDescribeObject(o)]; + } + description = [NSString stringWithFormat:@"(%@)", [arr componentsJoinedByString:@", "]]; + } else if([obj isKindOfClass:[NSSet class]] || [obj isKindOfClass:[NSOrderedSet class]]) { + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; + for(id o in obj) { + [arr addObject:EXPDescribeObject(o)]; + } + description = [NSString stringWithFormat:@"{(%@)}", [arr componentsJoinedByString:@", "]]; + } else if([obj isKindOfClass:[NSDictionary class]]) { + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; + for(id k in obj) { + id v = obj[k]; + [arr addObject:[NSString stringWithFormat:@"%@ = %@;",EXPDescribeObject(k), EXPDescribeObject(v)]]; + } + description = [NSString stringWithFormat:@"{%@}", [arr componentsJoinedByString:@" "]]; + } else if([obj isKindOfClass:[NSAttributedString class]]) { + description = [obj string]; + } else { + description = [description stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; + } + return description; +} + +void EXP_prerequisite(EXPBoolBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setPrerequisiteBlock:block]; +} + +void EXP_match(EXPBoolBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setMatchBlock:block]; +} + +void EXP_failureMessageForTo(EXPStringBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setFailureMessageForToBlock:block]; +} + +void EXP_failureMessageForNotTo(EXPStringBlock block) { + [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setFailureMessageForNotToBlock:block]; +} + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h new file mode 100644 index 00000000000..5780ff6322c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h @@ -0,0 +1,4 @@ +#import + +BOOL EXPIsValuePointer(NSValue *value); +BOOL EXPIsNumberFloat(NSNumber *number); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m new file mode 100644 index 00000000000..cec0343447d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m @@ -0,0 +1,9 @@ +#import "EXPMatcherHelpers.h" + +BOOL EXPIsValuePointer(NSValue *value) { + return [value objCType][0] == @encode(void *)[0]; +} + +BOOL EXPIsNumberFloat(NSNumber *number) { + return strcmp([number objCType], @encode(float)) == 0; +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h new file mode 100644 index 00000000000..f683d6b085a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h @@ -0,0 +1,7 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beCloseToWithin, (id expected, id within)); +EXPMatcherInterface(beCloseToWithin, (id expected, id within)); + +#define beCloseTo(expected) _beCloseToWithin(EXPObjectify((expected)), nil) +#define beCloseToWithin(expected, range) _beCloseToWithin(EXPObjectify((expected)), EXPObjectify((range))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m new file mode 100644 index 00000000000..c55431aa686 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m @@ -0,0 +1,49 @@ +#import "EXPMatchers+beCloseTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beCloseToWithin, (id expected, id within)) { + prerequisite(^BOOL{ + return [actual isKindOfClass:[NSNumber class]] && + [expected isKindOfClass:[NSNumber class]] && + ([within isKindOfClass:[NSNumber class]] || (within == nil)); + }); + + match(^BOOL{ + double actualValue = [actual doubleValue]; + double expectedValue = [expected doubleValue]; + + if (within != nil) { + double withinValue = [within doubleValue]; + double lowerBound = expectedValue - withinValue; + double upperBound = expectedValue + withinValue; + return (actualValue >= lowerBound) && (actualValue <= upperBound); + } else { + double diff = fabs(actualValue - expectedValue); + actualValue = fabs(actualValue); + expectedValue = fabs(expectedValue); + double largest = (expectedValue > actualValue) ? expectedValue : actualValue; + return (diff <= largest * FLT_EPSILON); + } + }); + + failureMessageForTo(^NSString *{ + if (within) { + return [NSString stringWithFormat:@"expected %@ to be close to %@ within %@", + EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; + } else { + return [NSString stringWithFormat:@"expected %@ to be close to %@", + EXPDescribeObject(actual), EXPDescribeObject(expected)]; + } + }); + + failureMessageForNotTo(^NSString *{ + if (within) { + return [NSString stringWithFormat:@"expected %@ not to be close to %@ within %@", + EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; + } else { + return [NSString stringWithFormat:@"expected %@ not to be close to %@", + EXPDescribeObject(actual), EXPDescribeObject(expected)]; + } + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h new file mode 100644 index 00000000000..89c8e003e18 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(beFalsy, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m new file mode 100644 index 00000000000..382cab8b9da --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m @@ -0,0 +1,24 @@ +#import "EXPMatchers+beFalsy.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(beFalsy, (void)) { + match(^BOOL{ + if([actual isKindOfClass:[NSNumber class]]) { + return ![(NSNumber *)actual boolValue]; + } else if([actual isKindOfClass:[NSValue class]]) { + if(EXPIsValuePointer((NSValue *)actual)) { + return ![(NSValue *)actual pointerValue]; + } + } + return !actual; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a falsy value, got: %@, which is truthy", EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a non-falsy value, got: %@, which is falsy", EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h new file mode 100644 index 00000000000..a2f9fbac4ad --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beGreaterThan, (id expected)); +EXPMatcherInterface(beGreaterThan, (id expected)); + +#define beGreaterThan(expected) _beGreaterThan(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m new file mode 100644 index 00000000000..d7253878b8e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beGreaterThan.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beGreaterThan, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] == NSOrderedDescending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h new file mode 100644 index 00000000000..3e91c64cd73 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beGreaterThanOrEqualTo, (id expected)); +EXPMatcherInterface(beGreaterThanOrEqualTo, (id expected)); + +#define beGreaterThanOrEqualTo(expected) _beGreaterThanOrEqualTo(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m new file mode 100644 index 00000000000..32763449cad --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beGreaterThanOrEqualTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beGreaterThanOrEqualTo, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] != NSOrderedAscending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h new file mode 100644 index 00000000000..d13619f84fa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h @@ -0,0 +1,10 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beIdenticalTo, (void *expected)); +EXPMatcherInterface(beIdenticalTo, (void *expected)); // to aid code completion + +#if __has_feature(objc_arc) +#define beIdenticalTo(expected) _beIdenticalTo((__bridge void*)expected) +#else +#define beIdenticalTo(expected) _beIdenticalTo(expected) +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m new file mode 100644 index 00000000000..b62b0fe6a1f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m @@ -0,0 +1,24 @@ +#import "EXPMatchers+equal.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beIdenticalTo, (void *expected)) { + match(^BOOL{ + if(actual == expected) { + return YES; + } else if([actual isKindOfClass:[NSValue class]] && EXPIsValuePointer((NSValue *)actual)) { + if([(NSValue *)actual pointerValue] == expected) { + return YES; + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: <%p>, got: <%p>", expected, actual]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: not <%p>, got: <%p>", expected, actual]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h new file mode 100644 index 00000000000..8ea990e23b3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); +EXPMatcherInterface(beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); + +#define beInTheRangeOf(expectedLowerBound, expectedUpperBound) _beInTheRangeOf(EXPObjectify((expectedLowerBound)), EXPObjectify((expectedUpperBound))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m new file mode 100644 index 00000000000..1631f24806a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m @@ -0,0 +1,30 @@ +#import "EXPMatchers+beInTheRangeOf.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + NSComparisonResult compareLowerBound = [expectedLowerBound compare: actual]; + NSComparisonResult compareUpperBound = [expectedUpperBound compare: actual]; + if (compareLowerBound == NSOrderedSame) { + return YES; + } + if (compareUpperBound == NSOrderedSame) { + return YES; + } + if ((compareLowerBound == NSOrderedAscending) && (compareUpperBound == NSOrderedDescending)) { + return YES; + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h new file mode 100644 index 00000000000..a8e8175dc52 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(beInstanceOf, (Class expected)); +EXPMatcherInterface(beAnInstanceOf, (Class expected)); +EXPMatcherInterface(beMemberOf, (Class expected)); +EXPMatcherInterface(beAMemberOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m new file mode 100644 index 00000000000..9535e1e719e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m @@ -0,0 +1,31 @@ +#import "EXPMatchers+beInstanceOf.h" + +EXPMatcherImplementationBegin(beInstanceOf, (Class expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return !(actualIsNil || expectedIsNil); + }); + + match(^BOOL{ + return [actual isMemberOfClass:expected]; + }); + + failureMessageForTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: an instance of %@, got: an instance of %@", [expected class], [actual class]]; + }); + + failureMessageForNotTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: not an instance of %@, got: an instance of %@", [expected class], [actual class]]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beAnInstanceOf, beInstanceOf, (Class expected)); +EXPMatcherAliasImplementation(beMemberOf, beInstanceOf, (Class expected)); +EXPMatcherAliasImplementation(beAMemberOf, beInstanceOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h new file mode 100644 index 00000000000..b8623e0b584 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beKindOf, (Class expected)); +EXPMatcherInterface(beAKindOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m new file mode 100644 index 00000000000..f13ffb54a8d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m @@ -0,0 +1,29 @@ +#import "EXPMatchers+beKindOf.h" + +EXPMatcherImplementationBegin(beKindOf, (Class expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return !(actualIsNil || expectedIsNil); + }); + + match(^BOOL{ + return [actual isKindOfClass:expected]; + }); + + failureMessageForTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: a kind of %@, got: an instance of %@, which is not a kind of %@", [expected class], [actual class], [expected class]]; + }); + + failureMessageForNotTo(^NSString *{ + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected: not a kind of %@, got: an instance of %@, which is a kind of %@", [expected class], [actual class], [expected class]]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beAKindOf, beKindOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h new file mode 100644 index 00000000000..5ed0a24c326 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beLessThan, (id expected)); +EXPMatcherInterface(beLessThan, (id expected)); + +#define beLessThan(expected) _beLessThan(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m new file mode 100644 index 00000000000..39b68830db8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beLessThan.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beLessThan, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] == NSOrderedAscending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h new file mode 100644 index 00000000000..2c31341503f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h @@ -0,0 +1,6 @@ +#import "Expecta.h" + +EXPMatcherInterface(_beLessThanOrEqualTo, (id expected)); +EXPMatcherInterface(beLessThanOrEqualTo, (id expected)); + +#define beLessThanOrEqualTo(expected) _beLessThanOrEqualTo(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m new file mode 100644 index 00000000000..401c194bdf1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m @@ -0,0 +1,20 @@ +#import "EXPMatchers+beLessThanOrEqualTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_beLessThanOrEqualTo, (id expected)) { + match(^BOOL{ + if ([actual respondsToSelector:@selector(compare:)]) { + return [actual compare:expected] != NSOrderedDescending; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ not to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h new file mode 100644 index 00000000000..6d781620db2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beNil, (void)); +EXPMatcherInterface(beNull, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m new file mode 100644 index 00000000000..161067ff03c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m @@ -0,0 +1,18 @@ +#import "EXPMatchers+beNil.h" + +EXPMatcherImplementationBegin(beNil, (void)) { + match(^BOOL{ + return actual == nil; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: nil/null, got: %@", EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: not nil/null, got: %@", EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beNull, beNil, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h new file mode 100644 index 00000000000..65401c59395 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beSubclassOf, (Class expected)); +EXPMatcherInterface(beASubclassOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m new file mode 100644 index 00000000000..d4976d582ba --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m @@ -0,0 +1,29 @@ +#import "EXPMatchers+beSubclassOf.h" +#import "NSValue+Expecta.h" +#import + +EXPMatcherImplementationBegin(beSubclassOf, (Class expected)) { + __block BOOL actualIsClass = YES; + + prerequisite(^BOOL { + actualIsClass = class_isMetaClass(object_getClass(actual)); + return actualIsClass; + }); + + match(^BOOL{ + return [actual isSubclassOfClass:expected]; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsClass) return @"the actual value is not a Class"; + return [NSString stringWithFormat:@"expected: a subclass of %@, got: a class %@, which is not a subclass of %@", [expected class], actual, [expected class]]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsClass) return @"the actual value is not a Class"; + return [NSString stringWithFormat:@"expected: not a subclass of %@, got: a class %@, which is a subclass of %@", [expected class], actual, [expected class]]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(beASubclassOf, beSubclassOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h new file mode 100644 index 00000000000..f9a47ba6619 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beSupersetOf, (id subset)); + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m new file mode 100644 index 00000000000..f4d05c09dad --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m @@ -0,0 +1,62 @@ +#import "EXPMatchers+contain.h" + +EXPMatcherImplementationBegin(beSupersetOf, (id subset)) { + BOOL actualIsCompatible = [actual isKindOfClass:[NSDictionary class]] || [actual respondsToSelector:@selector(containsObject:)]; + BOOL subsetIsNil = (subset == nil); + + // For some instances the isKindOfClass: method returns false, even though + // they are both actually dictionaries. e.g. Comparing a NSCFDictionary and a + // NSDictionary. + // Or in cases when you compare NSMutableArray (which implementation is __NSArrayM:NSMutableArray:NSArray) + // and NSArray (which implementation is __NSArrayI:NSArray) + BOOL bothAreIdenticalCollectionClasses = ([actual isKindOfClass:[NSDictionary class]] && [subset isKindOfClass:[NSDictionary class]]) || + ([actual isKindOfClass:[NSArray class]] && [subset isKindOfClass:[NSArray class]]) || + ([actual isKindOfClass:[NSSet class]] && [subset isKindOfClass:[NSSet class]]) || + ([actual isKindOfClass:[NSOrderedSet class]] && [subset isKindOfClass:[NSOrderedSet class]]); + + BOOL classMatches = bothAreIdenticalCollectionClasses || [subset isKindOfClass:[actual class]]; + + prerequisite(^BOOL{ + return actualIsCompatible && !subsetIsNil && classMatches; + }); + + match(^BOOL{ + if(!actualIsCompatible) return NO; + + if([actual isKindOfClass:[NSDictionary class]]) { + for (id key in subset) { + id actualValue = [actual valueForKey:key]; + id subsetValue = [subset valueForKey:key]; + + if (![subsetValue isEqual:actualValue]) return NO; + } + } else { + for (id object in subset) { + if (![actual containsObject:object]) return NO; + } + } + + return YES; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; + + if(subsetIsNil) return @"the expected value is nil/null"; + + if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; + + return [NSString stringWithFormat:@"expected %@ to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; + + if(subsetIsNil) return @"the expected value is nil/null"; + + if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; + + return [NSString stringWithFormat:@"expected %@ not to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h new file mode 100644 index 00000000000..1e4e78f9b0e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(beTruthy, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m new file mode 100644 index 00000000000..02fa6e79f3a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m @@ -0,0 +1,24 @@ +#import "EXPMatchers+beTruthy.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(beTruthy, (void)) { + match(^BOOL{ + if([actual isKindOfClass:[NSNumber class]]) { + return !![(NSNumber *)actual boolValue]; + } else if([actual isKindOfClass:[NSValue class]]) { + if(EXPIsValuePointer((NSValue *)actual)) { + return !![(NSValue *)actual pointerValue]; + } + } + return !!actual; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a truthy value, got: %@, which is falsy", EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: a non-truthy value, got: %@, which is truthy", EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h new file mode 100644 index 00000000000..07ddd6c2dc8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(beginWith, (id expected)); +EXPMatcherInterface(startWith, (id expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m new file mode 100644 index 00000000000..a7c9e5996c3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m @@ -0,0 +1,51 @@ +#import "EXPMatchers+beginWith.h" + +EXPMatcherImplementationBegin(beginWith, (id expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same + BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) + || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) + || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); + + prerequisite(^BOOL { + return actualAndExpectedAreCompatible; + }); + + match(^BOOL { + if ([actual isKindOfClass:[NSString class]]) { + return [actual hasPrefix:expected]; + } else if ([actual isKindOfClass:[NSArray class]]) { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + NSArray *subArray = [actual subarrayWithRange:NSMakeRange(0, [expected count])]; + return [subArray isEqualToArray:expected]; + } else { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + + NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange(0, [expected count]) copyItems:NO]; + return [subset isEqualToOrderedSet:expected]; + } + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + return [NSString stringWithFormat:@"expected: %@ to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + + return [NSString stringWithFormat:@"expected: %@ not to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(startWith, beginWith, (id expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h new file mode 100644 index 00000000000..efc7b9823be --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(conformTo, (Protocol *expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m new file mode 100644 index 00000000000..b88014d6504 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m @@ -0,0 +1,33 @@ +#import "EXPMatchers+conformTo.h" +#import "NSValue+Expecta.h" +#import + +EXPMatcherImplementationBegin(conformTo, (Protocol *expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return !(actualIsNil || expectedIsNil); + }); + + match(^BOOL{ + return [actual conformsToProtocol:expected]; + }); + + failureMessageForTo(^NSString *{ + if(actualIsNil) return @"the object is nil/null"; + if(expectedIsNil) return @"the protocol is nil/null"; + + NSString *name = NSStringFromProtocol(expected); + return [NSString stringWithFormat:@"expected: %@ to conform to %@", actual, name]; + }); + + failureMessageForNotTo(^NSString *{ + if(actualIsNil) return @"the object is nil/null"; + if(expectedIsNil) return @"the protocol is nil/null"; + + NSString *name = NSStringFromProtocol(expected); + return [NSString stringWithFormat:@"expected: %@ not to conform to %@", actual, name]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h new file mode 100644 index 00000000000..580314612eb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h @@ -0,0 +1,5 @@ +#import "Expecta.h" + +EXPMatcherInterface(_contain, (id expected)); +EXPMatcherInterface(contain, (id expected)); // to aid code completion +#define contain(expected) _contain(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m new file mode 100644 index 00000000000..b8a6f869048 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m @@ -0,0 +1,38 @@ +#import "EXPMatchers+contain.h" + +EXPMatcherImplementationBegin(_contain, (id expected)) { + BOOL actualIsCompatible = [actual isKindOfClass:[NSString class]] || [actual conformsToProtocol:@protocol(NSFastEnumeration)]; + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL{ + return actualIsCompatible && !expectedIsNil; + }); + + match(^BOOL{ + if(actualIsCompatible) { + if([actual isKindOfClass:[NSString class]]) { + return [(NSString *)actual rangeOfString:[expected description]].location != NSNotFound; + } else { + for (id object in actual) { + if ([object isEqual:expected]) { + return YES; + } + } + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected %@ to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; + if(expectedIsNil) return @"the expected value is nil/null"; + return [NSString stringWithFormat:@"expected %@ not to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h new file mode 100644 index 00000000000..228cea95dd2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(endWith, (id expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m new file mode 100644 index 00000000000..f34bd9002e1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m @@ -0,0 +1,49 @@ +#import "EXPMatchers+endWith.h" + +EXPMatcherImplementationBegin(endWith, (id expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same + BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) + || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) + || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); + + prerequisite(^BOOL { + return actualAndExpectedAreCompatible; + }); + + match(^BOOL { + if ([actual isKindOfClass:[NSString class]]) { + return [actual hasSuffix:expected]; + } else if ([actual isKindOfClass:[NSArray class]]) { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + NSArray *subArray = [actual subarrayWithRange:NSMakeRange([actual count] - [expected count], [expected count])]; + return [subArray isEqualToArray:expected]; + } else { + if ([expected count] > [actual count] || [expected count] == 0) { + return NO; + } + + NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange([actual count] - [expected count], [expected count]) copyItems:NO]; + return [subset isEqualToOrderedSet:expected]; + } + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + return [NSString stringWithFormat:@"expected: %@ to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expected value is nil/null"; + if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; + + return [NSString stringWithFormat:@"expected: %@ not to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h new file mode 100644 index 00000000000..b4047c0eadd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h @@ -0,0 +1,5 @@ +#import "Expecta.h" + +EXPMatcherInterface(_equal, (id expected)); +EXPMatcherInterface(equal, (id expected)); // to aid code completion +#define equal(...) _equal(EXPObjectify((__VA_ARGS__))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m new file mode 100644 index 00000000000..a610df02903 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m @@ -0,0 +1,31 @@ +#import "EXPMatchers+equal.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(_equal, (id expected)) { + match(^BOOL{ + if((actual == expected) || [actual isEqual:expected]) { + return YES; + } else if([actual isKindOfClass:[NSNumber class]] && [expected isKindOfClass:[NSNumber class]]) { + if([actual isKindOfClass:[NSDecimalNumber class]] || [expected isKindOfClass:[NSDecimalNumber class]]) { + NSDecimalNumber *actualDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) actual decimalValue]]; + NSDecimalNumber *expectedDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) expected decimalValue]]; + return [actualDecimalNumber isEqualToNumber:expectedDecimalNumber]; + } + else { + if(EXPIsNumberFloat((NSNumber *)actual) || EXPIsNumberFloat((NSNumber *)expected)) { + return [(NSNumber *)actual floatValue] == [(NSNumber *)expected floatValue]; + } + } + } + return NO; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: not %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h new file mode 100644 index 00000000000..2e9aef570ea --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h @@ -0,0 +1,10 @@ +#import "Expecta.h" + +EXPMatcherInterface(haveCountOf, (NSUInteger expected)); +EXPMatcherInterface(haveCount, (NSUInteger expected)); +EXPMatcherInterface(haveACountOf, (NSUInteger expected)); +EXPMatcherInterface(haveLength, (NSUInteger expected)); +EXPMatcherInterface(haveLengthOf, (NSUInteger expected)); +EXPMatcherInterface(haveALengthOf, (NSUInteger expected)); + +#define beEmpty() haveCountOf(0) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m new file mode 100644 index 00000000000..ecc483173cd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m @@ -0,0 +1,42 @@ +#import "EXPMatchers+haveCountOf.h" + +EXPMatcherImplementationBegin(haveCountOf, (NSUInteger expected)) { + BOOL actualIsStringy = [actual isKindOfClass:[NSString class]] || [actual isKindOfClass:[NSAttributedString class]]; + BOOL actualIsCompatible = actualIsStringy || [actual respondsToSelector:@selector(count)]; + + prerequisite(^BOOL{ + return actualIsCompatible; + }); + + NSUInteger (^count)(id) = ^(id actual) { + if(actualIsStringy) { + return [actual length]; + } else { + return [actual count]; + } + }; + + match(^BOOL{ + if(actualIsCompatible) { + return count(actual) == expected; + } + return NO; + }); + + failureMessageForTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; + return [NSString stringWithFormat:@"expected %@ to have a count of %zi but got %zi", EXPDescribeObject(actual), expected, count(actual)]; + }); + + failureMessageForNotTo(^NSString *{ + if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; + return [NSString stringWithFormat:@"expected %@ not to have a count of %zi", EXPDescribeObject(actual), expected]; + }); +} +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(haveCount, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveACountOf, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveLength, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveLengthOf, haveCountOf, (NSUInteger expected)); +EXPMatcherAliasImplementation(haveALengthOf, haveCountOf, (NSUInteger expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h new file mode 100644 index 00000000000..4f0e8e475f4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(match, (NSString *expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m new file mode 100644 index 00000000000..a21746731b9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m @@ -0,0 +1,38 @@ +#import "EXPMatchers+match.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(match, (NSString *expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + __block NSRegularExpression *regex = nil; + __block NSError *regexError = nil; + + prerequisite (^BOOL { + BOOL nilInput = (actualIsNil || expectedIsNil); + if (!nilInput) { + regex = [NSRegularExpression regularExpressionWithPattern:expected options:0 error:®exError]; + } + return !nilInput && regex; + }); + + match(^BOOL { + NSRange range = [regex rangeOfFirstMatchInString:actual options:0 range:NSMakeRange(0, [actual length])]; + return !NSEqualRanges(range, NSMakeRange(NSNotFound, 0)); + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expression is nil/null"; + if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; + return [NSString stringWithFormat:@"expected: %@ to match to %@", EXPDescribeObject(actual), expected]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNil) return @"the expression is nil/null"; + if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; + return [NSString stringWithFormat:@"expected: %@ not to match to %@", EXPDescribeObject(actual), expected]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h new file mode 100644 index 00000000000..cdba4a34754 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(postNotification, (id expectedNotification)); +EXPMatcherInterface(notify, (id expectedNotification)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m new file mode 100644 index 00000000000..6e517c410ac --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m @@ -0,0 +1,88 @@ +#import "EXPMatchers+postNotification.h" + +@implementation NSNotification (EXPEquality) + +- (BOOL)exp_isFunctionallyEqualTo:(NSNotification *)otherNotification +{ + if (![otherNotification isKindOfClass:[NSNotification class]]) return NO; + + BOOL namesMatch = [otherNotification.name isEqualToString:self.name]; + + BOOL objectsMatch = YES; + if (otherNotification.object || self.object) { + objectsMatch = [otherNotification.object isEqual:self.object]; + } + + BOOL userInfoMatches = YES; + if (otherNotification.userInfo || self.userInfo) { + userInfoMatches = [otherNotification.userInfo isEqual:self.userInfo]; + } + + return (namesMatch && objectsMatch && userInfoMatches); +} + +@end + +EXPMatcherImplementationBegin(postNotification, (id expected)){ + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + BOOL isNotification = [expected isKindOfClass:[NSNotification class]]; + BOOL isName = [expected isKindOfClass:[NSString class]]; + + __block NSString *expectedName; + __block BOOL expectedNotificationOccurred = NO; + __block id observer; + + prerequisite(^BOOL{ + expectedNotificationOccurred = NO; + if (actualIsNil || expectedIsNil) return NO; + if (isNotification) { + expectedName = [expected name]; + }else if(isName) { + expectedName = expected; + }else{ + return NO; + } + + observer = [[NSNotificationCenter defaultCenter] addObserverForName:expectedName object:nil queue:nil usingBlock:^(NSNotification *note){ + if (isNotification) { + expectedNotificationOccurred |= [expected exp_isFunctionallyEqualTo:note]; + }else{ + expectedNotificationOccurred = YES; + } + }]; + ((EXPBasicBlock)actual)(); + return YES; + }); + + match(^BOOL{ + if(expectedNotificationOccurred) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + } + return expectedNotificationOccurred; + }); + + failureMessageForTo(^NSString *{ + if (observer) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + } + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + if(!(isNotification || isName)) return @"the actual value is not a notification or string"; + return [NSString stringWithFormat:@"expected: %@, got: none",expectedName]; + }); + + failureMessageForNotTo(^NSString *{ + if (observer) { + [[NSNotificationCenter defaultCenter] removeObserver:observer]; + } + if(actualIsNil) return @"the actual value is nil/null"; + if(expectedIsNil) return @"the expected value is nil/null"; + if(!(isNotification || isName)) return @"the actual value is not a notification or string"; + return [NSString stringWithFormat:@"expected: none, got: %@", expectedName]; + }); +} + +EXPMatcherImplementationEnd + +EXPMatcherAliasImplementation(notify, postNotification, (id expectedNotification)) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h new file mode 100644 index 00000000000..1f7fae02cac --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h @@ -0,0 +1,4 @@ +#import "Expecta.h" + +EXPMatcherInterface(raise, (NSString *expectedExceptionName)); +#define raiseAny() raise(nil) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m new file mode 100644 index 00000000000..26f3c55fdf4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m @@ -0,0 +1,30 @@ +#import "EXPMatchers+raise.h" +#import "EXPDefines.h" + +EXPMatcherImplementationBegin(raise, (NSString *expectedExceptionName)) { + __block NSException *exceptionCaught = nil; + + match(^BOOL{ + BOOL expectedExceptionCaught = NO; + @try { + ((EXPBasicBlock)actual)(); + } @catch(NSException *e) { + exceptionCaught = e; + expectedExceptionCaught = (expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]; + } + return expectedExceptionCaught; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@, got: %@", + expectedExceptionName ? expectedExceptionName : @"any exception", + exceptionCaught ? [exceptionCaught name] : @"no exception"]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@, got: %@", + expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", + exceptionCaught ? [exceptionCaught name] : @"no exception"]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h new file mode 100644 index 00000000000..2cf5a5d2474 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m new file mode 100644 index 00000000000..3943d383957 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m @@ -0,0 +1,35 @@ +#import "EXPMatchers+raiseWithReason.h" +#import "EXPDefines.h" + +EXPMatcherImplementationBegin(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)) { + __block NSException *exceptionCaught = nil; + + match(^BOOL{ + BOOL expectedExceptionCaught = NO; + @try { + ((EXPBasicBlock)actual)(); + } @catch(NSException *e) { + exceptionCaught = e; + expectedExceptionCaught = (((expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]) && + ((expectedReason == nil) || ([[exceptionCaught reason] isEqualToString:expectedReason]))); + } + return expectedExceptionCaught; + }); + + failureMessageForTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", + expectedExceptionName ?: @"any exception", + expectedReason ?: @"any reason", + exceptionCaught ? [exceptionCaught name] : @"no exception", + exceptionCaught ? [exceptionCaught reason] : @""]; + }); + + failureMessageForNotTo(^NSString *{ + return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", + expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", + expectedReason ? [NSString stringWithFormat:@"not '%@'", expectedReason] : @"no reason", + exceptionCaught ? [exceptionCaught name] : @"no exception", + exceptionCaught ? [exceptionCaught reason] : @"no reason"]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h new file mode 100644 index 00000000000..279131dd718 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h @@ -0,0 +1,3 @@ +#import "Expecta.h" + +EXPMatcherInterface(respondTo, (SEL expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m new file mode 100644 index 00000000000..d294113ff11 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m @@ -0,0 +1,28 @@ +#import "EXPMatchers+respondTo.h" +#import "EXPMatcherHelpers.h" + +EXPMatcherImplementationBegin(respondTo, (SEL expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNull = (expected == NULL); + + prerequisite (^BOOL { + return !(actualIsNil || expectedIsNull); + }); + + match(^BOOL { + return [actual respondsToSelector:expected]; + }); + + failureMessageForTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNull) return @"the selector is null"; + return [NSString stringWithFormat:@"expected: %@ to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; + }); + + failureMessageForNotTo(^NSString *{ + if (actualIsNil) return @"the object is nil/null"; + if (expectedIsNull) return @"the selector is null"; + return [NSString stringWithFormat:@"expected: %@ not to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; + }); +} +EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h new file mode 100644 index 00000000000..ed6ef85f1f1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h @@ -0,0 +1,25 @@ +#import "EXPMatchers+beNil.h" +#import "EXPMatchers+equal.h" +#import "EXPMatchers+beInstanceOf.h" +#import "EXPMatchers+beKindOf.h" +#import "EXPMatchers+beSubclassOf.h" +#import "EXPMatchers+conformTo.h" +#import "EXPMatchers+beTruthy.h" +#import "EXPMatchers+beFalsy.h" +#import "EXPMatchers+contain.h" +#import "EXPMatchers+beSupersetOf.h" +#import "EXPMatchers+haveCountOf.h" +#import "EXPMatchers+beIdenticalTo.h" +#import "EXPMatchers+beGreaterThan.h" +#import "EXPMatchers+beGreaterThanOrEqualTo.h" +#import "EXPMatchers+beLessThan.h" +#import "EXPMatchers+beLessThanOrEqualTo.h" +#import "EXPMatchers+beInTheRangeOf.h" +#import "EXPMatchers+beCloseTo.h" +#import "EXPMatchers+raise.h" +#import "EXPMatchers+raiseWithReason.h" +#import "EXPMatchers+respondTo.h" +#import "EXPMatchers+postNotification.h" +#import "EXPMatchers+beginWith.h" +#import "EXPMatchers+endWith.h" +#import "EXPMatchers+match.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h new file mode 100644 index 00000000000..5920e3115e8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h @@ -0,0 +1,10 @@ +#import + +@interface NSObject (Expecta) + +- (void)recordFailureWithDescription:(NSString *)description + inFile:(NSString *)filename + atLine:(NSUInteger)lineNumber + expected:(BOOL)expected; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h new file mode 100644 index 00000000000..e8ff6a4c583 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h @@ -0,0 +1,7 @@ +#import + +@interface NSValue (Expecta) + +@property (nonatomic) const char *_EXP_objCType; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m new file mode 100644 index 00000000000..f6609964a95 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m @@ -0,0 +1,21 @@ +#import "NSValue+Expecta.h" +#import +#import "Expecta.h" + +EXPFixCategoriesBug(NSValue_Expecta); + +@implementation NSValue (Expecta) + +static char _EXP_typeKey; + +- (const char *)_EXP_objCType { + return [(NSString *)objc_getAssociatedObject(self, &_EXP_typeKey) cStringUsingEncoding:NSASCIIStringEncoding]; +} + +- (void)set_EXP_objCType:(const char *)_EXP_objCType { + objc_setAssociatedObject(self, &_EXP_typeKey, + @(_EXP_objCType), + OBJC_ASSOCIATION_COPY_NONATOMIC); +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE new file mode 100644 index 00000000000..a036c85fc12 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2011-2015 Specta Team - https://github.com/specta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md new file mode 100644 index 00000000000..c3eb64862ea --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md @@ -0,0 +1,293 @@ +#Expecta + +[![Build Status](http://img.shields.io/travis/specta/expecta/master.svg?style=flat)](https://travis-ci.org/specta/expecta) +[![Pod Version](http://img.shields.io/cocoapods/v/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/) +[![Pod Platform](http://img.shields.io/cocoapods/p/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/) +[![Pod License](http://img.shields.io/cocoapods/l/Expecta.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html) + +A matcher framework for Objective-C and Cocoa. + +## Introduction + +The main advantage of using Expecta over other matcher frameworks is that you do not have to specify the data types. Also, the syntax of Expecta matchers is much more readable and does not suffer from parenthesitis. + +```objective-c +expect(@"foo").to.equal(@"foo"); // `to` is a syntactic sugar and can be safely omitted. +expect(foo).notTo.equal(1); +expect([bar isBar]).to.equal(YES); +expect(baz).to.equal(3.14159); +``` + +Expecta is framework-agnostic: it works well with XCTest and XCTest-compatible test frameworks such as [Specta](http://github.com/petejkim/specta/). + + +## Setup + +You can setup Expecta using [Carthage](https://github.com/Carthage/Carthage), [CocoaPods](http://github.com/CocoaPods/CocoaPods) or [completely manually](#setting-up-manually). + +### Carthage + +1. Add Expecta to your project's `Cartfile.private`: + + ```ruby + github "specta/expecta" "master" + ``` + +2. Run `carthage update` in your project directory. +3. Drag the appropriate **Expecta.framework** for your platform (located in `Carthage/Build/`) into your application’s Xcode project, and add it to your test target(s). + +### CocoaPods + +1. Add Expecta to your project's `Podfile`: + + ```ruby + target :MyApp do + # Your app's dependencies + end + + target :MyAppTests do + pod 'Expecta', '~> 0.2.4' + end + ``` + +2. Run `pod update` or `pod install` in your project directory. + +### Setting Up Manually + +1. Clone Expecta from Github. +2. Run `rake` in your project directory to build the frameworks and libraries. +3. Add a Cocoa or Cocoa Touch Unit Testing Bundle target to your Xcode project if you don't already have one. +4. For **OS X projects**, copy and add `Expecta.framework` in the `Products/osx` folder to your project's test target. + + For **iOS projects**, copy and add `Expecta.framework` in the `Products/ios` folder to your project's test target. + + You can also use `libExpecta.a` if you prefer to link Expecta as a static library — iOS 7.x and below require this. + +6. Add `-ObjC` and `-all_load` to the **Other Linker Flags** build setting for the test target in your Xcode project. +7. You can now use Expecta in your test classes by adding the following import: + + ```objective-c + @import Expecta; // If you're using Expecta.framework + + // OR + + #import // If you're using the static library, or the framework + ``` + +## Built-in Matchers + +> `expect(x).to.equal(y);` compares objects or primitives x and y and passes if they are identical (==) or equivalent isEqual:). + +> `expect(x).to.beIdenticalTo(y);` compares objects x and y and passes if they are identical and have the same memory address. + +> `expect(x).to.beNil();` passes if x is nil. + +> `expect(x).to.beTruthy();` passes if x evaluates to true (non-zero). + +> `expect(x).to.beFalsy();` passes if x evaluates to false (zero). + +> `expect(x).to.contain(y);` passes if an instance of NSArray or NSString x contains y. + +> `expect(x).to.beSupersetOf(y);` passes if an instance of NSArray, NSSet, NSDictionary or NSOrderedSet x contains all elements of y. + +> `expect(x).to.haveCountOf(y);` passes if an instance of NSArray, NSSet, NSDictionary or NSString x has a count or length of y. + +> `expect(x).to.beEmpty();` passes if an instance of NSArray, NSSet, NSDictionary or NSString x has a count or length of . + +> `expect(x).to.beInstanceOf([Foo class]);` passes if x is an instance of a class Foo. + +> `expect(x).to.beKindOf([Foo class]);` passes if x is an instance of a class Foo or if x is an instance of any class that inherits from the class Foo. + +> `expect([Foo class]).to.beSubclassOf([Bar class]);` passes if the class Foo is a subclass of the class Bar or if it is identical to the class Bar. Use beKindOf() for class clusters. + +> `expect(x).to.beLessThan(y);` passes if `x` is less than `y`. + +> `expect(x).to.beLessThanOrEqualTo(y);` passes if `x` is less than or equal to `y`. + +> `expect(x).to.beGreaterThan(y);` passes if `x` is greater than `y`. + +> `expect(x).to.beGreaterThanOrEqualTo(y);` passes if `x` is greater than or equal to `y`. + +> `expect(x).to.beInTheRangeOf(y,z);` passes if `x` is in the range of `y` and `z`. + +> `expect(x).to.beCloseTo(y);` passes if `x` is close to `y`. + +> `expect(x).to.beCloseToWithin(y, z);` passes if `x` is close to `y` within `z`. + +> `expect(^{ /* code */ }).to.raise(@"ExceptionName");` passes if a given block of code raises an exception named `ExceptionName`. + +> `expect(^{ /* code */ }).to.raiseAny();` passes if a given block of code raises any exception. + +> `expect(x).to.conformTo(y);` passes if `x` conforms to the protocol `y`. + +> `expect(x).to.respondTo(y);` passes if `x` responds to the selector `y`. + +> `expect(^{ /* code */ }).to.notify(@"NotificationName");` passes if a given block of code generates an NSNotification amed `NotificationName`. + +> `expect(^{ /* code */ }).to.notify(notification);` passes if a given block of code generates an NSNotification equal to the passed `notification`. + +> `expect(x).to.beginWith(y);` passes if an instance of NSString, NSArray, or NSOrderedSet `x` begins with `y`. Also liased by `startWith` + +> `expect(x).to.endWith(y);` passes if an instance of NSString, NSArray, or NSOrderedSet `x` ends with `y`. + +> `expect(x).to.match(y);` passes if an instance of NSString `x` matches regular expression (given as NSString) `y` one or more times. + +## Inverting Matchers + +Every matcher's criteria can be inverted by prepending `.notTo` or `.toNot`: + +>`expect(x).notTo.equal(y);` compares objects or primitives x and y and passes if they are *not* equivalent. + +## Asynchronous Testing + +Every matcher can be made to perform asynchronous testing by prepending `.will`, `.willNot` or `after(...)`: + +>`expect(x).will.beNil();` passes if x becomes nil before the default timeout. +> +>`expect(x).willNot.beNil();` passes if x becomes non-nil before the default timeout. +> +>`expect(x).after(3).to.beNil();` passes if x becoms nil after 3.0 seconds. +> +>`expect(x).after(2.5).notTo.equal(42);` passes if x doesn't equal 42 after 2.5 seconds. + +The default timeout is 1.0 second and is used for all matchers if not otherwise specified. This setting can be changed by calling `[Expecta setAsynchronousTestTimeout:x]`, where `x` is the desired timeout in seconds. + +```objective-c +describe(@"Foo", ^{ + beforeAll(^{ + // All asynchronous matching using `will` and `willNot` + // will have a timeout of 2.0 seconds + [Expecta setAsynchronousTestTimeout:2]; + }); + + it(@"will not be nil", ^{ + // Test case where default timeout is used + expect(foo).willNot.beNil(); + }); + + it(@"should equal 42 after 3 seconds", ^{ + // Signle case where timeout differs from the default + expect(foo).after(3).to.equal(42); + }); +}); +``` + +## Forced Failing + +You can fail a test by using the `failure` attribute. This can be used to test branching. + +> `failure(@"This should not happen");` outright fails a test. + + +## Writing New Matchers + +Writing a new matcher is easy with special macros provided by Expecta. Take a look at how `.beKindOf()` matcher is defined: + +`EXPMatchers+beKindOf.h` + +```objective-c +#import "Expecta.h" + +EXPMatcherInterface(beKindOf, (Class expected)); +// 1st argument is the name of the matcher function +// 2nd argument is the list of arguments that may be passed in the function +// call. +// Multiple arguments are fine. (e.g. (int foo, float bar)) + +#define beAKindOf beKindOf +``` + +`EXPMatchers+beKindOf.m` + +```objective-c +#import "EXPMatchers+beKindOf.h" + +EXPMatcherImplementationBegin(beKindOf, (Class expected)) { + BOOL actualIsNil = (actual == nil); + BOOL expectedIsNil = (expected == nil); + + prerequisite(^BOOL { + return !(actualIsNil || expectedIsNil); + // Return `NO` if matcher should fail whether or not the result is inverted + // using `.Not`. + }); + + match(^BOOL { + return [actual isKindOfClass:expected]; + // Return `YES` if the matcher should pass, `NO` if it should not. + // The actual value/object is passed as `actual`. + // Please note that primitive values will be wrapped in NSNumber/NSValue. + }); + + failureMessageForTo(^NSString * { + if (actualIsNil) + return @"the actual value is nil/null"; + if (expectedIsNil) + return @"the expected value is nil/null"; + return [NSString + stringWithFormat:@"expected: a kind of %@, " + "got: an instance of %@, which is not a kind of %@", + [expected class], [actual class], [expected class]]; + // Return the message to be displayed when the match function returns `YES`. + }); + + failureMessageForNotTo(^NSString * { + if (actualIsNil) + return @"the actual value is nil/null"; + if (expectedIsNil) + return @"the expected value is nil/null"; + return [NSString + stringWithFormat:@"expected: not a kind of %@, " + "got: an instance of %@, which is a kind of %@", + [expected class], [actual class], [expected class]]; + // Return the message to be displayed when the match function returns `NO`. + }); +} +EXPMatcherImplementationEnd +``` + +## Dynamic Predicate Matchers + +It is possible to add predicate matchers by simply defining the matcher interface, with the matcher implementation being handled at runtime by delegating to the predicate method on your object. + +For instance, if you have the following class: + +```objc +@interface LightSwitch : NSObject +@property (nonatomic, assign, getter=isTurnedOn) BOOL turnedOn; +@end + +@implementation LightSwitch +@synthesize turnedOn; +@end +``` + +The normal way to write an assertion that the switch is turned on would be: + +```objc +expect([lightSwitch isTurnedOn]).to.beTruthy(); +``` + +However, if we define a custom predicate matcher: + +```objc +EXPMatcherInterface(isTurnedOn, (void)); +``` + +(Note: we haven't defined the matcher implementation, just it's interface) + +You can now write your assertion as follows: + +```objc +expect(lightSwitch).isTurnedOn(); +``` + +## Contribution Guidelines + +* Please use only spaces and indent 2 spaces at a time. +* Please prefix instance variable names with a single underscore (`_`). +* Please prefix custom classes and functions defined in the global scope with `EXP`. + +## License + +Copyright (c) 2012-2015 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE). diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h new file mode 120000 index 00000000000..ac762c82387 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h new file mode 120000 index 00000000000..9dcc623c638 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h new file mode 120000 index 00000000000..56feb9fb85e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 120000 index 00000000000..67519d98485 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h new file mode 120000 index 00000000000..68fc7744f28 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h new file mode 120000 index 00000000000..a5a38da7dc9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h new file mode 120000 index 00000000000..fd1322db9c2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h new file mode 120000 index 00000000000..d9b35fb754f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h new file mode 120000 index 00000000000..ca8209b81f9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h new file mode 120000 index 00000000000..e36a765d826 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h new file mode 120000 index 00000000000..835101de7bf --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h new file mode 120000 index 00000000000..c534ebfb02a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h new file mode 120000 index 00000000000..f9928133851 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h new file mode 120000 index 00000000000..8f2e221939a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h new file mode 120000 index 00000000000..a95d67380f1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h new file mode 120000 index 00000000000..95017cce573 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h new file mode 120000 index 00000000000..730b167dcde --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h new file mode 120000 index 00000000000..8efd8262093 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h new file mode 120000 index 00000000000..c8df6ef17b8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h new file mode 120000 index 00000000000..ebefa87b183 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPBlockDefinedMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h new file mode 120000 index 00000000000..22add0cdca0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDefines.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h new file mode 120000 index 00000000000..54aa0b5e627 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDoubleTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h new file mode 120000 index 00000000000..a677bddfca1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPExpect.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h new file mode 120000 index 00000000000..2b405694a4d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPFloatTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h new file mode 120000 index 00000000000..3b20a122ce1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h new file mode 120000 index 00000000000..697385b078a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h new file mode 120000 index 00000000000..0eed377cb9d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h new file mode 120000 index 00000000000..92643c49a0e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h new file mode 120000 index 00000000000..1ccc62b4aca --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h new file mode 120000 index 00000000000..db5bf966aed --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h new file mode 120000 index 00000000000..6e17ea43ee0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h new file mode 120000 index 00000000000..362d8a7f6df --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h new file mode 120000 index 00000000000..4dd60632f6d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h new file mode 120000 index 00000000000..113c7d3725c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h new file mode 120000 index 00000000000..675e86a5663 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h new file mode 120000 index 00000000000..c16df2f05a1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h new file mode 120000 index 00000000000..9f65a6c12aa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h new file mode 120000 index 00000000000..27aa7bea5c6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h new file mode 120000 index 00000000000..ea3f770a19a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h new file mode 120000 index 00000000000..192ac764ef7 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h new file mode 120000 index 00000000000..2efba8fea39 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h new file mode 120000 index 00000000000..062fb51d7e7 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h new file mode 120000 index 00000000000..3661fe5f30c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h new file mode 120000 index 00000000000..7e6c9cf1c9c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h new file mode 120000 index 00000000000..7bee788667d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h new file mode 120000 index 00000000000..f46d23adf9c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h new file mode 120000 index 00000000000..18f995de6cd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+match.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h new file mode 120000 index 00000000000..c9422e3e726 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h new file mode 120000 index 00000000000..901e04c192b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h new file mode 120000 index 00000000000..5b063b64e12 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h new file mode 120000 index 00000000000..e7a5fad1391 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h new file mode 120000 index 00000000000..a454dc4083e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h new file mode 120000 index 00000000000..60fae89f1c5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPUnsupportedObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h new file mode 120000 index 00000000000..45ef877d842 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h new file mode 120000 index 00000000000..36a99e13b27 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h new file mode 120000 index 00000000000..c59d3fc609f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaSupport.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h new file mode 120000 index 00000000000..55c3635a699 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSObject+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h new file mode 120000 index 00000000000..ee557b848d6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSValue+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h new file mode 120000 index 00000000000..624c6b8f44e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h @@ -0,0 +1 @@ +../../../ISO8601/ISO8601/ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h new file mode 120000 index 00000000000..f5a75430779 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h @@ -0,0 +1 @@ +../../../ISO8601/ISO8601/ISO8601Serialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h new file mode 120000 index 00000000000..bd1ba879903 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h @@ -0,0 +1 @@ +../../../ISO8601/ISO8601/NSDate+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h new file mode 120000 index 00000000000..9f3f086f96a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h new file mode 120000 index 00000000000..f07aa339805 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h new file mode 120000 index 00000000000..ad42377ed19 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h new file mode 120000 index 00000000000..b2109ddc067 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h new file mode 120000 index 00000000000..06a87feab9b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h new file mode 120000 index 00000000000..3769776cbe6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModelArray.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h new file mode 120000 index 00000000000..faee5d5bfe0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h new file mode 120000 index 00000000000..476fbdd25c3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModelError.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h new file mode 120000 index 00000000000..ae3423a3289 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelLib.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h new file mode 120000 index 00000000000..4517ac33392 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h new file mode 120000 index 00000000000..b396c93dfbe --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h new file mode 120000 index 00000000000..dbb535a6021 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTCallSite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h new file mode 120000 index 00000000000..659770480c5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTCompiledExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h new file mode 120000 index 00000000000..79a18d4c5e1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h new file mode 120000 index 00000000000..1effac57bfb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTExampleGroup.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h new file mode 120000 index 00000000000..64df734234a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h new file mode 120000 index 00000000000..7f83b65ff3d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h new file mode 120000 index 00000000000..579d360e639 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTSharedExampleGroups.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h new file mode 120000 index 00000000000..3b1679ae8c1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTSpec.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h new file mode 120000 index 00000000000..2f607e468cc --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTTestSuite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h new file mode 120000 index 00000000000..111c968e99b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h new file mode 120000 index 00000000000..fd1ad375682 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SpectaDSL.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h new file mode 120000 index 00000000000..9428b13249f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SpectaTypes.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h new file mode 120000 index 00000000000..576248091bd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SpectaUtility.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h new file mode 120000 index 00000000000..bb4a8e02612 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/XCTest+Private.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h new file mode 120000 index 00000000000..95f58cccde8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/XCTestCase+Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h new file mode 120000 index 00000000000..3d3793de6d2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/JSONValueTransformer+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h new file mode 120000 index 00000000000..18a025dde73 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGApiClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h new file mode 120000 index 00000000000..edb0ca0ccf9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGCategory.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h new file mode 120000 index 00000000000..1a9e71d1043 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGConfiguration.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h new file mode 120000 index 00000000000..36276ef6196 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGFile.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h new file mode 120000 index 00000000000..73b578f883d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGJSONRequestSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h new file mode 120000 index 00000000000..741bf952369 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGJSONResponseSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h new file mode 120000 index 00000000000..e5ca8eeea0b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGMyresult.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h new file mode 120000 index 00000000000..1e182c9b1ea --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGMythingApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h new file mode 120000 index 00000000000..8ccdcf8160f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h new file mode 120000 index 00000000000..1c8de308c64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGOrder.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h new file mode 120000 index 00000000000..6492918f32e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGPet.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h new file mode 120000 index 00000000000..6820750d235 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGPetApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h new file mode 120000 index 00000000000..f5153362a77 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGQueryParamCollection.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h new file mode 120000 index 00000000000..d3f01868cfa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGStoreApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h new file mode 120000 index 00000000000..1880256cb36 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGTag.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h new file mode 120000 index 00000000000..7f88cdc4511 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGUser.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h new file mode 120000 index 00000000000..bd97f82eebf --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGUserApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h new file mode 120000 index 00000000000..ac762c82387 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h new file mode 120000 index 00000000000..9dcc623c638 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h new file mode 120000 index 00000000000..56feb9fb85e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h new file mode 120000 index 00000000000..67519d98485 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h new file mode 120000 index 00000000000..68fc7744f28 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h new file mode 120000 index 00000000000..a5a38da7dc9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h new file mode 120000 index 00000000000..fd1322db9c2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h new file mode 120000 index 00000000000..d9b35fb754f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h new file mode 120000 index 00000000000..ca8209b81f9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h new file mode 120000 index 00000000000..e36a765d826 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h new file mode 120000 index 00000000000..835101de7bf --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h @@ -0,0 +1 @@ +../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h new file mode 120000 index 00000000000..c534ebfb02a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h new file mode 120000 index 00000000000..f9928133851 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h new file mode 120000 index 00000000000..8f2e221939a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h new file mode 120000 index 00000000000..a95d67380f1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h new file mode 120000 index 00000000000..95017cce573 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h new file mode 120000 index 00000000000..730b167dcde --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h new file mode 120000 index 00000000000..8efd8262093 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h new file mode 120000 index 00000000000..c8df6ef17b8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h @@ -0,0 +1 @@ +../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h new file mode 120000 index 00000000000..ebefa87b183 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPBlockDefinedMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h new file mode 120000 index 00000000000..22add0cdca0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDefines.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h new file mode 120000 index 00000000000..54aa0b5e627 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPDoubleTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h new file mode 120000 index 00000000000..a677bddfca1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPExpect.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h new file mode 120000 index 00000000000..2b405694a4d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPFloatTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h new file mode 120000 index 00000000000..3b20a122ce1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h new file mode 120000 index 00000000000..697385b078a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h new file mode 120000 index 00000000000..0eed377cb9d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h new file mode 120000 index 00000000000..92643c49a0e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h new file mode 120000 index 00000000000..1ccc62b4aca --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h new file mode 120000 index 00000000000..db5bf966aed --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h new file mode 120000 index 00000000000..6e17ea43ee0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h new file mode 120000 index 00000000000..362d8a7f6df --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h new file mode 120000 index 00000000000..4dd60632f6d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h new file mode 120000 index 00000000000..113c7d3725c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h new file mode 120000 index 00000000000..675e86a5663 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h new file mode 120000 index 00000000000..c16df2f05a1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h new file mode 120000 index 00000000000..9f65a6c12aa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h new file mode 120000 index 00000000000..27aa7bea5c6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h new file mode 120000 index 00000000000..ea3f770a19a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h new file mode 120000 index 00000000000..192ac764ef7 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h new file mode 120000 index 00000000000..2efba8fea39 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h new file mode 120000 index 00000000000..062fb51d7e7 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h new file mode 120000 index 00000000000..3661fe5f30c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h new file mode 120000 index 00000000000..7e6c9cf1c9c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h new file mode 120000 index 00000000000..7bee788667d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h new file mode 120000 index 00000000000..f46d23adf9c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h new file mode 120000 index 00000000000..18f995de6cd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+match.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h new file mode 120000 index 00000000000..c9422e3e726 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h new file mode 120000 index 00000000000..901e04c192b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h new file mode 120000 index 00000000000..5b063b64e12 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h new file mode 120000 index 00000000000..e7a5fad1391 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h new file mode 120000 index 00000000000..a454dc4083e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Matchers/EXPMatchers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h new file mode 120000 index 00000000000..60fae89f1c5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/EXPUnsupportedObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h new file mode 120000 index 00000000000..45ef877d842 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h new file mode 120000 index 00000000000..36a99e13b27 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h new file mode 120000 index 00000000000..c59d3fc609f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/ExpectaSupport.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h new file mode 120000 index 00000000000..55c3635a699 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSObject+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h new file mode 120000 index 00000000000..ee557b848d6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h @@ -0,0 +1 @@ +../../../Expecta/Expecta/NSValue+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h new file mode 120000 index 00000000000..624c6b8f44e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h @@ -0,0 +1 @@ +../../../ISO8601/ISO8601/ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h new file mode 120000 index 00000000000..f5a75430779 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h @@ -0,0 +1 @@ +../../../ISO8601/ISO8601/ISO8601Serialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h new file mode 120000 index 00000000000..bd1ba879903 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h @@ -0,0 +1 @@ +../../../ISO8601/ISO8601/NSDate+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h new file mode 120000 index 00000000000..9f3f086f96a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h new file mode 120000 index 00000000000..f07aa339805 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h new file mode 120000 index 00000000000..ad42377ed19 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h new file mode 120000 index 00000000000..b2109ddc067 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h new file mode 120000 index 00000000000..06a87feab9b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h new file mode 120000 index 00000000000..3769776cbe6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModelArray.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h new file mode 120000 index 00000000000..faee5d5bfe0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h new file mode 120000 index 00000000000..476fbdd25c3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModel/JSONModelError.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h new file mode 120000 index 00000000000..ae3423a3289 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelLib.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h new file mode 120000 index 00000000000..4517ac33392 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h new file mode 120000 index 00000000000..b396c93dfbe --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h @@ -0,0 +1 @@ +../../../JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h new file mode 120000 index 00000000000..dbb535a6021 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTCallSite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h new file mode 120000 index 00000000000..659770480c5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTCompiledExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h new file mode 120000 index 00000000000..79a18d4c5e1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h new file mode 120000 index 00000000000..1effac57bfb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTExampleGroup.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h new file mode 120000 index 00000000000..64df734234a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h new file mode 120000 index 00000000000..7f83b65ff3d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h new file mode 120000 index 00000000000..579d360e639 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTSharedExampleGroups.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h new file mode 120000 index 00000000000..3b1679ae8c1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTSpec.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h new file mode 120000 index 00000000000..2f607e468cc --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SPTTestSuite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h new file mode 120000 index 00000000000..111c968e99b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h new file mode 120000 index 00000000000..fd1ad375682 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SpectaDSL.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h new file mode 120000 index 00000000000..9428b13249f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SpectaTypes.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h new file mode 120000 index 00000000000..576248091bd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/SpectaUtility.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h new file mode 120000 index 00000000000..bb4a8e02612 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/XCTest+Private.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h new file mode 120000 index 00000000000..95f58cccde8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h @@ -0,0 +1 @@ +../../../Specta/Specta/Specta/XCTestCase+Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h new file mode 120000 index 00000000000..3d3793de6d2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/JSONValueTransformer+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h new file mode 120000 index 00000000000..18a025dde73 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGApiClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h new file mode 120000 index 00000000000..edb0ca0ccf9 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGCategory.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h new file mode 120000 index 00000000000..1a9e71d1043 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGConfiguration.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h new file mode 120000 index 00000000000..36276ef6196 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGFile.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h new file mode 120000 index 00000000000..73b578f883d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGJSONRequestSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h new file mode 120000 index 00000000000..741bf952369 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGJSONResponseSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h new file mode 120000 index 00000000000..e5ca8eeea0b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGMyresult.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h new file mode 120000 index 00000000000..1e182c9b1ea --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGMythingApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h new file mode 120000 index 00000000000..8ccdcf8160f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h new file mode 120000 index 00000000000..1c8de308c64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGOrder.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h new file mode 120000 index 00000000000..6492918f32e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGPet.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h new file mode 120000 index 00000000000..6820750d235 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGPetApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h new file mode 120000 index 00000000000..f5153362a77 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGQueryParamCollection.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h new file mode 120000 index 00000000000..d3f01868cfa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGStoreApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h new file mode 120000 index 00000000000..1880256cb36 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGTag.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h new file mode 120000 index 00000000000..7f88cdc4511 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGUser.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h new file mode 120000 index 00000000000..bd97f82eebf --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h @@ -0,0 +1 @@ +../../../../../SwaggerClient/SWGUserApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h new file mode 100644 index 00000000000..fe5e6015b6d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h @@ -0,0 +1,22 @@ +// +// ISO8601.h +// ISO8601 +// +// Created by Sam Soffes on 7/30/14. +// Copyright (c) 2014 Sam Soffes. All rights reserved. +// + +#if __has_feature(modules) + @import Foundation; +#else + #import +#endif + +//! Project version number for ISO8601. +FOUNDATION_EXPORT double ISO8601VersionNumber; + +//! Project version string for ISO8601. +FOUNDATION_EXPORT const unsigned char ISO8601VersionString[]; + +#import +#import diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h new file mode 100644 index 00000000000..5980bd77758 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h @@ -0,0 +1,40 @@ +// +// ISO8601Serialization.h +// ISO8601 +// +// Created by Sam Soffes on 7/30/14. +// Copyright (c) 2014 Sam Soffes. All rights reserved. +// + +#if __has_feature(modules) + @import Foundation; +#else + #import +#endif + +@interface ISO8601Serialization : NSObject + +#pragma mark - Reading + +/** + Create date components from an ISO8601 string. + + @param string An ISO8601 string. + + @return An object containing the date components for a given ISO8601 string. + */ ++ (NSDateComponents *)dateComponentsForString:(NSString *)string; + + +#pragma mark - Writing + +/** + Create an ISO8601 string from date components. + + @param components Date components to use. + + @return A string containing the date components as an ISO8601 string. + */ ++ (NSString *)stringForDateComponents:(NSDateComponents *)components; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m new file mode 100644 index 00000000000..a129fb207ff --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m @@ -0,0 +1,152 @@ +// +// ISO8601Serialization.m +// ISO8601 +// +// Created by Sam Soffes on 7/30/14. +// Copyright (c) 2014 Sam Soffes. All rights reserved. +// + +#import "ISO8601Serialization.h" + +@implementation ISO8601Serialization + ++ (NSDateComponents *)dateComponentsForString:(NSString *)string { + NSScanner *scanner = [[NSScanner alloc] initWithString:string]; + scanner.charactersToBeSkipped = nil; + + NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; + + // Year + NSInteger year; + if (![scanner scanInteger:&year]) { + return nil; + } + dateComponents.year = year; + + // Month + if (![scanner scanString:@"-" intoString:nil]) { + return dateComponents; + } + + NSInteger month; + if (![scanner scanInteger:&month]) { + return dateComponents; + } + dateComponents.month = month; + + // Day + if (![scanner scanString:@"-" intoString:nil]) { + return dateComponents; + } + + NSInteger day; + if (![scanner scanInteger:&day]) { + return dateComponents; + } + dateComponents.day = day; + + // Time + if (![scanner scanCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"T "] intoString:nil]) { + return dateComponents; + } + + // Hour + NSInteger hour; + if (![scanner scanInteger:&hour]) { + return dateComponents; + } + dateComponents.hour = hour; + + // Minute + if (![scanner scanString:@":" intoString:nil]) { + return dateComponents; + } + + NSInteger minute; + if (![scanner scanInteger:&minute]) { + return dateComponents; + } + dateComponents.minute = minute; + + // Second + NSUInteger scannerLocation = scanner.scanLocation; + if ([scanner scanString:@":" intoString:nil]) { + NSInteger second; + if (![scanner scanInteger:&second]) { + return dateComponents; + } + dateComponents.second = second; + } else { + scanner.scanLocation = scannerLocation; + } + + // Zulu + scannerLocation = scanner.scanLocation; + [scanner scanUpToString:@"Z" intoString:nil]; + if ([scanner scanString:@"Z" intoString:nil]) { + // Z stands for the Zulu (Z in the NATO phonetic alphabet) time zone. UTC and the Zulu time + // zone are synonymous. + dateComponents.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; + return dateComponents; + } + + // Move back to end of time + scanner.scanLocation = scannerLocation; + + // Look for offset + NSCharacterSet *signs = [NSCharacterSet characterSetWithCharactersInString:@"+-"]; + [scanner scanUpToCharactersFromSet:signs intoString:nil]; + NSString *sign; + if (![scanner scanCharactersFromSet:signs intoString:&sign]) { + return dateComponents; + } + + // Offset hour + NSInteger timeZoneOffset = 0; + NSInteger timeZoneOffsetHour = 0; + NSInteger timeZoneOffsetMinute = 0; + if (![scanner scanInteger:&timeZoneOffsetHour]) { + return dateComponents; + } + + // Check for colon + BOOL colonExists = [scanner scanString:@":" intoString:nil]; + if (!colonExists && timeZoneOffsetHour > 14) { + timeZoneOffsetMinute = timeZoneOffsetHour % 100; + timeZoneOffsetHour = floor(timeZoneOffsetHour / 100); + } else { + // Offset minute + [scanner scanInteger:&timeZoneOffsetMinute]; + } + + timeZoneOffset = (timeZoneOffsetHour * 60 * 60) + (timeZoneOffsetMinute * 60); + dateComponents.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:timeZoneOffset * ([sign isEqualToString:@"-"] ? -1 : 1)]; + + return dateComponents; +} + + ++ (NSString *)stringForDateComponents:(NSDateComponents *)components { + NSString *string = [[NSString alloc] initWithFormat:@"%04li-%02i-%02iT%02i:%02i:%02i", (long)components.year, + (int)components.month, (int)components.day, (int)components.hour, (int)components.minute, + (int)components.second]; + + NSTimeZone *timeZone = components.timeZone; + if (!timeZone) { + return string; + } + + if (timeZone.secondsFromGMT != 0) { + NSInteger hoursOffset = timeZone.secondsFromGMT / 3600; + + // TODO: Assuming whole hour offsets at the moment + NSUInteger secondsOffset = 0; + + NSString *sign = (hoursOffset >= 0) ? @"+" : @"-"; + return [string stringByAppendingFormat:@"%@%02i:%02i", sign, abs((int)hoursOffset), (int)secondsOffset]; + } + + return [string stringByAppendingString:@"Z"]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h new file mode 100644 index 00000000000..d26c8271f54 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h @@ -0,0 +1,65 @@ +// +// NSDate+ISO8601.h +// ISO8601 +// +// Created by Sam Soffes on 7/30/14. +// Copyright (c) 2014 Sam Soffes. All rights reserved. +// + +#if __has_feature(modules) + @import Foundation; +#else + #import +#endif + +@interface NSDate (ISO8601) + +#pragma mark - Simple + +/** + Returns a new date represented by an ISO8601 string. + + @param string An ISO8601 string. + + @return A date represented by the ISO8601 string. + */ ++ (NSDate *)dateWithISO8601String:(NSString *)string; + +/** + Returns a string representation of the receiver in ISO8601 format. + + @return A string representation of the receiver in ISO8601 format in the current calendar's time + zone. + */ +- (NSString *)ISO8601String; + + +#pragma mark - Advanced + +/** + Returns a new date represented by an ISO8601 string as well as the time zone. + + @param string An ISO8601 string. + + @param timeZone Upon return, contains the time zone or `nil` if none was specified. + + @param calendar The calender to use for converting the date to date components. If `nil` is specified, the current + calendar is used. + + @return A date represented by the ISO8601 string. + */ ++ (NSDate *)dateWithISO8601String:(NSString *)string timeZone:(inout NSTimeZone **)timeZone usingCalendar:(NSCalendar *)calendar; + +/** + Returns a string representation of the receiver in ISO8601 format. + + @param timeZone The time zone to use. If `nil` is specified, UTC will be used. + + @param calendar The calender to use for converting the date to date components. If `nil` is specified, the current + calendar is used. + + @return A string representation of the receiver in ISO8601 format in `timeZone`. + */ +- (NSString *)ISO8601StringWithTimeZone:(NSTimeZone *)timeZone usingCalendar:(NSCalendar *)calendar; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m new file mode 100644 index 00000000000..32789e9dc64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m @@ -0,0 +1,69 @@ +// +// NSDate+ISO8601.m +// ISO8601 +// +// Created by Sam Soffes on 7/30/14. +// Copyright (c) 2014 Sam Soffes. All rights reserved. +// + +#import "NSDate+ISO8601.h" +#import "ISO8601Serialization.h" + +@implementation NSDate (ISO8601) + +#pragma mark - Reading + ++ (NSDate *)dateWithISO8601String:(NSString *)string { + return [self dateWithISO8601String:string timeZone:nil usingCalendar:nil]; +} + + ++ (NSDate *)dateWithISO8601String:(NSString *)string timeZone:(inout NSTimeZone *__autoreleasing *)timeZone usingCalendar:(NSCalendar *)calendar { + NSDateComponents *components = [ISO8601Serialization dateComponentsForString:string]; + if (components == nil) { + return nil; + } + + if (!calendar) { + calendar = [NSCalendar currentCalendar]; + } + + NSTimeZone *UTCTimeZone = [NSTimeZone timeZoneWithName:@"UTC"]; + + if (timeZone) { + *timeZone = components.timeZone ? components.timeZone : UTCTimeZone; + } + + // Use a UTC calendar to generate the date + calendar.timeZone = UTCTimeZone; + + return [calendar dateFromComponents:components]; +} + + +#pragma mark - Writing + +- (NSString *)ISO8601String { + return [self ISO8601StringWithTimeZone:[NSTimeZone localTimeZone] usingCalendar:nil]; +} + + +- (NSString *)ISO8601StringWithTimeZone:(NSTimeZone *)timeZone usingCalendar:(NSCalendar *)calendar { + if (!calendar) { + calendar = [NSCalendar currentCalendar]; + } + + if (timeZone) { + calendar.timeZone = timeZone; + } else { + calendar.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; + } + + NSCalendarUnit units = (NSCalendarUnit)(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | + NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitTimeZone); + + NSDateComponents *dateComponents = [calendar components:units fromDate:self]; + return [ISO8601Serialization stringForDateComponents:dateComponents]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE new file mode 100644 index 00000000000..e333978ed9f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2014 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown new file mode 100644 index 00000000000..2aeedd1683f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown @@ -0,0 +1,73 @@ +# ISO8601 + +[![Version](https://img.shields.io/github/release/soffes/ISO8601.svg)](https://github.com/soffes/ISO8601/releases) [![Build Status](https://travis-ci.org/soffes/ISO8601.svg?branch=master)](https://travis-ci.org/soffes/ISO8601) [![Coverage Status](https://coveralls.io/repos/soffes/ISO8601/badge.svg?branch=master)](https://coveralls.io/r/soffes/ISO8601?branch=master) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![CocoaPods compatible](https://img.shields.io/cocoapods/v/ISO8601.svg)](https://cocoapods.org/pods/ISO8601) + +Fast [ISO8601](http://en.wikipedia.org/wiki/ISO8601) date parser and writer for iOS & Mac. + + +## Installation + +[Carthage](https://github.com/carthage/carthage) is the recommended way to install ISO8601. Add the following to your Cartfile: + +``` ruby +github "soffes/ISO8601" +``` + +You can also install with [CocoaPods](https://cocoapods.org): + +``` ruby +pod 'ISO8601' +``` + +For manual installation, I recommend adding the project as a subproject to your project or workspace and adding the framework as a target dependency. + + +## Usage + +First, import the appropriate header: + +``` objc +@import ISO8601; // Use #import if you're using CocoaPods +``` + +This library uses `NSDateComponents` for reading and writing. Here's an example: + +``` objc +// Reading +NSDateComponents *dateComponents = [ISO8601Serialization dateComponentsForString:@"1999-05-19T23:55:21+09:00"]; + +// Writing +NSString *ISO8601String = [ISO8601Serialization stringForDateComponents:dateComponents]; +``` + +There is an `NSDate` category for convenient conversion: + +``` objc +// Reading +NSDate *date = [NSDate dateWithISO8601String:@"1999-05-19T23:55:21+09:00"]; + +// Writing +NSString *ISO8601String = [date ISO8601String]; +``` + +If you require more control over conversion or need to know the input time zone, you can use the advanced methods the category provides: + + +``` objc +// Reading +NSTimeZone *timeZone; +NSDate *date = [NSDate dateWithISO8601String:@"1999-05-19T23:55:21+09:00" timeZone:&timeZone usingCalendar:calendarOrNil]; + +// Writing +NSString *ISO8601String = [date ISO8601StringWithTimeZone:timeZoneOrNil usingCalendar:calendarOrNil]; +``` + +## Notes + +`NSDateComponents` is the core data structure because `NSDate` doesn't perserve time zone information well. + +It's worth noting that a value in the `NSDateComponents` will be `nil` if it is not in the input string. For example, `1999-05-19T23:55:21` will have a `nil` time zone, but `1999-05-19T23:55:21+00:00` and `1999-05-19T23:55:21Z` will have a UTC time zone. + +The `+[NSDate dateWithISO8601String:]` category will always return a UTC date. If you want a date in another time zone, you should use `+[NSDate ISO8601StringWithTimeZone:usingCalendar:]` (you may pass `nil` for the calendar parameter to use the current calendar). + +Enjoy. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h new file mode 100644 index 00000000000..56f4cfa369b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h @@ -0,0 +1,334 @@ +// +// JSONModel.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import + +#import "JSONModelError.h" +#import "JSONValueTransformer.h" +#import "JSONKeyMapper.h" + +///////////////////////////////////////////////////////////////////////////////////////////// +#if TARGET_IPHONE_SIMULATOR +#define JMLog( s, ... ) NSLog( @"[%@:%d] %@", [[NSString stringWithUTF8String:__FILE__] \ +lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] ) +#else +#define JMLog( s, ... ) +#endif +///////////////////////////////////////////////////////////////////////////////////////////// + +#pragma mark - Property Protocols +/** + * Protocol for defining properties in a JSON Model class that should not be considered at all + * neither while importing nor when exporting JSON. + * + * @property (strong, nonatomic) NSString<Ignore>* propertyName; + * + */ +@protocol Ignore +@end + +/** + * Protocol for defining optional properties in a JSON Model class. Use like below to define + * model properties that are not required to have values in the JSON input: + * + * @property (strong, nonatomic) NSString<Optional>* propertyName; + * + */ +@protocol Optional +@end + +/** + * Protocol for defining index properties in a JSON Model class. Use like below to define + * model properties that are considered the Model's identifier (id). + * + * @property (strong, nonatomic) NSString<Index>* propertyName; + * + */ +@protocol Index +@end + +/** + * Make all objects Optional compatible to avoid compiler warnings + */ +@interface NSObject(JSONModelPropertyCompatibility) +@end + +/** + * ConvertOnDemand enables lazy model initialization for NSArrays of models + * + * @property (strong, nonatomic) NSArray<JSONModel, ConvertOnDemand>* propertyName; + */ +@protocol ConvertOnDemand +@end + +/** + * Make all arrays ConvertOnDemand compatible to avoid compiler warnings + */ +@interface NSArray(JSONModelPropertyCompatibility) +@end + +///////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - JSONModel protocol +/** + * A protocol describing an abstract JSONModel class + * JSONModel conforms to this protocol, so it can use itself abstractly + */ +@protocol AbstractJSONModelProtocol + +@required + /** + * All JSONModel classes should implement initWithDictionary: + * + * For most classes the default initWithDictionary: inherited from JSONModel itself + * should suffice, but developers have the option ot also overwrite it if needed. + * + * @param dict a dictionary holding JSON objects, to be imported in the model. + * @param err an error or NULL + */ + -(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError**)err; + + +/** + * All JSONModel classes should implement initWithData:error: + * + * For most classes the default initWithData: inherited from JSONModel itself + * should suffice, but developers have the option ot also overwrite it if needed. + * + * @param data representing a JSON response (usually fetched from web), to be imported in the model. + * @param err an error or NULL + */ +-(instancetype)initWithData:(NSData*)data error:(NSError**)error; + +/** + * All JSONModel classes should be able to export themselves as a dictionary of + * JSON compliant objects. + * + * For most classes the inherited from JSONModel default toDictionary implementation + * should suffice. + * + * @return NSDictionary dictionary of JSON compliant objects + * @exception JSONModelTypeNotAllowedException thrown when one of your model's custom class properties + * does not have matching transformer method in an JSONValueTransformer. + */ + -(NSDictionary*)toDictionary; + + /** + * Export a model class to a dictionary, including only given properties + * + * @param propertyNames the properties to export; if nil, all properties exported + * @return NSDictionary dictionary of JSON compliant objects + * @exception JSONModelTypeNotAllowedException thrown when one of your model's custom class properties + * does not have matching transformer method in an JSONValueTransformer. + */ + -(NSDictionary*)toDictionaryWithKeys:(NSArray*)propertyNames; +@end + +///////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - JSONModel interface +/** + * The JSONModel is an abstract model class, you should not instantiate it directly, + * as it does not have any properties, and therefore cannot serve as a data model. + * Instead you should subclass it, and define the properties you want your data model + * to have as properties of your own class. + */ +@interface JSONModel : NSObject + +/** @name Creating and initializing models */ + + /** + * Create a new model instance and initialize it with the JSON from a text parameter. The method assumes UTF8 encoded input text. + * @param string JSON text data + * @param err an initialization error or nil + * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, + * or a property type in your model is not supported by JSONValueTransformer and its categories + * @see initWithString:usingEncoding:error: for use of custom text encodings + */ + -(instancetype)initWithString:(NSString*)string error:(JSONModelError**)err; + + /** + * Create a new model instance and initialize it with the JSON from a text parameter using the given encoding. + * @param string JSON text data + * @param encoding the text encoding to use when parsing the string (see NSStringEncoding) + * @param err an initialization error or nil + * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, + * or a property type in your model is not supported by JSONValueTransformer and its categories + */ + -(instancetype)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err; + + -(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err; + + -(instancetype)initWithData:(NSData *)data error:(NSError **)error; + +/** @name Exporting model contents */ + + /** + * Export the whole object to a dictionary + * @return dictionary containing the data model + */ + -(NSDictionary*)toDictionary; + + /** + * Export the whole object to a JSON data text string + * @return JSON text describing the data model + */ + -(NSString*)toJSONString; + + /** + * Export the whole object to a JSON data text string + * @return JSON text data describing the data model + */ + -(NSData*)toJSONData; + + /** + * Export the specified properties of the object to a dictionary + * @param propertyNames the properties to export; if nil, all properties exported + * @return dictionary containing the data model + */ + -(NSDictionary*)toDictionaryWithKeys:(NSArray*)propertyNames; + + /** + * Export the specified properties of the object to a JSON data text string + * @param propertyNames the properties to export; if nil, all properties exported + * @return JSON text describing the data model + */ + -(NSString*)toJSONStringWithKeys:(NSArray*)propertyNames; + + /** + * Export the specified properties of the object to a JSON data text string + * @param propertyNames the properties to export; if nil, all properties exported + * @return JSON text data describing the data model + */ + -(NSData*)toJSONDataWithKeys:(NSArray*)propertyNames; + +/** @name Batch methods */ + + /** + * If you have a list of dictionaries in a JSON feed, you can use this method to create an NSArray + * of model objects. Handy when importing JSON data lists. + * This method will loop over the input list and initialize a data model for every dictionary in the list. + * + * @param array list of dictionaries to be imported as models + * @return list of initialized data model objects + * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, + * or a property type in your model is not supported by JSONValueTransformer and its categories + * @exception JSONModelInvalidDataException thrown when the input data does not include all required keys + * @see arrayOfDictionariesFromModels: + */ + +(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array; + + +(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array error:(NSError**)err; + + +(NSMutableArray*)arrayOfModelsFromData:(NSData*)data error:(NSError**)err; + + /** + * If you have an NSArray of data model objects, this method takes it in and outputs a list of the + * matching dictionaries. This method does the opposite of arrayOfObjectsFromDictionaries: + * @param array list of JSONModel objects + * @return a list of NSDictionary objects + * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, + * or a property type in your model is not supported by JSONValueTransformer and its categories + * @see arrayOfModelsFromDictionaries: + */ + +(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array; + + + +/** @name Comparing models */ + + /** + * The name of the model's property, which is considered the model's unique identifier. + * You can define Index property by using the Index protocol: + * @property (strong, nonatomic) NSString<Index>* id; + */ + -(NSString*)indexPropertyName; + + /** + * Overriden NSObject method to compare model objects. Compares the <Index> property of the two models, + * if an index property is defined. + * @param object a JSONModel instance to compare to for equality + */ + -(BOOL)isEqual:(id)object; + + /** + * Comparision method, which uses the defined <Index> property of the two models, to compare them. + * If there isn't an index property throws an exception. If the Index property does not have a compare: method + * also throws an exception. NSString and NSNumber have compare: methods, and in case the Index property is + * a another custom class, the programmer should create a custom compare: method then. + * @param object a JSONModel instance to compare to + */ + -(NSComparisonResult)compare:(id)object; + +/** @name Validation */ + + /** + * Overwrite the validate method in your own models if you need to perform some custom validation over the model data. + * This method gets called at the very end of the JSONModel initializer, thus the model is in the state that you would + * get it back when initialzed. Check the values of any property that needs to be validated and if any invalid values + * are encountered return NO and set the error parameter to an NSError object. If the model is valid return YES. + * + * NB: Only setting the error parameter is not enough to fail the validation, you also need to return a NO value. + * + * @param error a pointer to an NSError object, to pass back an error if needed + * @return a BOOL result, showing whether the model data validates or not. You can use the convenience method + * [JSONModelError errorModelIsInvalid] to set the NSError param if the data fails your custom validation + */ +-(BOOL)validate:(NSError**)error; + +/** @name Key mapping */ + /** + * Overwrite in your models if your property names don't match your JSON key names. + * Lookup JSONKeyMapper docs for more details. + */ ++(JSONKeyMapper*)keyMapper; + +/** + * Sets a key mapper which affects ALL the models in your project. Use this if you need only one mapper to work + * with your API. For example if you are using the [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase] it is more + * likely that you will need to use it with ALL of your models. + * NB: Custom key mappers take precendence over the global key mapper. + * @param globalKeyMapper a key mapper to apply to all models in your project. + * + * Lookup JSONKeyMapper docs for more details. + */ ++(void)setGlobalKeyMapper:(JSONKeyMapper*)globalKeyMapper; + +/** + * Indicates whether the property with the given name is Optional. + * To have a model with all of its properties being Optional just return YES. + * This method returns by default NO, since the default behaviour is to have all properties required. + * @param propertyName the name of the property + * @return a BOOL result indicating whether the property is optional + */ ++(BOOL)propertyIsOptional:(NSString*)propertyName; + +/** + * Indicates whether the property with the given name is Ignored. + * To have a model with all of its properties being Ignored just return YES. + * This method returns by default NO, since the default behaviour is to have all properties required. + * @param propertyName the name of the property + * @return a BOOL result indicating whether the property is ignored + */ ++(BOOL)propertyIsIgnored:(NSString*)propertyName; + +/** + * Merges values from the given dictionary into the model instance. + * @param dict dictionary with values + * @param useKeyMapping if YES the method will use the model's key mapper and the global key mapper, if NO + * it'll just try to match the dictionary keys to the model's properties + */ +-(void)mergeFromDictionary:(NSDictionary*)dict useKeyMapping:(BOOL)useKeyMapping; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m new file mode 100644 index 00000000000..571af3121af --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m @@ -0,0 +1,1309 @@ +// +// JSONModel.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#if !__has_feature(objc_arc) +#error The JSONMOdel framework is ARC only, you can enable ARC on per file basis. +#endif + + +#import +#import + + +#import "JSONModel.h" +#import "JSONModelClassProperty.h" +#import "JSONModelArray.h" + +#pragma mark - associated objects names +static const char * kMapperObjectKey; +static const char * kClassPropertiesKey; +static const char * kClassRequiredPropertyNamesKey; +static const char * kIndexPropertyNameKey; + +#pragma mark - class static variables +static NSArray* allowedJSONTypes = nil; +static NSArray* allowedPrimitiveTypes = nil; +static JSONValueTransformer* valueTransformer = nil; +static Class JSONModelClass = NULL; + +#pragma mark - model cache +static JSONKeyMapper* globalKeyMapper = nil; + +#pragma mark - JSONModel implementation +@implementation JSONModel +{ + NSString* _description; +} + +#pragma mark - initialization methods + ++(void)load +{ + static dispatch_once_t once; + dispatch_once(&once, ^{ + // initialize all class static objects, + // which are common for ALL JSONModel subclasses + + @autoreleasepool { + allowedJSONTypes = @[ + [NSString class], [NSNumber class], [NSDecimalNumber class], [NSArray class], [NSDictionary class], [NSNull class], //immutable JSON classes + [NSMutableString class], [NSMutableArray class], [NSMutableDictionary class] //mutable JSON classes + ]; + + allowedPrimitiveTypes = @[ + @"BOOL", @"float", @"int", @"long", @"double", @"short", + //and some famous aliases + @"NSInteger", @"NSUInteger", + @"Block" + ]; + + valueTransformer = [[JSONValueTransformer alloc] init]; + + // This is quite strange, but I found the test isSubclassOfClass: (line ~291) to fail if using [JSONModel class]. + // somewhat related: https://stackoverflow.com/questions/6524165/nsclassfromstring-vs-classnamednsstring + // //; seems to break the unit tests + + // Using NSClassFromString instead of [JSONModel class], as this was breaking unit tests, see below + //http://stackoverflow.com/questions/21394919/xcode-5-unit-test-seeing-wrong-class + JSONModelClass = NSClassFromString(NSStringFromClass(self)); + } + }); +} + +-(void)__setup__ +{ + //if first instance of this model, generate the property list + if (!objc_getAssociatedObject(self.class, &kClassPropertiesKey)) { + [self __inspectProperties]; + } + + //if there's a custom key mapper, store it in the associated object + id mapper = [[self class] keyMapper]; + if ( mapper && !objc_getAssociatedObject(self.class, &kMapperObjectKey) ) { + objc_setAssociatedObject( + self.class, + &kMapperObjectKey, + mapper, + OBJC_ASSOCIATION_RETAIN // This is atomic + ); + } +} + +-(id)init +{ + self = [super init]; + if (self) { + //do initial class setup + [self __setup__]; + } + return self; +} + +-(instancetype)initWithData:(NSData *)data error:(NSError *__autoreleasing *)err +{ + //check for nil input + if (!data) { + if (err) *err = [JSONModelError errorInputIsNil]; + return nil; + } + //read the json + JSONModelError* initError = nil; + id obj = [NSJSONSerialization JSONObjectWithData:data + options:kNilOptions + error:&initError]; + + if (initError) { + if (err) *err = [JSONModelError errorBadJSON]; + return nil; + } + + //init with dictionary + id objModel = [self initWithDictionary:obj error:&initError]; + if (initError && err) *err = initError; + return objModel; +} + +-(id)initWithString:(NSString*)string error:(JSONModelError**)err +{ + JSONModelError* initError = nil; + id objModel = [self initWithString:string usingEncoding:NSUTF8StringEncoding error:&initError]; + if (initError && err) *err = initError; + return objModel; +} + +-(id)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err +{ + //check for nil input + if (!string) { + if (err) *err = [JSONModelError errorInputIsNil]; + return nil; + } + + JSONModelError* initError = nil; + id objModel = [self initWithData:[string dataUsingEncoding:encoding] error:&initError]; + if (initError && err) *err = initError; + return objModel; + +} + +-(id)initWithDictionary:(NSDictionary*)dict error:(NSError**)err +{ + //check for nil input + if (!dict) { + if (err) *err = [JSONModelError errorInputIsNil]; + return nil; + } + + //invalid input, just create empty instance + if (![dict isKindOfClass:[NSDictionary class]]) { + if (err) *err = [JSONModelError errorInvalidDataWithMessage:@"Attempt to initialize JSONModel object using initWithDictionary:error: but the dictionary parameter was not an 'NSDictionary'."]; + return nil; + } + + //create a class instance + self = [self init]; + if (!self) { + + //super init didn't succeed + if (err) *err = [JSONModelError errorModelIsInvalid]; + return nil; + } + + //check incoming data structure + if (![self __doesDictionary:dict matchModelWithKeyMapper:self.__keyMapper error:err]) { + return nil; + } + + //import the data from a dictionary + if (![self __importDictionary:dict withKeyMapper:self.__keyMapper validation:YES error:err]) { + return nil; + } + + //run any custom model validation + if (![self validate:err]) { + return nil; + } + + //model is valid! yay! + return self; +} + +-(JSONKeyMapper*)__keyMapper +{ + //get the model key mapper + return objc_getAssociatedObject(self.class, &kMapperObjectKey); +} + +-(BOOL)__doesDictionary:(NSDictionary*)dict matchModelWithKeyMapper:(JSONKeyMapper*)keyMapper error:(NSError**)err +{ + //check if all required properties are present + NSArray* incomingKeysArray = [dict allKeys]; + NSMutableSet* requiredProperties = [self __requiredPropertyNames].mutableCopy; + NSSet* incomingKeys = [NSSet setWithArray: incomingKeysArray]; + + //transform the key names, if neccessary + if (keyMapper || globalKeyMapper) { + + NSMutableSet* transformedIncomingKeys = [NSMutableSet setWithCapacity: requiredProperties.count]; + NSString* transformedName = nil; + + //loop over the required properties list + for (JSONModelClassProperty* property in [self __properties__]) { + + transformedName = (keyMapper||globalKeyMapper) ? [self __mapString:property.name withKeyMapper:keyMapper importing:YES] : property.name; + + //chek if exists and if so, add to incoming keys + id value; + @try { + value = [dict valueForKeyPath:transformedName]; + } + @catch (NSException *exception) { + value = dict[transformedName]; + } + + if (value) { + [transformedIncomingKeys addObject: property.name]; + } + } + + //overwrite the raw incoming list with the mapped key names + incomingKeys = transformedIncomingKeys; + } + + //check for missing input keys + if (![requiredProperties isSubsetOfSet:incomingKeys]) { + + //get a list of the missing properties + [requiredProperties minusSet:incomingKeys]; + + //not all required properties are in - invalid input + JMLog(@"Incoming data was invalid [%@ initWithDictionary:]. Keys missing: %@", self.class, requiredProperties); + + if (err) *err = [JSONModelError errorInvalidDataWithMissingKeys:requiredProperties]; + return NO; + } + + //not needed anymore + incomingKeys= nil; + requiredProperties= nil; + + return YES; +} + +-(NSString*)__mapString:(NSString*)string withKeyMapper:(JSONKeyMapper*)keyMapper importing:(BOOL)importing +{ + if (keyMapper) { + //custom mapper + NSString* mappedName = [keyMapper convertValue:string isImportingToModel:importing]; + if (globalKeyMapper && [mappedName isEqualToString: string]) { + mappedName = [globalKeyMapper convertValue:string isImportingToModel:importing]; + } + string = mappedName; + } else if (globalKeyMapper) { + //global keymapper + string = [globalKeyMapper convertValue:string isImportingToModel:importing]; + } + + return string; +} + +-(BOOL)__importDictionary:(NSDictionary*)dict withKeyMapper:(JSONKeyMapper*)keyMapper validation:(BOOL)validation error:(NSError**)err +{ + //loop over the incoming keys and set self's properties + for (JSONModelClassProperty* property in [self __properties__]) { + + //convert key name ot model keys, if a mapper is provided + NSString* jsonKeyPath = (keyMapper||globalKeyMapper) ? [self __mapString:property.name withKeyMapper:keyMapper importing:YES] : property.name; + //JMLog(@"keyPath: %@", jsonKeyPath); + + //general check for data type compliance + id jsonValue; + @try { + jsonValue = [dict valueForKeyPath: jsonKeyPath]; + } + @catch (NSException *exception) { + jsonValue = dict[jsonKeyPath]; + } + + //check for Optional properties + if (isNull(jsonValue)) { + //skip this property, continue with next property + if (property.isOptional || !validation) continue; + + if (err) { + //null value for required property + NSString* msg = [NSString stringWithFormat:@"Value of required model key %@ is null", property.name]; + JSONModelError* dataErr = [JSONModelError errorInvalidDataWithMessage:msg]; + *err = [dataErr errorByPrependingKeyPathComponent:property.name]; + } + return NO; + } + + Class jsonValueClass = [jsonValue class]; + BOOL isValueOfAllowedType = NO; + + for (Class allowedType in allowedJSONTypes) { + if ( [jsonValueClass isSubclassOfClass: allowedType] ) { + isValueOfAllowedType = YES; + break; + } + } + + if (isValueOfAllowedType==NO) { + //type not allowed + JMLog(@"Type %@ is not allowed in JSON.", NSStringFromClass(jsonValueClass)); + + if (err) { + NSString* msg = [NSString stringWithFormat:@"Type %@ is not allowed in JSON.", NSStringFromClass(jsonValueClass)]; + JSONModelError* dataErr = [JSONModelError errorInvalidDataWithMessage:msg]; + *err = [dataErr errorByPrependingKeyPathComponent:property.name]; + } + return NO; + } + + //check if there's matching property in the model + if (property) { + + // check for custom setter, than the model doesn't need to do any guessing + // how to read the property's value from JSON + if ([self __customSetValue:jsonValue forProperty:property]) { + //skip to next JSON key + continue; + }; + + // 0) handle primitives + if (property.type == nil && property.structName==nil) { + + //generic setter + if (jsonValue != [self valueForKey:property.name]) { + [self setValue:jsonValue forKey: property.name]; + } + + //skip directly to the next key + continue; + } + + // 0.5) handle nils + if (isNull(jsonValue)) { + if ([self valueForKey:property.name] != nil) { + [self setValue:nil forKey: property.name]; + } + continue; + } + + + // 1) check if property is itself a JSONModel + if ([self __isJSONModelSubClass:property.type]) { + + //initialize the property's model, store it + JSONModelError* initErr = nil; + id value = [[property.type alloc] initWithDictionary: jsonValue error:&initErr]; + + if (!value) { + //skip this property, continue with next property + if (property.isOptional || !validation) continue; + + // Propagate the error, including the property name as the key-path component + if((err != nil) && (initErr != nil)) + { + *err = [initErr errorByPrependingKeyPathComponent:property.name]; + } + return NO; + } + if (![value isEqual:[self valueForKey:property.name]]) { + [self setValue:value forKey: property.name]; + } + + //for clarity, does the same without continue + continue; + + } else { + + // 2) check if there's a protocol to the property + // ) might or not be the case there's a built in transofrm for it + if (property.protocol) { + + //JMLog(@"proto: %@", p.protocol); + jsonValue = [self __transform:jsonValue forProperty:property error:err]; + if (!jsonValue) { + if ((err != nil) && (*err == nil)) { + NSString* msg = [NSString stringWithFormat:@"Failed to transform value, but no error was set during transformation. (%@)", property]; + JSONModelError* dataErr = [JSONModelError errorInvalidDataWithMessage:msg]; + *err = [dataErr errorByPrependingKeyPathComponent:property.name]; + } + return NO; + } + } + + // 3.1) handle matching standard JSON types + if (property.isStandardJSONType && [jsonValue isKindOfClass: property.type]) { + + //mutable properties + if (property.isMutable) { + jsonValue = [jsonValue mutableCopy]; + } + + //set the property value + if (![jsonValue isEqual:[self valueForKey:property.name]]) { + [self setValue:jsonValue forKey: property.name]; + } + continue; + } + + // 3.3) handle values to transform + if ( + (![jsonValue isKindOfClass:property.type] && !isNull(jsonValue)) + || + //the property is mutable + property.isMutable + || + //custom struct property + property.structName + ) { + + // searched around the web how to do this better + // but did not find any solution, maybe that's the best idea? (hardly) + Class sourceClass = [JSONValueTransformer classByResolvingClusterClasses:[jsonValue class]]; + + //JMLog(@"to type: [%@] from type: [%@] transformer: [%@]", p.type, sourceClass, selectorName); + + //build a method selector for the property and json object classes + NSString* selectorName = [NSString stringWithFormat:@"%@From%@:", + (property.structName? property.structName : property.type), //target name + sourceClass]; //source name + SEL selector = NSSelectorFromString(selectorName); + + //check for custom transformer + BOOL foundCustomTransformer = NO; + if ([valueTransformer respondsToSelector:selector]) { + foundCustomTransformer = YES; + } else { + //try for hidden custom transformer + selectorName = [NSString stringWithFormat:@"__%@",selectorName]; + selector = NSSelectorFromString(selectorName); + if ([valueTransformer respondsToSelector:selector]) { + foundCustomTransformer = YES; + } + } + + //check if there's a transformer with that name + if (foundCustomTransformer) { + + //it's OK, believe me... +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + //transform the value + jsonValue = [valueTransformer performSelector:selector withObject:jsonValue]; +#pragma clang diagnostic pop + + if (![jsonValue isEqual:[self valueForKey:property.name]]) { + [self setValue:jsonValue forKey: property.name]; + } + + } else { + + // it's not a JSON data type, and there's no transformer for it + // if property type is not supported - that's a programmer mistaked -> exception + @throw [NSException exceptionWithName:@"Type not allowed" + reason:[NSString stringWithFormat:@"%@ type not supported for %@.%@", property.type, [self class], property.name] + userInfo:nil]; + return NO; + } + + } else { + // 3.4) handle "all other" cases (if any) + if (![jsonValue isEqual:[self valueForKey:property.name]]) { + [self setValue:jsonValue forKey: property.name]; + } + } + } + } + } + + return YES; +} + +#pragma mark - property inspection methods + +-(BOOL)__isJSONModelSubClass:(Class)class +{ +// http://stackoverflow.com/questions/19883472/objc-nsobject-issubclassofclass-gives-incorrect-failure +#ifdef UNIT_TESTING + return [@"JSONModel" isEqualToString: NSStringFromClass([class superclass])]; +#else + return [class isSubclassOfClass:JSONModelClass]; +#endif +} + +//returns a set of the required keys for the model +-(NSMutableSet*)__requiredPropertyNames +{ + //fetch the associated property names + NSMutableSet* classRequiredPropertyNames = objc_getAssociatedObject(self.class, &kClassRequiredPropertyNamesKey); + + if (!classRequiredPropertyNames) { + classRequiredPropertyNames = [NSMutableSet set]; + [[self __properties__] enumerateObjectsUsingBlock:^(JSONModelClassProperty* p, NSUInteger idx, BOOL *stop) { + if (!p.isOptional) [classRequiredPropertyNames addObject:p.name]; + }]; + + //persist the list + objc_setAssociatedObject( + self.class, + &kClassRequiredPropertyNamesKey, + classRequiredPropertyNames, + OBJC_ASSOCIATION_RETAIN // This is atomic + ); + } + return classRequiredPropertyNames; +} + +//returns a list of the model's properties +-(NSArray*)__properties__ +{ + //fetch the associated object + NSDictionary* classProperties = objc_getAssociatedObject(self.class, &kClassPropertiesKey); + if (classProperties) return [classProperties allValues]; + + //if here, the class needs to inspect itself + [self __setup__]; + + //return the property list + classProperties = objc_getAssociatedObject(self.class, &kClassPropertiesKey); + return [classProperties allValues]; +} + +//inspects the class, get's a list of the class properties +-(void)__inspectProperties +{ + //JMLog(@"Inspect class: %@", [self class]); + + NSMutableDictionary* propertyIndex = [NSMutableDictionary dictionary]; + + //temp variables for the loops + Class class = [self class]; + NSScanner* scanner = nil; + NSString* propertyType = nil; + + // inspect inherited properties up to the JSONModel class + while (class != [JSONModel class]) { + //JMLog(@"inspecting: %@", NSStringFromClass(class)); + + unsigned int propertyCount; + objc_property_t *properties = class_copyPropertyList(class, &propertyCount); + + //loop over the class properties + for (unsigned int i = 0; i < propertyCount; i++) { + + JSONModelClassProperty* p = [[JSONModelClassProperty alloc] init]; + + //get property name + objc_property_t property = properties[i]; + const char *propertyName = property_getName(property); + p.name = @(propertyName); + + //JMLog(@"property: %@", p.name); + + //get property attributes + const char *attrs = property_getAttributes(property); + NSString* propertyAttributes = @(attrs); + NSArray* attributeItems = [propertyAttributes componentsSeparatedByString:@","]; + + //ignore read-only properties + if ([attributeItems containsObject:@"R"]) { + continue; //to next property + } + + //check for 64b BOOLs + if ([propertyAttributes hasPrefix:@"Tc,"]) { + //mask BOOLs as structs so they can have custom convertors + p.structName = @"BOOL"; + } + + scanner = [NSScanner scannerWithString: propertyAttributes]; + + //JMLog(@"attr: %@", [NSString stringWithCString:attrs encoding:NSUTF8StringEncoding]); + [scanner scanUpToString:@"T" intoString: nil]; + [scanner scanString:@"T" intoString:nil]; + + //check if the property is an instance of a class + if ([scanner scanString:@"@\"" intoString: &propertyType]) { + + [scanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"\"<"] + intoString:&propertyType]; + + //JMLog(@"type: %@", propertyClassName); + p.type = NSClassFromString(propertyType); + p.isMutable = ([propertyType rangeOfString:@"Mutable"].location != NSNotFound); + p.isStandardJSONType = [allowedJSONTypes containsObject:p.type]; + + //read through the property protocols + while ([scanner scanString:@"<" intoString:NULL]) { + + NSString* protocolName = nil; + + [scanner scanUpToString:@">" intoString: &protocolName]; + + if ([protocolName isEqualToString:@"Optional"]) { + p.isOptional = YES; + } else if([protocolName isEqualToString:@"Index"]) { + p.isIndex = YES; + objc_setAssociatedObject( + self.class, + &kIndexPropertyNameKey, + p.name, + OBJC_ASSOCIATION_RETAIN // This is atomic + ); + } else if([protocolName isEqualToString:@"ConvertOnDemand"]) { + p.convertsOnDemand = YES; + } else if([protocolName isEqualToString:@"Ignore"]) { + p = nil; + } else { + p.protocol = protocolName; + } + + [scanner scanString:@">" intoString:NULL]; + } + + } + //check if the property is a structure + else if ([scanner scanString:@"{" intoString: &propertyType]) { + [scanner scanCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] + intoString:&propertyType]; + + p.isStandardJSONType = NO; + p.structName = propertyType; + + } + //the property must be a primitive + else { + + //the property contains a primitive data type + [scanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@","] + intoString:&propertyType]; + + //get the full name of the primitive type + propertyType = valueTransformer.primitivesNames[propertyType]; + + if (![allowedPrimitiveTypes containsObject:propertyType]) { + + //type not allowed - programmer mistaked -> exception + @throw [NSException exceptionWithName:@"JSONModelProperty type not allowed" + reason:[NSString stringWithFormat:@"Property type of %@.%@ is not supported by JSONModel.", self.class, p.name] + userInfo:nil]; + } + + } + + NSString *nsPropertyName = @(propertyName); + if([[self class] propertyIsOptional:nsPropertyName]){ + p.isOptional = YES; + } + + if([[self class] propertyIsIgnored:nsPropertyName]){ + p = nil; + } + + //few cases where JSONModel will ignore properties automatically + if ([propertyType isEqualToString:@"Block"]) { + p = nil; + } + + //add the property object to the temp index + if (p && ![propertyIndex objectForKey:p.name]) { + [propertyIndex setValue:p forKey:p.name]; + } + } + + free(properties); + + //ascend to the super of the class + //(will do that until it reaches the root class - JSONModel) + class = [class superclass]; + } + + //finally store the property index in the static property index + objc_setAssociatedObject( + self.class, + &kClassPropertiesKey, + [propertyIndex copy], + OBJC_ASSOCIATION_RETAIN // This is atomic + ); +} + +#pragma mark - built-in transformer methods +//few built-in transformations +-(id)__transform:(id)value forProperty:(JSONModelClassProperty*)property error:(NSError**)err +{ + Class protocolClass = NSClassFromString(property.protocol); + if (!protocolClass) { + + //no other protocols on arrays and dictionaries + //except JSONModel classes + if ([value isKindOfClass:[NSArray class]]) { + @throw [NSException exceptionWithName:@"Bad property protocol declaration" + reason:[NSString stringWithFormat:@"<%@> is not allowed JSONModel property protocol, and not a JSONModel class.", property.protocol] + userInfo:nil]; + } + return value; + } + + //if the protocol is actually a JSONModel class + if ([self __isJSONModelSubClass:protocolClass]) { + + //check if it's a list of models + if ([property.type isSubclassOfClass:[NSArray class]]) { + + // Expecting an array, make sure 'value' is an array + if(![[value class] isSubclassOfClass:[NSArray class]]) + { + if(err != nil) + { + NSString* mismatch = [NSString stringWithFormat:@"Property '%@' is declared as NSArray<%@>* but the corresponding JSON value is not a JSON Array.", property.name, property.protocol]; + JSONModelError* typeErr = [JSONModelError errorInvalidDataWithTypeMismatch:mismatch]; + *err = [typeErr errorByPrependingKeyPathComponent:property.name]; + } + return nil; + } + + if (property.convertsOnDemand) { + //on demand conversion + value = [[JSONModelArray alloc] initWithArray:value modelClass:[protocolClass class]]; + + } else { + //one shot conversion + JSONModelError* arrayErr = nil; + value = [[protocolClass class] arrayOfModelsFromDictionaries:value error:&arrayErr]; + if((err != nil) && (arrayErr != nil)) + { + *err = [arrayErr errorByPrependingKeyPathComponent:property.name]; + return nil; + } + } + } + + //check if it's a dictionary of models + if ([property.type isSubclassOfClass:[NSDictionary class]]) { + + // Expecting a dictionary, make sure 'value' is a dictionary + if(![[value class] isSubclassOfClass:[NSDictionary class]]) + { + if(err != nil) + { + NSString* mismatch = [NSString stringWithFormat:@"Property '%@' is declared as NSDictionary<%@>* but the corresponding JSON value is not a JSON Object.", property.name, property.protocol]; + JSONModelError* typeErr = [JSONModelError errorInvalidDataWithTypeMismatch:mismatch]; + *err = [typeErr errorByPrependingKeyPathComponent:property.name]; + } + return nil; + } + + NSMutableDictionary* res = [NSMutableDictionary dictionary]; + + for (NSString* key in [value allKeys]) { + JSONModelError* initErr = nil; + id obj = [[[protocolClass class] alloc] initWithDictionary:value[key] error:&initErr]; + if (obj == nil) + { + // Propagate the error, including the property name as the key-path component + if((err != nil) && (initErr != nil)) + { + initErr = [initErr errorByPrependingKeyPathComponent:key]; + *err = [initErr errorByPrependingKeyPathComponent:property.name]; + } + return nil; + } + [res setValue:obj forKey:key]; + } + value = [NSDictionary dictionaryWithDictionary:res]; + } + } + + return value; +} + +//built-in reverse transormations (export to JSON compliant objects) +-(id)__reverseTransform:(id)value forProperty:(JSONModelClassProperty*)property +{ + Class protocolClass = NSClassFromString(property.protocol); + if (!protocolClass) return value; + + //if the protocol is actually a JSONModel class + if ([self __isJSONModelSubClass:protocolClass]) { + + //check if should export list of dictionaries + if (property.type == [NSArray class] || property.type == [NSMutableArray class]) { + NSMutableArray* tempArray = [NSMutableArray arrayWithCapacity: [(NSArray*)value count] ]; + for (NSObject* model in (NSArray*)value) { + if ([model respondsToSelector:@selector(toDictionary)]) { + [tempArray addObject: [model toDictionary]]; + } else + [tempArray addObject: model]; + } + return [tempArray copy]; + } + + //check if should export dictionary of dictionaries + if (property.type == [NSDictionary class] || property.type == [NSMutableDictionary class]) { + NSMutableDictionary* res = [NSMutableDictionary dictionary]; + for (NSString* key in [(NSDictionary*)value allKeys]) { + id model = value[key]; + [res setValue: [model toDictionary] forKey: key]; + } + return [NSDictionary dictionaryWithDictionary:res]; + } + } + + return value; +} + +#pragma mark - custom transformations +-(BOOL)__customSetValue:(id)value forProperty:(JSONModelClassProperty*)property +{ + if (property.setterType == kNotInspected) { + //check for a custom property setter method + NSString* ucfirstName = [property.name stringByReplacingCharactersInRange:NSMakeRange(0,1) + withString:[[property.name substringToIndex:1] uppercaseString]]; + NSString* selectorName = [NSString stringWithFormat:@"set%@With%@:", ucfirstName, + [JSONValueTransformer classByResolvingClusterClasses:[value class]] + ]; + + SEL customPropertySetter = NSSelectorFromString(selectorName); + + //check if there's a custom selector like this + if (![self respondsToSelector: customPropertySetter]) { + property.setterType = kNo; + return NO; + } + + //cache the custom setter selector + property.setterType = kCustom; + property.customSetter = customPropertySetter; + } + + if (property.setterType==kCustom) { + //call the custom setter + //https://github.com/steipete + ((void (*) (id, SEL, id))objc_msgSend)(self, property.customSetter, value); + return YES; + } + + return NO; +} + +-(BOOL)__customGetValue:(id*)value forProperty:(JSONModelClassProperty*)property +{ + if (property.getterType == kNotInspected) { + //check for a custom property getter method + NSString* ucfirstName = [property.name stringByReplacingCharactersInRange: NSMakeRange(0,1) + withString: [[property.name substringToIndex:1] uppercaseString]]; + NSString* selectorName = [NSString stringWithFormat:@"JSONObjectFor%@", ucfirstName]; + + SEL customPropertyGetter = NSSelectorFromString(selectorName); + if (![self respondsToSelector: customPropertyGetter]) { + property.getterType = kNo; + return NO; + } + + property.getterType = kCustom; + property.customGetter = customPropertyGetter; + + } + + if (property.getterType==kCustom) { + //call the custom getter + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Warc-performSelector-leaks" + *value = [self performSelector:property.customGetter]; + #pragma clang diagnostic pop + return YES; + } + + return NO; +} + +#pragma mark - persistance +-(void)__createDictionariesForKeyPath:(NSString*)keyPath inDictionary:(NSMutableDictionary**)dict +{ + //find if there's a dot left in the keyPath + NSUInteger dotLocation = [keyPath rangeOfString:@"."].location; + if (dotLocation==NSNotFound) return; + + //inspect next level + NSString* nextHierarchyLevelKeyName = [keyPath substringToIndex: dotLocation]; + NSDictionary* nextLevelDictionary = (*dict)[nextHierarchyLevelKeyName]; + + if (nextLevelDictionary==nil) { + //create non-existing next level here + nextLevelDictionary = [NSMutableDictionary dictionary]; + } + + //recurse levels + [self __createDictionariesForKeyPath:[keyPath substringFromIndex: dotLocation+1] + inDictionary:&nextLevelDictionary ]; + + //create the hierarchy level + [*dict setValue:nextLevelDictionary forKeyPath: nextHierarchyLevelKeyName]; +} + +-(NSDictionary*)toDictionary +{ + return [self toDictionaryWithKeys:nil]; +} + +-(NSString*)toJSONString +{ + return [self toJSONStringWithKeys:nil]; +} + +-(NSData*)toJSONData +{ + return [self toJSONDataWithKeys:nil]; +} + +//exports the model as a dictionary of JSON compliant objects +-(NSDictionary*)toDictionaryWithKeys:(NSArray*)propertyNames +{ + NSArray* properties = [self __properties__]; + NSMutableDictionary* tempDictionary = [NSMutableDictionary dictionaryWithCapacity:properties.count]; + + id value; + + //loop over all properties + for (JSONModelClassProperty* p in properties) { + + //skip if unwanted + if (propertyNames != nil && ![propertyNames containsObject:p.name]) + continue; + + //fetch key and value + NSString* keyPath = (self.__keyMapper||globalKeyMapper) ? [self __mapString:p.name withKeyMapper:self.__keyMapper importing:YES] : p.name; + value = [self valueForKey: p.name]; + + //JMLog(@"toDictionary[%@]->[%@] = '%@'", p.name, keyPath, value); + + if ([keyPath rangeOfString:@"."].location != NSNotFound) { + //there are sub-keys, introduce dictionaries for them + [self __createDictionariesForKeyPath:keyPath inDictionary:&tempDictionary]; + } + + //check for custom getter + if ([self __customGetValue:&value forProperty:p]) { + //custom getter, all done + [tempDictionary setValue:value forKeyPath:keyPath]; + continue; + } + + //export nil when they are not optional values as JSON null, so that the structure of the exported data + //is still valid if it's to be imported as a model again + if (isNull(value)) { + + if (p.isOptional) + { + [tempDictionary removeObjectForKey:keyPath]; + } + else + { + [tempDictionary setValue:[NSNull null] forKeyPath:keyPath]; + } + continue; + } + + //check if the property is another model + if ([value isKindOfClass:JSONModelClass]) { + + //recurse models + value = [(JSONModel*)value toDictionary]; + [tempDictionary setValue:value forKeyPath: keyPath]; + + //for clarity + continue; + + } else { + + // 1) check for built-in transformation + if (p.protocol) { + value = [self __reverseTransform:value forProperty:p]; + } + + // 2) check for standard types OR 2.1) primitives + if (p.structName==nil && (p.isStandardJSONType || p.type==nil)) { + + //generic get value + [tempDictionary setValue:value forKeyPath: keyPath]; + + continue; + } + + // 3) try to apply a value transformer + if (YES) { + + //create selector from the property's class name + NSString* selectorName = [NSString stringWithFormat:@"%@From%@:", @"JSONObject", p.type?p.type:p.structName]; + SEL selector = NSSelectorFromString(selectorName); + + BOOL foundCustomTransformer = NO; + if ([valueTransformer respondsToSelector:selector]) { + foundCustomTransformer = YES; + } else { + //try for hidden transformer + selectorName = [NSString stringWithFormat:@"__%@",selectorName]; + selector = NSSelectorFromString(selectorName); + if ([valueTransformer respondsToSelector:selector]) { + foundCustomTransformer = YES; + } + } + + //check if there's a transformer declared + if (foundCustomTransformer) { + + //it's OK, believe me... +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + value = [valueTransformer performSelector:selector withObject:value]; +#pragma clang diagnostic pop + + [tempDictionary setValue:value forKeyPath: keyPath]; + + } else { + + //in this case most probably a custom property was defined in a model + //but no default reverse transofrmer for it + @throw [NSException exceptionWithName:@"Value transformer not found" + reason:[NSString stringWithFormat:@"[JSONValueTransformer %@] not found", selectorName] + userInfo:nil]; + return nil; + } + } + } + } + + return [tempDictionary copy]; +} + +//exports model to a dictionary and then to a JSON string +-(NSData*)toJSONDataWithKeys:(NSArray*)propertyNames +{ + NSData* jsonData = nil; + NSError* jsonError = nil; + + @try { + NSDictionary* dict = [self toDictionaryWithKeys:propertyNames]; + jsonData = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&jsonError]; + } + @catch (NSException *exception) { + //this should not happen in properly design JSONModel + //usually means there was no reverse transformer for a custom property + JMLog(@"EXCEPTION: %@", exception.description); + return nil; + } + + return jsonData; +} + +-(NSString*)toJSONStringWithKeys:(NSArray*)propertyNames +{ + return [[NSString alloc] initWithData: [self toJSONDataWithKeys: propertyNames] + encoding: NSUTF8StringEncoding]; +} + +#pragma mark - import/export of lists +//loop over an NSArray of JSON objects and turn them into models ++(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array +{ + return [self arrayOfModelsFromDictionaries:array error:nil]; +} + ++(NSMutableArray*)arrayOfModelsFromData:(NSData *)data error:(NSError *__autoreleasing *)err +{ + id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:err]; + if (!json || ![json isKindOfClass:[NSArray class]]) return nil; + + return [self arrayOfModelsFromDictionaries:json error:err]; +} + +// Same as above, but with error reporting ++(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array error:(NSError**)err +{ + //bail early + if (isNull(array)) return nil; + + //parse dictionaries to objects + NSMutableArray* list = [NSMutableArray arrayWithCapacity: [array count]]; + + for (id d in array) + { + if ([d isKindOfClass:NSDictionary.class]) + { + JSONModelError* initErr = nil; + id obj = [[self alloc] initWithDictionary:d error:&initErr]; + if (obj == nil) + { + // Propagate the error, including the array index as the key-path component + if((err != nil) && (initErr != nil)) + { + NSString* path = [NSString stringWithFormat:@"[%lu]", (unsigned long)list.count]; + *err = [initErr errorByPrependingKeyPathComponent:path]; + } + return nil; + } + + [list addObject: obj]; + } else if ([d isKindOfClass:NSArray.class]) + { + [list addObjectsFromArray:[self arrayOfModelsFromDictionaries:d error:err]]; + } else + { + // This is very bad + } + + } + + return list; +} + +//loop over NSArray of models and export them to JSON objects ++(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array +{ + //bail early + if (isNull(array)) return nil; + + //convert to dictionaries + NSMutableArray* list = [NSMutableArray arrayWithCapacity: [array count]]; + + for (id object in array) { + + id obj = [object toDictionary]; + if (!obj) return nil; + + [list addObject: obj]; + } + return list; +} + +//loop over NSArray of models and export them to JSON objects with specific properties ++(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array propertyNamesToExport:(NSArray*)propertyNamesToExport; +{ + //bail early + if (isNull(array)) return nil; + + //convert to dictionaries + NSMutableArray* list = [NSMutableArray arrayWithCapacity: [array count]]; + + for (id object in array) { + + id obj = [object toDictionaryWithKeys:propertyNamesToExport]; + if (!obj) return nil; + + [list addObject: obj]; + } + return list; +} + +#pragma mark - custom comparison methods +-(NSString*)indexPropertyName +{ + //custom getter for an associated object + return objc_getAssociatedObject(self.class, &kIndexPropertyNameKey); +} + +-(BOOL)isEqual:(id)object +{ + //bail early if different classes + if (![object isMemberOfClass:[self class]]) return NO; + + if (self.indexPropertyName) { + //there's a defined ID property + id objectId = [object valueForKey: self.indexPropertyName]; + return [[self valueForKey: self.indexPropertyName] isEqual:objectId]; + } + + //default isEqual implementation + return [super isEqual:object]; +} + +-(NSComparisonResult)compare:(id)object +{ + if (self.indexPropertyName) { + id objectId = [object valueForKey: self.indexPropertyName]; + if ([objectId respondsToSelector:@selector(compare:)]) { + return [[self valueForKey:self.indexPropertyName] compare:objectId]; + } + } + + //on purpose postponing the asserts for speed optimization + //these should not happen anyway in production conditions + NSAssert(self.indexPropertyName, @"Can't compare models with no property"); + NSAssert1(NO, @"The property of %@ is not comparable class.", [self class]); + return kNilOptions; +} + +- (NSUInteger)hash +{ + if (self.indexPropertyName) { + return [self.indexPropertyName hash]; + } + + return [super hash]; +} + +#pragma mark - custom data validation +-(BOOL)validate:(NSError**)error +{ + return YES; +} + +#pragma mark - custom recursive description +//custom description method for debugging purposes +-(NSString*)description +{ + NSMutableString* text = [NSMutableString stringWithFormat:@"<%@> \n", [self class]]; + + for (JSONModelClassProperty *p in [self __properties__]) { + + id value = ([p.name isEqualToString:@"description"])?self->_description:[self valueForKey:p.name]; + NSString* valueDescription = (value)?[value description]:@""; + + if (p.isStandardJSONType && ![value respondsToSelector:@selector(count)] && [valueDescription length]>60 && !p.convertsOnDemand) { + + //cap description for longer values + valueDescription = [NSString stringWithFormat:@"%@...", [valueDescription substringToIndex:59]]; + } + valueDescription = [valueDescription stringByReplacingOccurrencesOfString:@"\n" withString:@"\n "]; + [text appendFormat:@" [%@]: %@\n", p.name, valueDescription]; + } + + [text appendFormat:@"", [self class]]; + return text; +} + +#pragma mark - key mapping ++(JSONKeyMapper*)keyMapper +{ + return nil; +} + ++(void)setGlobalKeyMapper:(JSONKeyMapper*)globalKeyMapperParam +{ + globalKeyMapper = globalKeyMapperParam; +} + ++(BOOL)propertyIsOptional:(NSString*)propertyName +{ + return NO; +} + ++(BOOL)propertyIsIgnored:(NSString *)propertyName +{ + return NO; +} + +#pragma mark - working with incomplete models +-(void)mergeFromDictionary:(NSDictionary*)dict useKeyMapping:(BOOL)useKeyMapping +{ + [self __importDictionary:dict withKeyMapper:(useKeyMapping)? self.__keyMapper:nil validation:NO error:nil]; +} + +#pragma mark - NSCopying, NSCoding +-(instancetype)copyWithZone:(NSZone *)zone +{ + return [NSKeyedUnarchiver unarchiveObjectWithData: + [NSKeyedArchiver archivedDataWithRootObject:self] + ]; +} + +-(instancetype)initWithCoder:(NSCoder *)decoder +{ + NSString* json = [decoder decodeObjectForKey:@"json"]; + + JSONModelError *error = nil; + self = [self initWithString:json error:&error]; + if (error) { + JMLog(@"%@",[error localizedDescription]); + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:self.toJSONString forKey:@"json"]; +} + ++ (BOOL)supportsSecureCoding +{ + return YES; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h new file mode 100644 index 00000000000..e858ad78c5f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h @@ -0,0 +1,60 @@ +// +// JSONModelArray.h +// +// @version 0.8.0 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import + +/** + * **Don't make instances of JSONModelArray yourself, except you know what you are doing.** + * + * You get automatically JSONModelArray instances, when you declare a convert on demand property, like so: + * + * @property (strong, nonatomic) NSArray<JSONModel, ConvertOnDemand>* list; + * + * The class stores its contents as they come from JSON, and upon the first request + * of each of the objects stored in the array, it'll be converted to the target model class. + * Thus saving time upon the very first model creation. + */ +@interface JSONModelArray : NSObject + +/** + * Don't make instances of JSONModelArray yourself, except you know what you are doing. + * + * @param array an array of NSDictionary objects + * @param cls the JSONModel sub-class you'd like the NSDictionaries to be converted to on demand + */ +- (id)initWithArray:(NSArray *)array modelClass:(Class)cls; + +- (id)objectAtIndex:(NSUInteger)index; +- (id)objectAtIndexedSubscript:(NSUInteger)index; +- (void)forwardInvocation:(NSInvocation *)anInvocation; +- (NSUInteger)count; +- (id)firstObject; +- (id)lastObject; + +/** + * Looks up the array's contents and tries to find a JSONModel object + * with matching index property value to the indexValue param. + * + * Will return nil if no matching model is found. Will return nil if there's no index property + * defined on the models found in the array (will sample the first object, assuming the array + * contains homogenous collection of objects) + * + * @param indexValue the id value to search for + * @return the found model or nil + */ +- (id)modelWithIndexValue:(id)indexValue; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m new file mode 100644 index 00000000000..88eddc7ad49 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m @@ -0,0 +1,145 @@ +// +// JSONModelArray.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONModelArray.h" +#import "JSONModel.h" + +@implementation JSONModelArray +{ + NSMutableArray* _storage; + Class _targetClass; +} + +-(id)initWithArray:(NSArray *)array modelClass:(Class)cls +{ + self = [super init]; + + if (self) { + _storage = [NSMutableArray arrayWithArray:array]; + _targetClass = cls; + } + return self; +} + +-(id)firstObject +{ + return [self objectAtIndex:0]; +} + +-(id)lastObject +{ + return [self objectAtIndex:_storage.count - 1]; +} + +-(id)objectAtIndex:(NSUInteger)index +{ + return [self objectAtIndexedSubscript:index]; +} + +-(id)objectAtIndexedSubscript:(NSUInteger)index +{ + id object = _storage[index]; + if (![object isMemberOfClass:_targetClass]) { + NSError* err = nil; + object = [[_targetClass alloc] initWithDictionary:object error:&err]; + if (object) { + _storage[index] = object; + } + } + return object; +} + +-(void)forwardInvocation:(NSInvocation *)anInvocation +{ + [anInvocation invokeWithTarget:_storage]; +} + +-(id)forwardingTargetForSelector:(SEL)selector +{ + static NSArray* overridenMethods = nil; + if (!overridenMethods) overridenMethods = @[@"initWithArray:modelClass:",@"objectAtIndex:",@"objectAtIndexedSubscript:", @"count",@"modelWithIndexValue:",@"description",@"mutableCopy",@"firstObject",@"lastObject",@"countByEnumeratingWithState:objects:count:"]; + if ([overridenMethods containsObject:NSStringFromSelector(selector)]) { + return self; + } + return _storage; +} + +-(NSUInteger)count +{ + return _storage.count; +} + +-(id)modelWithIndexValue:(id)indexValue +{ + if (self.count==0) return nil; + if (![_storage[0] indexPropertyName]) return nil; + + for (JSONModel* model in _storage) { + if ([[model valueForKey:model.indexPropertyName] isEqual:indexValue]) { + return model; + } + } + + return nil; +} + +-(id)mutableCopy +{ + //it's already mutable + return self; +} + +#pragma mark - description +-(NSString*)description +{ + NSMutableString* res = [NSMutableString stringWithFormat:@"\n", [_targetClass description]]; + for (id m in _storage) { + [res appendString: [m description]]; + [res appendString: @",\n"]; + } + [res appendFormat:@"\n"]; + return res; +} + +-(NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state + objects:(id __unsafe_unretained [])stackbuf + count:(NSUInteger)stackbufLength +{ + NSUInteger count = 0; + + unsigned long countOfItemsAlreadyEnumerated = state->state; + + if (countOfItemsAlreadyEnumerated == 0) { + state->mutationsPtr = &state->extra[0]; + } + + if (countOfItemsAlreadyEnumerated < [self count]) { + state->itemsPtr = stackbuf; + while ((countOfItemsAlreadyEnumerated < [self count]) && (count < stackbufLength)) { + stackbuf[count] = [self objectAtIndex:countOfItemsAlreadyEnumerated]; + countOfItemsAlreadyEnumerated++; + count++; + } + } else { + count = 0; + } + + state->state = countOfItemsAlreadyEnumerated; + + return count; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h new file mode 100644 index 00000000000..7e470707554 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h @@ -0,0 +1,77 @@ +// +// JSONModelClassProperty.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import + +enum kCustomizationTypes { + kNotInspected = 0, + kCustom, + kNo + }; + +typedef enum kCustomizationTypes PropertySetterType; +typedef enum kCustomizationTypes PropertyGetterType; + +/** + * **You do not need to instantiate this class yourself.** This class is used internally by JSONModel + * to inspect the declared properties of your model class. + * + * Class to contain the information, representing a class property + * It features the property's name, type, whether it's a required property, + * and (optionally) the class protocol + */ +@interface JSONModelClassProperty : NSObject + +/** The name of the declared property (not the ivar name) */ +@property (copy, nonatomic) NSString* name; + +/** A property class type */ +@property (assign, nonatomic) Class type; + +/** Struct name if a struct */ +@property (strong, nonatomic) NSString* structName; + +/** The name of the protocol the property conforms to (or nil) */ +@property (copy, nonatomic) NSString* protocol; + +/** If YES, it can be missing in the input data, and the input would be still valid */ +@property (assign, nonatomic) BOOL isOptional; + +/** If YES - don't call any transformers on this property's value */ +@property (assign, nonatomic) BOOL isStandardJSONType; + +/** If YES - create a mutable object for the value of the property */ +@property (assign, nonatomic) BOOL isMutable; + +/** If YES - create models on demand for the array members */ +@property (assign, nonatomic) BOOL convertsOnDemand; + +/** If YES - the value of this property determines equality to other models */ +@property (assign, nonatomic) BOOL isIndex; + +/** The status of property getter introspection in a model */ +@property (assign, nonatomic) PropertyGetterType getterType; + +/** a custom getter for this property, found in the owning model */ +@property (assign, nonatomic) SEL customGetter; + +/** The status of property setter introspection in a model */ +@property (assign, nonatomic) PropertySetterType setterType; + +/** a custom setter for this property, found in the owning model */ +@property (assign, nonatomic) SEL customSetter; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m new file mode 100644 index 00000000000..0fe9158261d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m @@ -0,0 +1,48 @@ +// +// JSONModelClassProperty.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONModelClassProperty.h" + +@implementation JSONModelClassProperty + +-(NSString*)description +{ + //build the properties string for the current class property + NSMutableArray* properties = [NSMutableArray arrayWithCapacity:8]; + + if (self.isIndex) [properties addObject:@"Index"]; + if (self.isOptional) [properties addObject:@"Optional"]; + if (self.isMutable) [properties addObject:@"Mutable"]; + if (self.convertsOnDemand) [properties addObject:@"ConvertOnDemand"]; + if (self.isStandardJSONType) [properties addObject:@"Standard JSON type"]; + if (self.customSetter) [properties addObject:[NSString stringWithFormat: @"Setter = %@", NSStringFromSelector(self.customSetter)]]; + if (self.customGetter) [properties addObject:[NSString stringWithFormat: @"Getter = %@", NSStringFromSelector(self.customGetter)]]; + + NSString* propertiesString = @""; + if (properties.count>0) { + propertiesString = [NSString stringWithFormat:@"(%@)", [properties componentsJoinedByString:@", "]]; + } + + //return the name, type and additional properties + return [NSString stringWithFormat:@"@property %@%@ %@ %@", + self.type?[NSString stringWithFormat:@"%@*",self.type]:(self.structName?self.structName:@"primitive"), + self.protocol?[NSString stringWithFormat:@"<%@>", self.protocol]:@"", + self.name, + propertiesString + ]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h new file mode 100644 index 00000000000..36f41ef55bd --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h @@ -0,0 +1,112 @@ +// +// JSONModelError.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import + +///////////////////////////////////////////////////////////////////////////////////////////// +typedef NS_ENUM(int, kJSONModelErrorTypes) +{ + kJSONModelErrorInvalidData = 1, + kJSONModelErrorBadResponse = 2, + kJSONModelErrorBadJSON = 3, + kJSONModelErrorModelIsInvalid = 4, + kJSONModelErrorNilInput = 5 +}; + +///////////////////////////////////////////////////////////////////////////////////////////// +/** The domain name used for the JSONModelError instances */ +extern NSString* const JSONModelErrorDomain; + +/** + * If the model JSON input misses keys that are required, check the + * userInfo dictionary of the JSONModelError instance you get back - + * under the kJSONModelMissingKeys key you will find a list of the + * names of the missing keys. + */ +extern NSString* const kJSONModelMissingKeys; + +/** + * If JSON input has a different type than expected by the model, check the + * userInfo dictionary of the JSONModelError instance you get back - + * under the kJSONModelTypeMismatch key you will find a description + * of the mismatched types. + */ +extern NSString* const kJSONModelTypeMismatch; + +/** + * If an error occurs in a nested model, check the userInfo dictionary of + * the JSONModelError instance you get back - under the kJSONModelKeyPath + * key you will find key-path at which the error occurred. + */ +extern NSString* const kJSONModelKeyPath; + +///////////////////////////////////////////////////////////////////////////////////////////// +/** + * Custom NSError subclass with shortcut methods for creating + * the common JSONModel errors + */ +@interface JSONModelError : NSError + +@property (strong, nonatomic) NSHTTPURLResponse* httpResponse; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorInvalidData = 1 + */ ++(id)errorInvalidDataWithMessage:(NSString*)message; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorInvalidData = 1 + * @param keys a set of field names that were required, but not found in the input + */ ++(id)errorInvalidDataWithMissingKeys:(NSSet*)keys; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorInvalidData = 1 + * @param A description of the type mismatch that was encountered. + */ ++(id)errorInvalidDataWithTypeMismatch:(NSString*)mismatchDescription; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorBadResponse = 2 + */ ++(id)errorBadResponse; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorBadJSON = 3 + */ ++(id)errorBadJSON; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorModelIsInvalid = 4 + */ ++(id)errorModelIsInvalid; + +/** + * Creates a JSONModelError instance with code kJSONModelErrorNilInput = 5 + */ ++(id)errorInputIsNil; + +/** + * Creates a new JSONModelError with the same values plus information about the key-path of the error. + * Properties in the new error object are the same as those from the receiver, + * except that a new key kJSONModelKeyPath is added to the userInfo dictionary. + * This key contains the component string parameter. If the key is already present + * then the new error object has the component string prepended to the existing value. + */ +- (instancetype)errorByPrependingKeyPathComponent:(NSString*)component; + +///////////////////////////////////////////////////////////////////////////////////////////// +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m new file mode 100644 index 00000000000..de80446af67 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m @@ -0,0 +1,93 @@ +// +// JSONModelError.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONModelError.h" + +NSString* const JSONModelErrorDomain = @"JSONModelErrorDomain"; +NSString* const kJSONModelMissingKeys = @"kJSONModelMissingKeys"; +NSString* const kJSONModelTypeMismatch = @"kJSONModelTypeMismatch"; +NSString* const kJSONModelKeyPath = @"kJSONModelKeyPath"; + +@implementation JSONModelError + ++(id)errorInvalidDataWithMessage:(NSString*)message +{ + message = [NSString stringWithFormat:@"Invalid JSON data: %@", message]; + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorInvalidData + userInfo:@{NSLocalizedDescriptionKey:message}]; +} + ++(id)errorInvalidDataWithMissingKeys:(NSSet *)keys +{ + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorInvalidData + userInfo:@{NSLocalizedDescriptionKey:@"Invalid JSON data. Required JSON keys are missing from the input. Check the error user information.",kJSONModelMissingKeys:[keys allObjects]}]; +} + ++(id)errorInvalidDataWithTypeMismatch:(NSString*)mismatchDescription +{ + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorInvalidData + userInfo:@{NSLocalizedDescriptionKey:@"Invalid JSON data. The JSON type mismatches the expected type. Check the error user information.",kJSONModelTypeMismatch:mismatchDescription}]; +} + ++(id)errorBadResponse +{ + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorBadResponse + userInfo:@{NSLocalizedDescriptionKey:@"Bad network response. Probably the JSON URL is unreachable."}]; +} + ++(id)errorBadJSON +{ + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorBadJSON + userInfo:@{NSLocalizedDescriptionKey:@"Malformed JSON. Check the JSONModel data input."}]; +} + ++(id)errorModelIsInvalid +{ + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorModelIsInvalid + userInfo:@{NSLocalizedDescriptionKey:@"Model does not validate. The custom validation for the input data failed."}]; +} + ++(id)errorInputIsNil +{ + return [JSONModelError errorWithDomain:JSONModelErrorDomain + code:kJSONModelErrorNilInput + userInfo:@{NSLocalizedDescriptionKey:@"Initializing model with nil input object."}]; +} + +- (instancetype)errorByPrependingKeyPathComponent:(NSString*)component +{ + // Create a mutable copy of the user info so that we can add to it and update it + NSMutableDictionary* userInfo = [self.userInfo mutableCopy]; + + // Create or update the key-path + NSString* existingPath = userInfo[kJSONModelKeyPath]; + NSString* separator = [existingPath hasPrefix:@"["] ? @"" : @"."; + NSString* updatedPath = (existingPath == nil) ? component : [component stringByAppendingFormat:@"%@%@", separator, existingPath]; + userInfo[kJSONModelKeyPath] = updatedPath; + + // Create the new error + return [JSONModelError errorWithDomain:self.domain + code:self.code + userInfo:[NSDictionary dictionaryWithDictionary:userInfo]]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h new file mode 100644 index 00000000000..d4e18dab242 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h @@ -0,0 +1,40 @@ +// +// NSArray+JSONModel.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + + +#import +#import "JSONModel.h" + +/** + * Exposes invisible JSONModelArray methods + */ +@interface NSArray(JSONModel) + +/** + * Looks up the array's contents and tries to find a JSONModel object + * with matching index property value to the indexValue param. + * + * Will return nil if no matching model is found. Will return nil if there's no index property + * defined on the models found in the array (will sample the first object, assuming the array + * contains homogenous collection of objects) + * + * @param indexValue the id value to search for + * @return the found model or nil + * @exception NSException throws exception if you call this method on an instance, which is not actually a JSONModelArray + */ +- (id)modelWithIndexValue:(id)indexValue; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m new file mode 100644 index 00000000000..41475a474e1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m @@ -0,0 +1,28 @@ +// +// NSArray+JSONModel.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + + +#import "NSArray+JSONModel.h" + +@implementation NSArray(JSONModel) + +- (id)modelWithIndexValue:(id)indexValue +{ + NSAssert(NO, @"call modelWithIndexValue: on a ConvertOnDemand property, which is defined like that: @property (strong, nonatomic) NSArray* list;"); + return nil; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h new file mode 100644 index 00000000000..b8f5a17868b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h @@ -0,0 +1,35 @@ +// +// JSONModelLib.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import + +//JSONModel transformations +#import "JSONValueTransformer.h" +#import "JSONKeyMapper.h" + +//basic JSONModel classes +#import "JSONModelError.h" +#import "JSONModelClassProperty.h" +#import "JSONModel.h" + +//network classes +#import "JSONHTTPClient.h" +#import "JSONModel+networking.h" +#import "JSONAPI.h" + +//models array +#import "NSArray+JSONModel.h" +#import "JSONModelArray.h" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h new file mode 100644 index 00000000000..dd27aa23eab --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h @@ -0,0 +1,90 @@ +// +// JSONAPI.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import +#import "JSONHTTPClient.h" + +///////////////////////////////////////////////////////////////////////////////////////////// + +/** + * @discussion Class for working with JSON APIs. It builds upon the JSONHTTPClient class + * and facilitates making requests to the same web host. Also features helper + * method for making calls to a JSON RPC service + */ +@interface JSONAPI : NSObject + +///////////////////////////////////////////////////////////////////////////////////////////// + +/** @name Configuring the API */ +/** + * Sets the API url + * @param base the API url as a string + */ ++(void)setAPIBaseURLWithString:(NSString*)base; + +/** + * Sets the default content type for the requests/responses + * @param ctype The content-type as a string. Some possible types, + * depending on the service: application/json, text/json, x-application/javascript, etc. + */ ++(void)setContentType:(NSString*)ctype; + +///////////////////////////////////////////////////////////////////////////////////////////// + +/** @name Making GET API requests */ +/** + * Makes an asynchronious GET request to the API + * @param path the URL path to add to the base API URL for this HTTP call + * @param params the variables to pass to the API + * @param completeBlock a JSONObjectBlock block to execute upon completion + */ ++(void)getWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; + +///////////////////////////////////////////////////////////////////////////////////////////// + +/** @name Making POST API requests */ +/** + * Makes a POST request to the API + * @param path the URL path to add to the base API URL for this HTTP call + * @param params the variables to pass to the API + * @param completeBlock a JSONObjectBlock block to execute upon completion + */ ++(void)postWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; + +///////////////////////////////////////////////////////////////////////////////////////////// + +/** @name JSON RPC methods */ +/** + * Makes an asynchronious JSON RPC request to the API. Read more: http://www.jsonrpc.org + * @param method the HTTP method name; GET or POST only + * @param args the list of arguments to pass to the API + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)rpcWithMethodName:(NSString*)method andArguments:(NSArray*)args completion:(JSONObjectBlock)completeBlock; + +/** @name JSON RPC (2.0) request method */ +/** + * Makes an asynchronious JSON RPC 2.0 request to the API. Read more: http://www.jsonrpc.org + * @param method the HTTP method name; GET or POST only + * @param params the params to pass to the API - an NSArray or an NSDictionary, + * depending whether you're using named or unnamed parameters + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)rpc2WithMethodName:(NSString*)method andParams:(id)params completion:(JSONObjectBlock)completeBlock; + +///////////////////////////////////////////////////////////////////////////////////////////// + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m new file mode 100644 index 00000000000..212803d7bd3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m @@ -0,0 +1,152 @@ +// +// JSONAPI.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONAPI.h" + +#pragma mark - helper error model class +@interface JSONAPIRPCErrorModel: JSONModel +@property (assign, nonatomic) int code; +@property (strong, nonatomic) NSString* message; +@property (strong, nonatomic) id data; +@end + +#pragma mark - static variables + +static JSONAPI* sharedInstance = nil; +static long jsonRpcId = 0; + +#pragma mark - JSONAPI() private interface + +@interface JSONAPI () +@property (strong, nonatomic) NSString* baseURLString; +@end + +#pragma mark - JSONAPI implementation + +@implementation JSONAPI + +#pragma mark - initialize + ++(void)initialize +{ + static dispatch_once_t once; + dispatch_once(&once, ^{ + sharedInstance = [[JSONAPI alloc] init]; + }); +} + +#pragma mark - api config methods + ++(void)setAPIBaseURLWithString:(NSString*)base +{ + sharedInstance.baseURLString = base; +} + ++(void)setContentType:(NSString*)ctype +{ + [JSONHTTPClient setRequestContentType: ctype]; +} + +#pragma mark - GET methods ++(void)getWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock +{ + NSString* fullURL = [NSString stringWithFormat:@"%@%@", sharedInstance.baseURLString, path]; + + [JSONHTTPClient getJSONFromURLWithString: fullURL params:params completion:^(NSDictionary *json, JSONModelError *e) { + completeBlock(json, e); + }]; +} + +#pragma mark - POST methods ++(void)postWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock +{ + NSString* fullURL = [NSString stringWithFormat:@"%@%@", sharedInstance.baseURLString, path]; + + [JSONHTTPClient postJSONFromURLWithString: fullURL params:params completion:^(NSDictionary *json, JSONModelError *e) { + completeBlock(json, e); + }]; +} + +#pragma mark - RPC methods ++(void)__rpcRequestWithObject:(id)jsonObject completion:(JSONObjectBlock)completeBlock +{ + + NSData* jsonRequestData = [NSJSONSerialization dataWithJSONObject:jsonObject + options:kNilOptions + error:nil]; + NSString* jsonRequestString = [[NSString alloc] initWithData:jsonRequestData encoding: NSUTF8StringEncoding]; + + NSAssert(sharedInstance.baseURLString, @"API base URL not set"); + [JSONHTTPClient postJSONFromURLWithString: sharedInstance.baseURLString + bodyString: jsonRequestString + completion:^(NSDictionary *json, JSONModelError* e) { + + if (completeBlock) { + //handle the rpc response + NSDictionary* result = json[@"result"]; + + if (!result) { + JSONAPIRPCErrorModel* error = [[JSONAPIRPCErrorModel alloc] initWithDictionary:json[@"error"] error:nil]; + if (error) { + //custom server error + if (!error.message) error.message = @"Generic json rpc error"; + e = [JSONModelError errorWithDomain:JSONModelErrorDomain + code:error.code + userInfo: @{ NSLocalizedDescriptionKey : error.message}]; + } else { + //generic error + e = [JSONModelError errorBadResponse]; + } + } + + //invoke the callback + completeBlock(result, e); + } + }]; +} + ++(void)rpcWithMethodName:(NSString*)method andArguments:(NSArray*)args completion:(JSONObjectBlock)completeBlock +{ + NSAssert(method, @"No method specified"); + if (!args) args = @[]; + + [self __rpcRequestWithObject:@{ + //rpc 1.0 + @"id": @(++jsonRpcId), + @"params": args, + @"method": method + } completion:completeBlock]; +} + ++(void)rpc2WithMethodName:(NSString*)method andParams:(id)params completion:(JSONObjectBlock)completeBlock +{ + NSAssert(method, @"No method specified"); + if (!params) params = @[]; + + [self __rpcRequestWithObject:@{ + //rpc 2.0 + @"jsonrpc": @"2.0", + @"id": @(++jsonRpcId), + @"params": params, + @"method": method + } completion:completeBlock]; +} + +@end + +#pragma mark - helper rpc error model class implementation +@implementation JSONAPIRPCErrorModel +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h new file mode 100644 index 00000000000..a2129fb8ff2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h @@ -0,0 +1,175 @@ +// +// JSONModelHTTPClient.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONModel.h" + +#pragma mark - definitions + +/** + * HTTP Request methods + */ +extern NSString* const kHTTPMethodGET; +extern NSString* const kHTTPMethodPOST; + +/** + * Content-type strings + */ +extern NSString* const kContentTypeAutomatic; +extern NSString* const kContentTypeJSON; +extern NSString* const kContentTypeWWWEncoded; + +/** + * A block type to handle incoming JSON object and an error. + * You pass it to methods which fetch JSON asynchroniously. When the operation is finished + * you receive back the fetched JSON (or nil) and an error (or nil) + * + * @param json object derived from a JSON string + * @param err JSONModelError or nil + */ +typedef void (^JSONObjectBlock)(id json, JSONModelError* err); + +///////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - configuration methods + +/** + * @discussion A very thin HTTP client that can do GET and POST HTTP requests. + * It fetches only JSON data and also deserializes it using NSJSONSerialization. + */ +@interface JSONHTTPClient : NSObject + +///////////////////////////////////////////////////////////////////////////////////////////// + + +/** @name HTTP Client configuration */ +/** + * Returns a modifyable dictionary of the client's default HTTP headers. + * @result A mutable dictionary of pairs - HTTP header names and values. + * @discussion You can use the result to modify the http client headers like so: + *
    + * NSMutableDictionary* headers = [JSONHTTPClient requestHeaders];
    + * headers[@"APIToken"] = @"MySecretTokenValue";
    + * 
    + */ ++(NSMutableDictionary*)requestHeaders; + +/** + * Sets the default encoding of the request body. + * See NSStringEncoding for a list of supported encodings + * @param encoding text encoding constant + */ ++(void)setDefaultTextEncoding:(NSStringEncoding)encoding; + +/** + * Sets the policies for caching HTTP data + * See NSURLRequestCachePolicy for a list of the pre-defined policies + * @param policy the caching policy + */ ++(void)setCachingPolicy:(NSURLRequestCachePolicy)policy; + +/** + * Sets the timeout for network calls + * @param seconds the amount of seconds to wait before considering the call failed + */ ++(void)setTimeoutInSeconds:(int)seconds; + +/** + * A method to set the default conent type of the request body + * By default the content type is set to kContentTypeAutomatic + * which checks the body request and decides between "application/json" + * and "application/x-www-form-urlencoded" + */ ++(void)setRequestContentType:(NSString*)contentTypeString; + +///////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - GET asynchronious JSON calls + +/** @name Making asynchronious HTTP requests */ +/** + * Makes GET request to the given URL address and fetches a JSON response. + * @param urlString the URL as a string + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)getJSONFromURLWithString:(NSString*)urlString completion:(JSONObjectBlock)completeBlock; + +/** + * Makes GET request to the given URL address and fetches a JSON response. Sends the params as a query string variables. + * @param urlString the URL as a string + * @param params a dictionary of key / value pairs to be send as variables to the request + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)getJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; + +/** + * Makes a request to the given URL address and fetches a JSON response. + * @param urlString the URL as a string + * @param method the method of the request as a string + * @param params a dictionary of key / value pairs to be send as variables to the request + * @param bodyString the body of the POST request as a string + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary*)params orBodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock; + +/** + * Makes a request to the given URL address and fetches a JSON response. + * @param urlString the URL as a string + * @param method the method of the request as a string + * @param params a dictionary of key / value pairs to be send as variables to the request + * @param bodyString the body of the POST request as a string + * @param headers the headers to set on the request - overrides those in +requestHeaders + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary*)params orBodyString:(NSString*)bodyString headers:(NSDictionary*)headers completion:(JSONObjectBlock)completeBlock; + +/** + * Makes a request to the given URL address and fetches a JSON response. + * @param urlString the URL as a string + * @param method the method of the request as a string + * @param params a dictionary of key / value pairs to be send as variables to the request + * @param bodyData the body of the POST request as raw binary data + * @param headers the headers to set on the request - overrides those in +requestHeaders + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary *)params orBodyData:(NSData*)bodyData headers:(NSDictionary*)headers completion:(JSONObjectBlock)completeBlock; + +///////////////////////////////////////////////////////////////////////////////////////////// +#pragma mark - POST synchronious JSON calls + +/** + * Makes POST request to the given URL address and fetches a JSON response. Sends the bodyString param as the POST request body. + * @param urlString the URL as a string + * @param params a dictionary of key / value pairs to be send as variables to the request + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)postJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; + +/** + * Makes POST request to the given URL address and fetches a JSON response. Sends the bodyString param as the POST request body. + * @param urlString the URL as a string + * @param bodyString the body of the POST request as a string + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)postJSONFromURLWithString:(NSString*)urlString bodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock; + +/** + * Makes POST request to the given URL address and fetches a JSON response. Sends the bodyString param as the POST request body. + * @param urlString the URL as a string + * @param bodyData the body of the POST request as an NSData object + * @param completeBlock JSONObjectBlock to execute upon completion + */ ++(void)postJSONFromURLWithString:(NSString*)urlString bodyData:(NSData*)bodyData completion:(JSONObjectBlock)completeBlock; + + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m new file mode 100644 index 00000000000..18147c04a1c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m @@ -0,0 +1,374 @@ +// +// JSONModelHTTPClient.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONHTTPClient.h" + +#pragma mark - constants +NSString* const kHTTPMethodGET = @"GET"; +NSString* const kHTTPMethodPOST = @"POST"; + +NSString* const kContentTypeAutomatic = @"jsonmodel/automatic"; +NSString* const kContentTypeJSON = @"application/json"; +NSString* const kContentTypeWWWEncoded = @"application/x-www-form-urlencoded"; + +#pragma mark - static variables + +/** + * Defaults for HTTP requests + */ +static NSStringEncoding defaultTextEncoding = NSUTF8StringEncoding; +static NSURLRequestCachePolicy defaultCachePolicy = NSURLRequestReloadIgnoringLocalCacheData; + +static int defaultTimeoutInSeconds = 60; + +/** + * Custom HTTP headers to send over with *each* request + */ +static NSMutableDictionary* requestHeaders = nil; + +/** + * Default request content type + */ +static NSString* requestContentType = nil; + +#pragma mark - implementation +@implementation JSONHTTPClient + +#pragma mark - initialization ++(void)initialize +{ + static dispatch_once_t once; + dispatch_once(&once, ^{ + requestHeaders = [NSMutableDictionary dictionary]; + requestContentType = kContentTypeAutomatic; + }); +} + +#pragma mark - configuration methods ++(NSMutableDictionary*)requestHeaders +{ + return requestHeaders; +} + ++(void)setDefaultTextEncoding:(NSStringEncoding)encoding +{ + defaultTextEncoding = encoding; +} + ++(void)setCachingPolicy:(NSURLRequestCachePolicy)policy +{ + defaultCachePolicy = policy; +} + ++(void)setTimeoutInSeconds:(int)seconds +{ + defaultTimeoutInSeconds = seconds; +} + ++(void)setRequestContentType:(NSString*)contentTypeString +{ + requestContentType = contentTypeString; +} + +#pragma mark - helper methods ++(NSString*)contentTypeForRequestString:(NSString*)requestString +{ + //fetch the charset name from the default string encoding + NSString* contentType = requestContentType; + + if (requestString.length>0 && [contentType isEqualToString:kContentTypeAutomatic]) { + //check for "eventual" JSON array or dictionary + NSString* firstAndLastChar = [NSString stringWithFormat:@"%@%@", + [requestString substringToIndex:1], + [requestString substringFromIndex: requestString.length -1] + ]; + + if ([firstAndLastChar isEqualToString:@"{}"] || [firstAndLastChar isEqualToString:@"[]"]) { + //guessing for a JSON request + contentType = kContentTypeJSON; + } else { + //fallback to www form encoded params + contentType = kContentTypeWWWEncoded; + } + } + + //type is set, just add charset + NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)); + return [NSString stringWithFormat:@"%@; charset=%@", contentType, charset]; +} + ++(NSString*)urlEncode:(id)value +{ + //make sure param is a string + if ([value isKindOfClass:[NSNumber class]]) { + value = [(NSNumber*)value stringValue]; + } + + NSAssert([value isKindOfClass:[NSString class]], @"request parameters can be only of NSString or NSNumber classes. '%@' is of class %@.", value, [value class]); + + return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( + NULL, + (__bridge CFStringRef) value, + NULL, + (CFStringRef)@"!*'();:@&=+$,/?%#[]", + kCFStringEncodingUTF8)); +} + +#pragma mark - networking worker methods ++(NSData*)syncRequestDataFromURL:(NSURL*)url method:(NSString*)method requestBody:(NSData*)bodyData headers:(NSDictionary*)headers etag:(NSString**)etag error:(JSONModelError**)err +{ + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: url + cachePolicy: defaultCachePolicy + timeoutInterval: defaultTimeoutInSeconds]; + [request setHTTPMethod:method]; + + if ([requestContentType isEqualToString:kContentTypeAutomatic]) { + //automatic content type + if (bodyData) { + NSString *bodyString = [[NSString alloc] initWithData:bodyData encoding:NSUTF8StringEncoding]; + [request setValue: [self contentTypeForRequestString: bodyString] forHTTPHeaderField:@"Content-type"]; + } + } else { + //user set content type + [request setValue: requestContentType forHTTPHeaderField:@"Content-type"]; + } + + //add all the custom headers defined + for (NSString* key in [requestHeaders allKeys]) { + [request setValue:requestHeaders[key] forHTTPHeaderField:key]; + } + + //add the custom headers + for (NSString* key in [headers allKeys]) { + [request setValue:headers[key] forHTTPHeaderField:key]; + } + + if (bodyData) { + [request setHTTPBody: bodyData]; + [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)bodyData.length] forHTTPHeaderField:@"Content-Length"]; + } + + //prepare output + NSHTTPURLResponse* response = nil; + + //fire the request + NSData *responseData = [NSURLConnection sendSynchronousRequest: request + returningResponse: &response + error: err]; + //convert an NSError to a JSONModelError + if (*err != nil) { + NSError* errObj = *err; + *err = [JSONModelError errorWithDomain:errObj.domain code:errObj.code userInfo:errObj.userInfo]; + } + + //special case for http error code 401 + if ([*err code] == kCFURLErrorUserCancelledAuthentication) { + response = [[NSHTTPURLResponse alloc] initWithURL:url + statusCode:401 + HTTPVersion:@"HTTP/1.1" + headerFields:@{}]; + } + + //if not OK status set the err to a JSONModelError instance + if (response.statusCode >= 300 || response.statusCode < 200) { + //create a new error + if (*err==nil) *err = [JSONModelError errorBadResponse]; + } + + //if there was an error, include the HTTP response and return + if (*err) { + //assign the response to the JSONModel instance + [*err setHttpResponse: [response copy]]; + + //empty respone, return nil instead + if ([responseData length]<1) { + return nil; + } + } + + //return the data fetched from web + return responseData; +} + ++(NSData*)syncRequestDataFromURL:(NSURL*)url method:(NSString*)method params:(NSDictionary*)params headers:(NSDictionary*)headers etag:(NSString**)etag error:(JSONModelError**)err +{ + //create the request body + NSMutableString* paramsString = nil; + + if (params) { + //build a simple url encoded param string + paramsString = [NSMutableString stringWithString:@""]; + for (NSString* key in [[params allKeys] sortedArrayUsingSelector:@selector(compare:)]) { + [paramsString appendFormat:@"%@=%@&", key, [self urlEncode:params[key]] ]; + } + if ([paramsString hasSuffix:@"&"]) { + paramsString = [[NSMutableString alloc] initWithString: [paramsString substringToIndex: paramsString.length-1]]; + } + } + + //set the request params + if ([method isEqualToString:kHTTPMethodGET] && params) { + + //add GET params to the query string + url = [NSURL URLWithString:[NSString stringWithFormat: @"%@%@%@", + [url absoluteString], + [url query] ? @"&" : @"?", + paramsString + ]]; + } + + //call the more general synq request method + return [self syncRequestDataFromURL: url + method: method + requestBody: [method isEqualToString:kHTTPMethodPOST]?[paramsString dataUsingEncoding:NSUTF8StringEncoding]:nil + headers: headers + etag: etag + error: err]; +} + +#pragma mark - Async network request ++(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary*)params orBodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString + method:method + params:params + orBodyString:bodyString + headers:nil + completion:completeBlock]; +} + ++(void)JSONFromURLWithString:(NSString *)urlString method:(NSString *)method params:(NSDictionary *)params orBodyString:(NSString *)bodyString headers:(NSDictionary *)headers completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString + method:method + params:params + orBodyData:[bodyString dataUsingEncoding:NSUTF8StringEncoding] + headers:headers + completion:completeBlock]; +} + ++(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary *)params orBodyData:(NSData*)bodyData headers:(NSDictionary*)headers completion:(JSONObjectBlock)completeBlock +{ + NSDictionary* customHeaders = headers; + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ + + id jsonObject = nil; + JSONModelError* error = nil; + NSData* responseData = nil; + NSString* etag = nil; + + @try { + if (bodyData) { + responseData = [self syncRequestDataFromURL: [NSURL URLWithString:urlString] + method: method + requestBody: bodyData + headers: customHeaders + etag: &etag + error: &error]; + } else { + responseData = [self syncRequestDataFromURL: [NSURL URLWithString:urlString] + method: method + params: params + headers: customHeaders + etag: &etag + error: &error]; + } + } + @catch (NSException *exception) { + error = [JSONModelError errorBadResponse]; + } + + //step 3: if there's no response so far, return a basic error + if (!responseData && !error) { + //check for false response, but no network error + error = [JSONModelError errorBadResponse]; + } + + //step 4: if there's a response at this and no errors, convert to object + if (error==nil) { + // Note: it is possible to have a valid response with empty response data (204 No Content). + // So only create the JSON object if there is some response data. + if(responseData.length > 0) + { + //convert to an object + jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; + } + } + //step 4.5: cover an edge case in which meaningful content is return along an error HTTP status code + else if (error && responseData && jsonObject==nil) { + //try to get the JSON object, while preserving the origianl error object + jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil]; + } + + //step 5: invoke the complete block + dispatch_async(dispatch_get_main_queue(), ^{ + if (completeBlock) { + completeBlock(jsonObject, error); + } + }); + }); +} + +#pragma mark - request aliases ++(void)getJSONFromURLWithString:(NSString*)urlString completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString method:kHTTPMethodGET + params:nil + orBodyString:nil completion:^(id json, JSONModelError* e) { + if (completeBlock) completeBlock(json, e); + }]; +} + ++(void)getJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString method:kHTTPMethodGET + params:params + orBodyString:nil completion:^(id json, JSONModelError* e) { + if (completeBlock) completeBlock(json, e); + }]; +} + ++(void)postJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString method:kHTTPMethodPOST + params:params + orBodyString:nil completion:^(id json, JSONModelError* e) { + if (completeBlock) completeBlock(json, e); + }]; + +} + ++(void)postJSONFromURLWithString:(NSString*)urlString bodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString method:kHTTPMethodPOST + params:nil + orBodyString:bodyString completion:^(id json, JSONModelError* e) { + if (completeBlock) completeBlock(json, e); + }]; +} + ++(void)postJSONFromURLWithString:(NSString*)urlString bodyData:(NSData*)bodyData completion:(JSONObjectBlock)completeBlock +{ + [self JSONFromURLWithString:urlString method:kHTTPMethodPOST + params:nil + orBodyString:[[NSString alloc] initWithData:bodyData encoding:defaultTextEncoding] + completion:^(id json, JSONModelError* e) { + if (completeBlock) completeBlock(json, e); + }]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h new file mode 100644 index 00000000000..88e329ef1a2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h @@ -0,0 +1,66 @@ +// +// JSONModel+networking.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONModel.h" +#import "JSONHTTPClient.h" + +typedef void (^JSONModelBlock)(id model, JSONModelError* err); + +/** + * The JSONModel(networking) class category adds networking to JSONModel. + * It adds initFromURLWithString: initializer, which makes a GET http request + * to the URL given and initializes the model with the returned JSON. + * Use #import "JSONModel+networking.h" to import networking capabilities. + */ +@interface JSONModel(Networking) + +@property (assign, nonatomic) BOOL isLoading; +/** @name Asynchroniously create a model over the network */ +/** + * Asynchroniously create a model over the network. Create a new model instance and initialize it with the JSON fetched from the given URL + * @param urlString the absolute URL address of the JSON feed as a string + * @param completeBlock JSONModelBlock executed upon completion. The JSONModelBlock type is defined as: void (^JSONModelBlock)(JSONModel* model, JSONModelError* e); the first parameter is the initialized model or nil, + * and second parameter holds the model initialization error, if any + */ +-(instancetype)initFromURLWithString:(NSString *)urlString completion:(JSONModelBlock)completeBlock; + +/** + * Asynchronously gets the contents of a URL and constructs a JSONModel object from the response. + * The constructed JSONModel object passed as the first parameter to the completion block will be of the same + * class as the receiver. So call this method on yourJSONModel sub-class rather than directly on JSONModel. + * @param urlString The absolute URL of the JSON resource, as a string + * @param completeBlock The block to be called upon completion. + * JSONModelBlock type is defined as: void (^JSONModelBlock)(JSONModel* model, JSONModelError* err); + * The first parameter is the initialized model (of the same JSONModel sub-class as the receiver) or nil if there was an error; + * The second parameter is the initialization error, if any. + */ ++ (void)getModelFromURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock; + +/** + * Asynchronously posts a JSONModel object (as JSON) to a URL and constructs a JSONModel object from the response. + * The constructed JSONModel object passed as the first parameter to the completion block will be of the same + * class as the receiver. So call this method on yourJSONModel sub-class rather than directly on JSONModel. + * @param post A JSONModel object that will be converted to JSON and sent as the POST data to the HTTP request. + * @param urlString The absolute URL of the JSON resource, as a string + * @param completeBlock The block to be called upon completion. + * JSONModelBlock type is defined as: void (^JSONModelBlock)(JSONModel* model, JSONModelError* err); + * The first parameter is the initialized model (of the same JSONModel sub-class as the receiver) or nil if there was an error; + * The second parameter is the initialization error, if any. + */ ++ (void)postModel:(JSONModel*)post toURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock; + + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m new file mode 100644 index 00000000000..7d4d1ff3768 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m @@ -0,0 +1,109 @@ +// +// JSONModel+networking.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONModel+networking.h" +#import "JSONHTTPClient.h" + +BOOL _isLoading; + +@implementation JSONModel(Networking) + +@dynamic isLoading; + +-(BOOL)isLoading +{ + return _isLoading; +} + +-(void)setIsLoading:(BOOL)isLoading +{ + _isLoading = isLoading; +} + +-(instancetype)initFromURLWithString:(NSString *)urlString completion:(JSONModelBlock)completeBlock +{ + id placeholder = [super init]; + __block id blockSelf = self; + + if (placeholder) { + //initialization + self.isLoading = YES; + + [JSONHTTPClient getJSONFromURLWithString:urlString + completion:^(NSDictionary *json, JSONModelError* e) { + + JSONModelError* initError = nil; + blockSelf = [self initWithDictionary:json error:&initError]; + + if (completeBlock) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_MSEC), dispatch_get_main_queue(), ^{ + completeBlock(blockSelf, e?e:initError ); + }); + } + + self.isLoading = NO; + + }]; + } + return placeholder; +} + ++ (void)getModelFromURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock +{ + [JSONHTTPClient getJSONFromURLWithString:urlString + completion:^(NSDictionary* jsonDict, JSONModelError* err) + { + JSONModel* model = nil; + + if(err == nil) + { + model = [[self alloc] initWithDictionary:jsonDict error:&err]; + } + + if(completeBlock != nil) + { + dispatch_async(dispatch_get_main_queue(), ^ + { + completeBlock(model, err); + }); + } + }]; +} + ++ (void)postModel:(JSONModel*)post toURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock +{ + [JSONHTTPClient postJSONFromURLWithString:urlString + bodyString:[post toJSONString] + completion:^(NSDictionary* jsonDict, JSONModelError* err) + { + JSONModel* model = nil; + + if(err == nil) + { + model = [[self alloc] initWithDictionary:jsonDict error:&err]; + } + + if(completeBlock != nil) + { + dispatch_async(dispatch_get_main_queue(), ^ + { + completeBlock(model, err); + }); + } + }]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h new file mode 100644 index 00000000000..75822c6e6fa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h @@ -0,0 +1,95 @@ +// +// JSONKeyMapper.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import + +typedef NSString* (^JSONModelKeyMapBlock)(NSString* keyName); + +/** + * **You won't need to create or store instances of this class yourself.** If you want your model + * to have different property names than the JSON feed keys, look below on how to + * make your model use a key mapper. + * + * For example if you consume JSON from twitter + * you get back underscore_case style key names. For example: + * + *
    "profile_sidebar_border_color": "0094C2",
    + * "profile_background_tile": false,
    + * + * To comply with Obj-C accepted camelCase property naming for your classes, + * you need to provide mapping between JSON keys and ObjC property names. + * + * In your model overwrite the +(JSONKeyMapper*)keyMapper method and provide a JSONKeyMapper + * instance to convert the key names for your model. + * + * If you need custom mapping it's as easy as: + *
    + * +(JSONKeyMapper*)keyMapper {
    + *   return [[JSONKeyMapper alloc] initWithDictionary:@{@"crazy_JSON_name":@"myCamelCaseName"}];
    + * }
    + * 
    + * In case you want to handle underscore_case, **use the predefined key mapper**, like so: + *
    + * +(JSONKeyMapper*)keyMapper {
    + *   return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase];
    + * }
    + * 
    + */ +@interface JSONKeyMapper : NSObject + +/** @name Name convertors */ +/** Block, which takes in a JSON key and converts it to the corresponding property name */ +@property (readonly, nonatomic) JSONModelKeyMapBlock JSONToModelKeyBlock; + +/** Block, which takes in a property name and converts it to the corresponding JSON key name */ +@property (readonly, nonatomic) JSONModelKeyMapBlock modelToJSONKeyBlock; + +/** Combined convertor method +* @param value the source name +* @param importing YES invokes JSONToModelKeyBlock, NO - modelToJSONKeyBlock +* @return JSONKeyMapper instance +*/ +-(NSString*)convertValue:(NSString*)value isImportingToModel:(BOOL)importing; + +/** @name Creating a key mapper */ + +/** + * Creates a JSONKeyMapper instance, based on the two blocks you provide this initializer. + * The two parameters take in a JSONModelKeyMapBlock block: + *
    NSString* (^JSONModelKeyMapBlock)(NSString* keyName)
    + * The block takes in a string and returns the transformed (if at all) string. + * @param toModel transforms JSON key name to your model property name + * @param toJSON transforms your model property name to a JSON key + */ +-(instancetype)initWithJSONToModelBlock:(JSONModelKeyMapBlock)toModel + modelToJSONBlock:(JSONModelKeyMapBlock)toJSON; + +/** + * Creates a JSONKeyMapper instance, based on the mapping you provide + * in the map parameter. Use the JSON key names as keys, your JSONModel + * property names as values. + * @param map map dictionary, in the format:
    @{@"crazy_JSON_name":@"myCamelCaseName"}
    + * @return JSONKeyMapper instance + */ +-(instancetype)initWithDictionary:(NSDictionary*)map; + +/** + * Creates a JSONKeyMapper, which converts underscore_case to camelCase and vice versa. + */ ++(instancetype)mapperFromUnderscoreCaseToCamelCase; + ++(instancetype)mapperFromUpperCaseToLowerCase; +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m new file mode 100644 index 00000000000..c3007dadae3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m @@ -0,0 +1,174 @@ +// +// JSONKeyMapper.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONKeyMapper.h" + +@interface JSONKeyMapper() +@property (nonatomic, strong) NSMutableDictionary *toModelMap; +@property (nonatomic, strong) NSMutableDictionary *toJSONMap; +@end + +@implementation JSONKeyMapper + +-(instancetype)init +{ + self = [super init]; + if (self) { + //initialization + self.toModelMap = [NSMutableDictionary dictionary]; + self.toJSONMap = [NSMutableDictionary dictionary]; + } + return self; +} + +-(instancetype)initWithJSONToModelBlock:(JSONModelKeyMapBlock)toModel + modelToJSONBlock:(JSONModelKeyMapBlock)toJSON +{ + self = [self init]; + + if (self) { + __weak JSONKeyMapper *myself = self; + //the json to model convertion block + _JSONToModelKeyBlock = ^NSString*(NSString* keyName) { + + //try to return cached transformed key + if (myself.toModelMap[keyName]) return myself.toModelMap[keyName]; + + //try to convert the key, and store in the cache + NSString* result = toModel(keyName); + myself.toModelMap[keyName] = result; + return result; + }; + + _modelToJSONKeyBlock = ^NSString*(NSString* keyName) { + + //try to return cached transformed key + if (myself.toJSONMap[keyName]) return myself.toJSONMap[keyName]; + + //try to convert the key, and store in the cache + NSString* result = toJSON(keyName); + myself.toJSONMap[keyName] = result; + return result; + + }; + + } + + return self; +} + +-(instancetype)initWithDictionary:(NSDictionary*)map +{ + self = [super init]; + if (self) { + //initialize + + NSMutableDictionary* userToModelMap = [NSMutableDictionary dictionaryWithDictionary: map]; + NSMutableDictionary* userToJSONMap = [NSMutableDictionary dictionaryWithObjects:map.allKeys forKeys:map.allValues]; + + _JSONToModelKeyBlock = ^NSString*(NSString* keyName) { + NSString* result = [userToModelMap valueForKeyPath: keyName]; + return result?result:keyName; + }; + + _modelToJSONKeyBlock = ^NSString*(NSString* keyName) { + NSString* result = [userToJSONMap valueForKeyPath: keyName]; + return result?result:keyName; + }; + } + + return self; +} + +-(NSString*)convertValue:(NSString*)value isImportingToModel:(BOOL)importing +{ + return !importing?_JSONToModelKeyBlock(value):_modelToJSONKeyBlock(value); +} + ++(instancetype)mapperFromUnderscoreCaseToCamelCase +{ + JSONModelKeyMapBlock toModel = ^ NSString* (NSString* keyName) { + + //bail early if no transformation required + if ([keyName rangeOfString:@"_"].location==NSNotFound) return keyName; + + //derive camel case out of underscore case + NSString* camelCase = [keyName capitalizedString]; + camelCase = [camelCase stringByReplacingOccurrencesOfString:@"_" withString:@""]; + camelCase = [camelCase stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:[[camelCase substringToIndex:1] lowercaseString] ]; + + return camelCase; + }; + + JSONModelKeyMapBlock toJSON = ^ NSString* (NSString* keyName) { + + NSMutableString* result = [NSMutableString stringWithString:keyName]; + NSRange upperCharRange = [result rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]]; + + //handle upper case chars + while ( upperCharRange.location!=NSNotFound) { + + NSString* lowerChar = [[result substringWithRange:upperCharRange] lowercaseString]; + [result replaceCharactersInRange:upperCharRange + withString:[NSString stringWithFormat:@"_%@", lowerChar]]; + upperCharRange = [result rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]]; + } + + //handle numbers + NSRange digitsRange = [result rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]]; + while ( digitsRange.location!=NSNotFound) { + + NSRange digitsRangeEnd = [result rangeOfString:@"\\D" options:NSRegularExpressionSearch range:NSMakeRange(digitsRange.location, result.length-digitsRange.location)]; + if (digitsRangeEnd.location == NSNotFound) { + //spands till the end of the key name + digitsRangeEnd = NSMakeRange(result.length, 1); + } + + NSRange replaceRange = NSMakeRange(digitsRange.location, digitsRangeEnd.location - digitsRange.location); + NSString* digits = [result substringWithRange:replaceRange]; + + [result replaceCharactersInRange:replaceRange withString:[NSString stringWithFormat:@"_%@", digits]]; + digitsRange = [result rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet] options:kNilOptions range:NSMakeRange(digitsRangeEnd.location+1, result.length-digitsRangeEnd.location-1)]; + } + + return result; + }; + + return [[self alloc] initWithJSONToModelBlock:toModel + modelToJSONBlock:toJSON]; + +} + ++(instancetype)mapperFromUpperCaseToLowerCase +{ + JSONModelKeyMapBlock toModel = ^ NSString* (NSString* keyName) { + NSString*lowercaseString = [keyName lowercaseString]; + return lowercaseString; + }; + + JSONModelKeyMapBlock toJSON = ^ NSString* (NSString* keyName) { + + NSString *uppercaseString = [keyName uppercaseString]; + + return uppercaseString; + }; + + return [[self alloc] initWithJSONToModelBlock:toModel + modelToJSONBlock:toJSON]; + +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h new file mode 100644 index 00000000000..8c40ce859cb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h @@ -0,0 +1,230 @@ +// +// JSONValueTransformer.h +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import +#import "JSONModelArray.h" + +///////////////////////////////////////////////////////////////////////////////////////////// + +#pragma mark - extern definitons +/** + * Boolean function to check for null values. Handy when you need to both check + * for nil and [NSNUll null] + */ +extern BOOL isNull(id value); + +///////////////////////////////////////////////////////////////////////////////////////////// + +#pragma mark - JSONValueTransformer interface +/** + * **You don't need to call methods of this class manually.** + * + * Class providing methods to transform values from one class to another. + * You are given a number of built-in transformers, but you are encouraged to + * extend this class with your own categories to add further value transformers. + * Just few examples of what can you add to JSONValueTransformer: hex colors in JSON to UIColor, + * hex numbers in JSON to NSNumber model properties, base64 encoded strings in JSON to UIImage properties, and more. + * + * The class is invoked by JSONModel while transforming incoming + * JSON types into your target class property classes, and vice versa. + * One static copy is create and store in the JSONModel class scope. + */ +@interface JSONValueTransformer : NSObject + +@property (strong, nonatomic, readonly) NSDictionary* primitivesNames; + +/** @name Resolving cluster class names */ +/** + * This method returns the ubmrella class for any standard class cluster members. + * For example returns NSString when given as input NSString, NSMutableString, __CFString and __CFConstantString + * The method currently looksup a pre-defined list. + * @param sourceClass the class to get the umrella class for + * @return Class + */ ++(Class)classByResolvingClusterClasses:(Class)sourceClass; + +#pragma mark - NSMutableString <-> NSString +/** @name Transforming to Mutable copies */ +/** + * Trasnforms a string value to a mutable string value + * @param string incoming string + * @return mutable string + */ +-(NSMutableString*)NSMutableStringFromNSString:(NSString*)string; + +#pragma mark - NSMutableArray <-> NSArray +/** + * Trasnforms an array to a mutable array + * @param array incoming array + * @return mutable array + */ +-(NSMutableArray*)NSMutableArrayFromNSArray:(NSArray*)array; + +#pragma mark - NS(Mutable)Array <- JSONModelArray +/** + * Trasnforms an array to a JSONModelArray + * @param array incoming array + * @return JSONModelArray + */ +-(NSArray*)NSArrayFromJSONModelArray:(JSONModelArray*)array; +-(NSMutableArray*)NSMutableArrayFromJSONModelArray:(JSONModelArray*)array; + +#pragma mark - NSMutableDictionary <-> NSDictionary +/** + * Trasnforms a dictionary to a mutable dictionary + * @param dict incoming dictionary + * @return mutable dictionary + */ +-(NSMutableDictionary*)NSMutableDictionaryFromNSDictionary:(NSDictionary*)dict; + +#pragma mark - NSSet <-> NSArray +/** @name Transforming Sets */ +/** + * Transforms an array to a set + * @param array incoming array + * @return set with the array's elements + */ +-(NSSet*)NSSetFromNSArray:(NSArray*)array; + +/** + * Transforms an array to a mutable set + * @param array incoming array + * @return mutable set with the array's elements + */ +-(NSMutableSet*)NSMutableSetFromNSArray:(NSArray*)array; + +/** + * Transforms a set to an array + * @param set incoming set + * @return an array with the set's elements + */ +-(NSArray*)JSONObjectFromNSSet:(NSSet*)set; + +/** + * Transforms a mutable set to an array + * @param set incoming mutable set + * @return an array with the set's elements + */ +-(NSArray*)JSONObjectFromNSMutableSet:(NSMutableSet*)set; + +#pragma mark - BOOL <-> number/string +/** @name Transforming JSON types */ +/** + * Transforms a number object to a bool number object + * @param number the number to convert + * @return the resulting number + */ +-(NSNumber*)BOOLFromNSNumber:(NSNumber*)number; + +/** + * Transforms a number object to a bool number object + * @param string the string value to convert, "0" converts to NO, everything else to YES + * @return the resulting number + */ +-(NSNumber*)BOOLFromNSString:(NSString*)string; + +/** + * Transforms a BOOL value to a bool number object + * @param number an NSNumber value coming from the model + * @return the result number + */ +-(NSNumber*)JSONObjectFromBOOL:(NSNumber*)number; + +#pragma mark - string <-> number +/** + * Transforms a string object to a number object + * @param string the string to convert + * @return the resulting number + */ +-(NSNumber*)NSNumberFromNSString:(NSString*)string; + +/** + * Transforms a number object to a string object + * @param number the number to convert + * @return the resulting string + */ +-(NSString*)NSStringFromNSNumber:(NSNumber*)number; + +/** + * Transforms a string object to a nsdecimalnumber object + * @param string the string to convert + * @return the resulting number + */ +-(NSDecimalNumber*)NSDecimalNumberFromNSString:(NSString*)string; + +/** + * Transforms a nsdecimalnumber object to a string object + * @param number the number to convert + * @return the resulting string + */ +-(NSString*)NSStringFromNSDecimalNumber:(NSDecimalNumber*)number; + + +#pragma mark - string <-> url +/** @name Transforming URLs */ +/** + * Transforms a string object to an NSURL object + * @param string the string to convert + * @return the resulting url object + */ +-(NSURL*)NSURLFromNSString:(NSString*)string; + +/** + * Transforms an NSURL object to a string + * @param url the url object to convert + * @return the resulting string + */ +-(NSString*)JSONObjectFromNSURL:(NSURL*)url; + +#pragma mark - string <-> time zone + +/** @name Transforming NSTimeZone */ +/** + * Transforms a string object to an NSTimeZone object + * @param string the string to convert + * @return the resulting NSTimeZone object + */ +- (NSTimeZone *)NSTimeZoneFromNSString:(NSString*)string; + +/** + * Transforms an NSTimeZone object to a string + * @param timeZone the time zone object to convert + * @return the resulting string + */ +- (NSString *)JSONObjectFromNSTimeZone:(NSTimeZone *)timeZone; + +#pragma mark - string <-> date +/** @name Transforming Dates */ +/** + * The following two methods are not public. This way if there is a category on converting + * dates it'll override them. If there isn't a category the default methods found in the .m + * file will be invoked. If these are public a warning is produced at the point of overriding + * them in a category, so they have to stay hidden here. + */ + +//-(NSDate*)NSDateFromNSString:(NSString*)string; +//-(NSString*)JSONObjectFromNSDate:(NSDate*)date; + +#pragma mark - number <-> date + +/** + * Transforms a number to an NSDate object + * @param number the number to convert + * @return the resulting date + */ +- (NSDate*)NSDateFromNSNumber:(NSNumber*)number; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m new file mode 100644 index 00000000000..4e5bc4a4772 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m @@ -0,0 +1,272 @@ +// +// JSONValueTransformer.m +// +// @version 1.0.2 +// @author Marin Todorov, http://www.touch-code-magazine.com +// + +// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +// This code is distributed under the terms and conditions of the MIT license. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + +#import "JSONValueTransformer.h" +#import "JSONModelArray.h" + +#pragma mark - functions +extern BOOL isNull(id value) +{ + if (!value) return YES; + if ([value isKindOfClass:[NSNull class]]) return YES; + + return NO; +} + +@implementation JSONValueTransformer + +-(id)init +{ + self = [super init]; + if (self) { + _primitivesNames = @{@"f":@"float", @"i":@"int", @"d":@"double", @"l":@"long", @"c":@"BOOL", @"s":@"short", @"q":@"long", + //and some famos aliases of primitive types + // BOOL is now "B" on iOS __LP64 builds + @"I":@"NSInteger", @"Q":@"NSUInteger", @"B":@"BOOL", + + @"@?":@"Block"}; + } + return self; +} + ++(Class)classByResolvingClusterClasses:(Class)sourceClass +{ + //check for all variations of strings + if ([sourceClass isSubclassOfClass:[NSString class]]) { + return [NSString class]; + } + + //check for all variations of numbers + if ([sourceClass isSubclassOfClass:[NSNumber class]]) { + return [NSNumber class]; + } + + //check for all variations of dictionaries + if ([sourceClass isSubclassOfClass:[NSArray class]]) { + return [NSArray class]; + } + + //check for all variations of arrays + if ([sourceClass isSubclassOfClass:[NSDictionary class]]) { + return [NSDictionary class]; + } + + //check for all variations of dates + if ([sourceClass isSubclassOfClass:[NSDate class]]) { + return [NSDate class]; + } + + //no cluster parent class found + return sourceClass; +} + +#pragma mark - NSMutableString <-> NSString +-(NSMutableString*)NSMutableStringFromNSString:(NSString*)string +{ + return [NSMutableString stringWithString:string]; +} + +#pragma mark - NSMutableArray <-> NSArray +-(NSMutableArray*)NSMutableArrayFromNSArray:(NSArray*)array +{ + if ([array isKindOfClass:[JSONModelArray class]]) { + //it's a jsonmodelarray already, just return it + return (id)array; + } + + return [NSMutableArray arrayWithArray:array]; +} + +#pragma mark - NS(Mutable)Array <- JSONModelArray +-(NSArray*)NSArrayFromJSONModelArray:(JSONModelArray*)array +{ + return (NSMutableArray*)array; +} + +-(NSMutableArray*)NSMutableArrayFromJSONModelArray:(JSONModelArray*)array +{ + return (NSMutableArray*)array; +} + + +#pragma mark - NSMutableDictionary <-> NSDictionary +-(NSMutableDictionary*)NSMutableDictionaryFromNSDictionary:(NSDictionary*)dict +{ + return [NSMutableDictionary dictionaryWithDictionary:dict]; +} + +#pragma mark - NSSet <-> NSArray +-(NSSet*)NSSetFromNSArray:(NSArray*)array +{ + return [NSSet setWithArray:array]; +} + +-(NSMutableSet*)NSMutableSetFromNSArray:(NSArray*)array +{ + return [NSMutableSet setWithArray:array]; +} + +-(id)JSONObjectFromNSSet:(NSSet*)set +{ + return [set allObjects]; +} + +-(id)JSONObjectFromNSMutableSet:(NSMutableSet*)set +{ + return [set allObjects]; +} + +// +// 0 converts to NO, everything else converts to YES +// + +#pragma mark - BOOL <-> number/string +-(NSNumber*)BOOLFromNSNumber:(NSNumber*)number +{ + if (isNull(number)) return [NSNumber numberWithBool:NO]; + return [NSNumber numberWithBool: number.intValue==0?NO:YES]; +} + +-(NSNumber*)BOOLFromNSString:(NSString*)string +{ + if (string != nil && + ([string caseInsensitiveCompare:@"true"] == NSOrderedSame || + [string caseInsensitiveCompare:@"yes"] == NSOrderedSame)) { + return [NSNumber numberWithBool:YES]; + } + return [NSNumber numberWithBool: ([string intValue]==0)?NO:YES]; +} + +-(NSNumber*)JSONObjectFromBOOL:(NSNumber*)number +{ + return [NSNumber numberWithBool: number.intValue==0?NO:YES]; +} + +#pragma mark - string/number <-> float +-(float)floatFromObject:(id)obj +{ + return [obj floatValue]; +} + +-(float)floatFromNSString:(NSString*)string +{ + return [self floatFromObject:string]; +} + +-(float)floatFromNSNumber:(NSNumber*)number +{ + return [self floatFromObject:number]; +} + +-(NSNumber*)NSNumberFromfloat:(float)f +{ + return [NSNumber numberWithFloat:f]; +} + +#pragma mark - string <-> number +-(NSNumber*)NSNumberFromNSString:(NSString*)string +{ + return [NSNumber numberWithFloat: [string doubleValue]]; +} + +-(NSString*)NSStringFromNSNumber:(NSNumber*)number +{ + return [number stringValue]; +} + +-(NSDecimalNumber*)NSDecimalNumberFromNSString:(NSString*)string +{ + return [NSDecimalNumber decimalNumberWithString:string]; +} + +-(NSString*)NSStringFromNSDecimalNumber:(NSDecimalNumber*)number +{ + return [number stringValue]; +} + +#pragma mark - string <-> url +-(NSURL*)NSURLFromNSString:(NSString*)string +{ + return [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; +} + +-(NSString*)JSONObjectFromNSURL:(NSURL*)url +{ + return [url absoluteString]; +} + +#pragma mark - string <-> date +-(NSDateFormatter*)importDateFormatter +{ + static dispatch_once_t onceInput; + static NSDateFormatter* inputDateFormatter; + dispatch_once(&onceInput, ^{ + inputDateFormatter = [[NSDateFormatter alloc] init]; + [inputDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; + [inputDateFormatter setDateFormat:@"yyyy-MM-dd'T'HHmmssZZZ"]; + }); + return inputDateFormatter; +} + +-(NSDate*)__NSDateFromNSString:(NSString*)string +{ + string = [string stringByReplacingOccurrencesOfString:@":" withString:@""]; // this is such an ugly code, is this the only way? + return [self.importDateFormatter dateFromString: string]; +} + +-(NSString*)__JSONObjectFromNSDate:(NSDate*)date +{ + static dispatch_once_t onceOutput; + static NSDateFormatter *outputDateFormatter; + dispatch_once(&onceOutput, ^{ + outputDateFormatter = [[NSDateFormatter alloc] init]; + [outputDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; + [outputDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; + }); + return [outputDateFormatter stringFromDate:date]; +} + +#pragma mark - number <-> date +- (NSDate*)NSDateFromNSNumber:(NSNumber*)number +{ + return [NSDate dateWithTimeIntervalSince1970:number.doubleValue]; +} + +#pragma mark - string <-> NSTimeZone + +- (NSTimeZone *)NSTimeZoneFromNSString:(NSString *)string { + return [NSTimeZone timeZoneWithName:string]; +} + +- (id)JSONObjectFromNSTimeZone:(NSTimeZone *)timeZone { + return [timeZone name]; +} + +#pragma mark - hidden transform for empty dictionaries +//https://github.com/icanzilb/JSONModel/issues/163 +-(NSDictionary*)__NSDictionaryFromNSArray:(NSArray*)array +{ + if (array.count==0) return @{}; + return (id)array; +} + +-(NSMutableDictionary*)__NSMutableDictionaryFromNSArray:(NSArray*)array +{ + if (array.count==0) return [[self __NSDictionaryFromNSArray:array] mutableCopy]; + return (id)array; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt new file mode 100644 index 00000000000..cbcdb3b7d5e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt @@ -0,0 +1,23 @@ +JSONModel + +Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +This code is distributed under the terms and conditions of the MIT license. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md new file mode 100644 index 00000000000..996fe0f9683 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md @@ -0,0 +1,527 @@ +## Magical Data Modelling Framework for JSON + +### Version 1.0.2 + +#####NB: Swift works in a different way under the hood than Objective-C. Therefore I can't find a way to re-create JSONModel in Swift. JSONModel in Objective-C works in Swift apps through CocoaPods or as an imported Objective-C library. + +--- +If you like JSONModel and use it, could you please: + + * star this repo + + * send me some feedback. Thanks! + +--- + +![JSONModel for iOS and OSX](http://jsonmodel.com/img/jsonmodel_logolike.png) + +JSONModel is a library, which allows rapid creation of smart data models. You can use it in your iOS or OSX apps. + +JSONModel automatically introspects your model classes and the structure of your JSON input and reduces drastically the amount of code you have to write. + +[![](http://www.touch-code-magazine.com/img/json.png)](http://www.touch-code-magazine.com/img/json.png) + + +------------------------------------ +Adding JSONModel to your project +==================================== + +#### Requirements + +* ARC only; iOS 5.0+ / OSX 10.7+ +* **SystemConfiguration.framework** + +#### Get it as: 1) source files + +1. Download the JSONModel repository as a [zip file](https://github.com/icanzilb/JSONModel/archive/master.zip) or clone it +2. Copy the JSONModel sub-folder into your Xcode project +3. Link your app to SystemConfiguration.framework + +#### or 2) via Cocoa pods + +In your project's **Podfile** add the JSONModel pod: + +```ruby +pod 'JSONModel' +``` +If you want to read more about CocoaPods, have a look at [this short tutorial](http://www.raywenderlich.com/12139/introduction-to-cocoapods). + +#### Source code documentation +The source code includes class docs, which you can build yourself and import into Xcode: + +1. If you don't already have [appledoc](http://gentlebytes.com/appledoc/) installed, install it with [homebrew](http://brew.sh/) by typing `brew install appledoc`. +2. Install the documentation into Xcode by typing `appledoc .` in the root directory of the repository. +3. Restart Xcode if it's already running. + +------------------------------------ +Basic usage +==================================== + +Consider you have a JSON like this: +```javascript +{"id":"10", "country":"Germany", "dialCode": 49, "isInEurope":true} +``` + + * Create a new Objective-C class for your data model and make it inherit the JSONModel class. + * Declare properties in your header file with the name of the JSON keys: + +```objective-c +#import "JSONModel.h" + +@interface CountryModel : JSONModel + +@property (assign, nonatomic) int id; +@property (strong, nonatomic) NSString* country; +@property (strong, nonatomic) NSString* dialCode; +@property (assign, nonatomic) BOOL isInEurope; + +@end +``` +There's no need to do anything in the **.m** file. + + * Initialize your model with data: + +```objective-c +#import "CountryModel.h" +... + +NSString* json = (fetch here JSON from Internet) ... +NSError* err = nil; +CountryModel* country = [[CountryModel alloc] initWithString:json error:&err]; + +``` + +If the validation of the JSON passes you have all the corresponding properties in your model populated from the JSON. JSONModel will also try to convert as much data to the types you expect, in the example above it will: + +* convert "id" from string (in the JSON) to an int for your class +* just copy country's value +* convert dialCode from number (in the JSON) to an NSString value +* finally convert isInEurope to a BOOL for your BOOL property + +And the good news is all you had to do is define the properties and their expected types. + +------- +#### Online tutorials + + +Official website: [http://www.jsonmodel.com](http://www.jsonmodel.com) + +Class docs online: [http://jsonmodel.com/docs/](http://jsonmodel.com/docs/) + +Step-by-step tutorials: + + * [How to fetch and parse JSON by using data models](http://www.touch-code-magazine.com/how-to-fetch-and-parse-json-by-using-data-models/) + + * [Performance optimisation for working with JSON feeds via JSONModel](http://www.touch-code-magazine.com/performance-optimisation-for-working-with-json-feeds-via-jsonmodel/) + + * [How to make a YouTube app using MGBox and JSONModel](http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/) + +------- +Examples +======= + +#### Automatic name based mapping + + + + + +
    +
    +{
    +  "id": "123",
    +  "name": "Product name",
    +  "price": 12.95
    +}
    +
    +
    +
    +@interface ProductModel : JSONModel
    +@property (assign, nonatomic) int id;
    +@property (strong, nonatomic) NSString* name;
    +@property (assign, nonatomic) float price;
    +@end
    +
    +@implementation ProductModel
    +@end
    +
    +
    + +#### Model cascading (models including other models) + + + + + +
    +
    +{
    +  "order_id": 104,
    +  "total_price": 13.45,
    +  "product" : {
    +    "id": "123",
    +    "name": "Product name",
    +    "price": 12.95
    +  }
    +}
    +
    +
    +
    +@interface OrderModel : JSONModel
    +@property (assign, nonatomic) int order_id;
    +@property (assign, nonatomic) float total_price;
    +@property (strong, nonatomic) ProductModel* product;
    +@end
    +
    +@implementation OrderModel
    +@end
    +
    +
    + +#### Model collections + + + + + +
    +
    +{
    +  "order_id": 104,
    +  "total_price": 103.45,
    +  "products" : [
    +    {
    +      "id": "123",
    +      "name": "Product #1",
    +      "price": 12.95
    +    },
    +    {
    +      "id": "137",
    +      "name": "Product #2",
    +      "price": 82.95
    +    }
    +  ]
    +}
    +
    +
    +
    +@protocol ProductModel
    +@end
    +
    +@interface ProductModel : JSONModel
    +@property (assign, nonatomic) int id;
    +@property (strong, nonatomic) NSString* name;
    +@property (assign, nonatomic) float price;
    +@end
    +
    +@implementation ProductModel
    +@end
    +
    +@interface OrderModel : JSONModel
    +@property (assign, nonatomic) int order_id;
    +@property (assign, nonatomic) float total_price;
    +@property (strong, nonatomic) NSArray<ProductModel>* products;
    +@end
    +
    +@implementation OrderModel
    +@end
    +
    +
    + +#### Key mapping + + + + + +
    +
    +{
    +  "order_id": 104,
    +  "order_details" : [
    +    {
    +      "name": "Product#1",
    +      "price": {
    +        "usd": 12.95
    +      }
    +    }
    +  ]
    +}
    +
    +
    +
    +@interface OrderModel : JSONModel
    +@property (assign, nonatomic) int id;
    +@property (assign, nonatomic) float price;
    +@property (strong, nonatomic) NSString* productName;
    +@end
    +
    +@implementation OrderModel
    +
    ++(JSONKeyMapper*)keyMapper
    +{
    +  return [[JSONKeyMapper alloc] initWithDictionary:@{
    +    @"order_id": @"id",
    +    @"order_details.name": @"productName",
    +    @"order_details.price.usd": @"price"
    +  }];
    +}
    +
    +@end
    +
    +
    + +#### Global key mapping (applies to all models in your app) + + + + +
    +
    +[JSONModel setGlobalKeyMapper:[
    +    [JSONKeyMapper alloc] initWithDictionary:@{
    +      @"item_id":@"ID",
    +      @"item.name": @"itemName"
    +   }]
    +];
    +
    +
    +
    + +#### Map automatically under_score case to camelCase + + + + + +
    +
    +{
    +  "order_id": 104,
    +  "order_product" : @"Product#1",
    +  "order_price" : 12.95
    +}
    +
    +
    +
    +@interface OrderModel : JSONModel
    +
    +@property (assign, nonatomic) int orderId;
    +@property (assign, nonatomic) float orderPrice;
    +@property (strong, nonatomic) NSString* orderProduct;
    +
    +@end
    +
    +@implementation OrderModel
    +
    ++(JSONKeyMapper*)keyMapper
    +{
    +  return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase];
    +}
    +
    +@end
    +
    +
    + +#### Optional properties (i.e. can be missing or null) + + + + + +
    +
    +{
    +  "id": "123",
    +  "name": null,
    +  "price": 12.95
    +}
    +
    +
    +
    +@interface ProductModel : JSONModel
    +@property (assign, nonatomic) int id;
    +@property (strong, nonatomic) NSString<Optional>* name;
    +@property (assign, nonatomic) float price;
    +@property (strong, nonatomic) NSNumber<Optional>* uuid;
    +@end
    +
    +@implementation ProductModel
    +@end
    +
    +
    + +#### Ignored properties (i.e. JSONModel completely ignores them) + + + + + +
    +
    +{
    +  "id": "123",
    +  "name": null
    +}
    +
    +
    +
    +@interface ProductModel : JSONModel
    +@property (assign, nonatomic) int id;
    +@property (strong, nonatomic) NSString<Ignore>* customProperty;
    +@end
    +
    +@implementation ProductModel
    +@end
    +
    +
    + + +#### Make all model properties optional (avoid if possible) + + + + +
    +
    +@implementation ProductModel
    ++(BOOL)propertyIsOptional:(NSString*)propertyName
    +{
    +  return YES;
    +}
    +@end
    +
    +
    + + +#### Lazy convert collection items from dictionaries to models + + + + + +
    +
    +{
    +  "order_id": 104,
    +  "total_price": 103.45,
    +  "products" : [
    +    {
    +      "id": "123",
    +      "name": "Product #1",
    +      "price": 12.95
    +    },
    +    {
    +      "id": "137",
    +      "name": "Product #2",
    +      "price": 82.95
    +    }
    +  ]
    +}
    +
    +
    +
    +@protocol ProductModel
    +@end
    +
    +@interface ProductModel : JSONModel
    +@property (assign, nonatomic) int id;
    +@property (strong, nonatomic) NSString* name;
    +@property (assign, nonatomic) float price;
    +@end
    +
    +@implementation ProductModel
    +@end
    +
    +@interface OrderModel : JSONModel
    +@property (assign, nonatomic) int order_id;
    +@property (assign, nonatomic) float total_price;
    +@property (strong, nonatomic) NSArray<ProductModel, ConvertOnDemand>* products;
    +@end
    +
    +@implementation OrderModel
    +@end
    +
    +
    + +#### Using the built-in thin HTTP client + +```objective-c + +//add extra headers +[[JSONHTTPClient requestHeaders] setValue:@"MySecret" forKey:@"AuthorizationToken"]; + +//make post, get requests +[JSONHTTPClient postJSONFromURLWithString:@"http://mydomain.com/api" + params:@{@"postParam1":@"value1"} + completion:^(id json, JSONModelError *err) { + + //check err, process json ... + + }]; +``` + +#### Export model to NSDictionary or to JSON text + +```objective-c + +ProductModel* pm = [[ProductModel alloc] initWithString:jsonString error:nil]; +pm.name = @"Changed Name"; + +//convert to dictionary +NSDictionary* dict = [pm toDictionary]; + +//convert to text +NSString* string = [pm toJSONString]; + +``` + +#### Custom data transformers + +```objective-c + +@implementation JSONValueTransformer (CustomTransformer) + +- (NSDate *)NSDateFromNSString:(NSString*)string { + NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; + [formatter setDateFormat:APIDateFormat]; + return [formatter dateFromString:string]; +} + +- (NSString *)JSONObjectFromNSDate:(NSDate *)date { + NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; + [formatter setDateFormat:APIDateFormat]; + return [formatter stringFromDate:date]; +} + +@end + +``` + +* json validation +* error handling +* custom data validation +* automatic compare and equality features +* and more. + +------- + +Misc +======= + +Author: [Marin Todorov](http://www.touch-code-magazine.com) + +Contributors: Christian Hoffmann, Mark Joslin, Julien Vignali, Symvaro GmbH, BB9z. +Also everyone who did successful [pull requests](https://github.com/icanzilb/JSONModel/graphs/contributors). + +Change log : [https://github.com/icanzilb/JSONModel/blob/master/Changelog.md](https://github.com/icanzilb/JSONModel/blob/master/Changelog.md) + +------- +#### License +This code is distributed under the terms and conditions of the MIT license. + +------- +#### Contribution guidelines + +**NB!** If you are fixing a bug you discovered, please add also a unit test so I know how exactly to reproduce the bug before merging. + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json b/samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json new file mode 100644 index 00000000000..3b6ca09fb45 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json @@ -0,0 +1,37 @@ +{ + "name": "SwaggerClient", + "version": "0.1.0", + "summary": "A short description of SwaggerClient.", + "description": " An optional longer description of SwaggerClient\n\n * Markdown format.\n * Don't worry about the indent, we strip it!\n", + "homepage": "https://github.com//SwaggerClient", + "license": "MIT", + "authors": { + "geekerzp": "geekerzp@gmail.com" + }, + "source": { + "git": "https://github.com//SwaggerClient.git", + "tag": "0.1.0" + }, + "platforms": { + "ios": "7.0" + }, + "requires_arc": true, + "source_files": "SwaggerClient/**/*", + "public_header_files": "SwaggerClient/**/*.h", + "resource_bundles": { + "SwaggerClient": [ + "Pod/Assets/*.png" + ] + }, + "dependencies": { + "AFNetworking": [ + "~> 2.3" + ], + "JSONModel": [ + + ], + "ISO8601": [ + + ] + } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock b/samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock new file mode 100644 index 00000000000..d1ab2cdf9eb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock @@ -0,0 +1,49 @@ +PODS: + - AFNetworking (2.5.4): + - AFNetworking/NSURLConnection (= 2.5.4) + - AFNetworking/NSURLSession (= 2.5.4) + - AFNetworking/Reachability (= 2.5.4) + - AFNetworking/Security (= 2.5.4) + - AFNetworking/Serialization (= 2.5.4) + - AFNetworking/UIKit (= 2.5.4) + - AFNetworking/NSURLConnection (2.5.4): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/NSURLSession (2.5.4): + - AFNetworking/Reachability + - AFNetworking/Security + - AFNetworking/Serialization + - AFNetworking/Reachability (2.5.4) + - AFNetworking/Security (2.5.4) + - AFNetworking/Serialization (2.5.4) + - AFNetworking/UIKit (2.5.4): + - AFNetworking/NSURLConnection + - AFNetworking/NSURLSession + - Expecta (1.0.0) + - ISO8601 (0.3.0) + - JSONModel (1.1.0) + - Specta (1.0.2) + - SwaggerClient (0.1.0): + - AFNetworking (~> 2.3) + - ISO8601 + - JSONModel + +DEPENDENCIES: + - Expecta + - Specta + - SwaggerClient (from `../`) + +EXTERNAL SOURCES: + SwaggerClient: + :path: "../" + +SPEC CHECKSUMS: + AFNetworking: 05edc0ac4c4c8cf57bcf4b84be5b0744b6d8e71e + Expecta: 32604574add2c46a36f8d2f716b6c5736eb75024 + ISO8601: 8d8a22d5edf0554a1cf75bac028c76c1dc0ffaef + JSONModel: ec77e9865236a7a09d9cf7668df6b4b328d9ec1d + Specta: 9cec98310dca411f7c7ffd6943552b501622abfe + SwaggerClient: 579729c54e8e2e34566e5b5572adc959518663ea + +COCOAPODS: 0.37.1 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..e158beea742 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj @@ -0,0 +1,3349 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 009F14C0CA20741504926131 /* JSONModel+networking.h in Headers */ = {isa = PBXBuildFile; fileRef = B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 015B81A52CCCF49BCE3973BE /* SWGPetApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */; }; + 01644CF4631020B9AC9CCD06 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05E44B1705BF02EF459EED58 /* SWGOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 060CE80CB8B14C7F22E6C8F7 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 063630C46D0AE3241769A6AB /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 064D4D263A3BCF74314B1CC0 /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = CB2A97414B35780C4D650A65 /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 0769C01E1EDA98F189CA18F7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 08D39D19BF314C76BE1C7C47 /* JSONModelError.h in Headers */ = {isa = PBXBuildFile; fileRef = A79E486BE2BAA943C0E47F51 /* JSONModelError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A807DDB6336109324346314 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E147F308CD2889593641F8 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BA67D960C3D46FE796FA170 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C70D134185F0A5D884F2D5 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0C64F018C08F817B763164B4 /* SWGMyresult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */; }; + 0CE023D16C43712578A85693 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0D6A55BDCE3AAA3B8A4451D0 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A4077B653CCC6F44DDA78122 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m */; }; + 0D7DC58CB3CDFDB33C4CB741 /* SWGPetApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */; }; + 0DE7F2395E87EE714F79B368 /* JSONHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 0E5BA06D6F20D109F5937BBA /* Pods-SwaggerClient_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D3304828283C9BAC71B216 /* Pods-SwaggerClient_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 10D3E7AAF6BF29347D2C6098 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */; }; + 1398D1EFD62E17C5E8B2D5E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 141E818821C0DF4EF86D111A /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = D15CDBD1F8D1EE6AB0D63F21 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14B409D1DD01CD3148C13D93 /* UIAlertView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */; }; + 14D082B7758784153108F8D0 /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DB4BB24028928E6E7BE64E9 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 153CA93C3D5647FED90150DD /* ISO8601.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */; }; + 15481C9B911D9926D6616544 /* JSONModelArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 15D3342D7E8179197A16CE99 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 734153C8D7D6EE89E1CBF7A4 /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 15D907F1F8EE9988D498B929 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 179CF1D636A8BCC9B4FF0357 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = DFA9B08443D964E2FB073F56 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 18EB1478750F10527DCBA3CA /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B13A1E5CC1C83917B3B55837 /* XCTest+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1A089E25AFA9D708ACA954D0 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = F7E78B22E6B39AF231BCCA2D /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1A42236975D31BC018BADEA8 /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AFADA1570737157E9617EFA /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1AE4C4E081C7868C097ED07E /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = DF0444D8EBDF25B4DEFD64FC /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 1B9947C260FA1F8C7BBF6CAA /* JSONValueTransformer+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BF4F57244442FA9C0CE55BF /* JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 1C19F010F92332D333674C99 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 1CF4FB9D2FD679D464ABBB50 /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A26EF949942E5B501DDD747 /* SpectaUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1E90336D2D07D4CCD8EAB3AE /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1F6FDD41776492A1FC024230 /* Pods-SwaggerClient_Tests-JSONModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 16CF586DFE9835700F2EDA9E /* Pods-SwaggerClient_Tests-JSONModel-dummy.m */; }; + 2019465B5EC42B2DCBB85EE3 /* Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 381AE18EE5432808A1136286 /* Specta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 202A56F969E09068E449B790 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 208F0DB6A4BA036D42430F0E /* SWGMyresult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 216BA373617DE71E01797A11 /* NSDate+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 234F4761A980F0FB31468104 /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D6BE8527F16F514E61677DA4 /* SpectaUtility.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 248E11A29947ED3176089DE8 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 859359D6C9F1E75F8FD12FC7 /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 24A7213C685D7D07D1A1FEBD /* SWGObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 93127E06DFE790D76898A78D /* SWGObject.m */; }; + 2575C7D4A30F9F057EEB475B /* JSONHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2599FEFF7BBE8634BD34A792 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */; }; + 28DA345E3A79443D17917DD3 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */; }; + 2A1D80A2AD26A4E7E3CB41BF /* JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 67A228DF9CD60524B576E388 /* JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2B068325226CBE00207FD473 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 26140D01ECBBE302403277E7 /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 2B9B995C35A4D77609B5BFF2 /* JSONModelClassProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2BF8572932D3DB0D00340B5D /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9CD3349C1E0B89048D7931 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2C0B0BCC4246AA2B5C7A85A4 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E3F2428A92C2B30B905D1 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2E0CAD7ECD05DB499DB08A87 /* JSONModelError.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 2E492A887BD1485D00A872DE /* SWGApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2FB329EBD1692264B6EF0552 /* SWGStoreApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */; }; + 2FBDF7CE14C4468420FD55AE /* Pods-SwaggerClient_Tests-Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 60DECAD526F277F125AC6CC8 /* Pods-SwaggerClient_Tests-Specta-dummy.m */; }; + 30761F9D2ADDD7315DDC95D8 /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BD49D2B002813654F20C0CDB /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 30AED8CD55E9DA4D102A028B /* SWGObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F66BA3CD50A4290602F14B /* SWGObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 31A472719AA3A52EC74903FD /* SWGApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 31EED5998AB440042E5AD2A1 /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FC7B913F4D0D8ABA61D37F /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 31F4C8B75EEE1B23E2591723 /* SWGPetApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 60F89DDC8635677F871D034F /* SWGPetApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 349C1EC2A3BC841F900B1486 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = 5ED368FA80CE15CF073E7E4C /* SPTCallSite.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 35B0AC4B7AF8B00BC4C38BE6 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = A41CD6CC31666FBF14F37933 /* SpectaDSL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3760B1DD16BFF927E104FB25 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 02BFF49A4C0CD62A7A017609 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 386EB7F3BE797D89A650C1C5 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */; }; + 38DD8E43F24A829555F60CFA /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = E2E6D41C47D3DA237C488316 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3A595234403693F5B22FB680 /* JSONModelClassProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 91DC534FB82569495452D79F /* JSONModelClassProperty.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 3B64A6FDF788A2104D9BB03D /* Pods-SwaggerClient_Example-JSONModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DC4F0DB2C1E5DEACB3919576 /* Pods-SwaggerClient_Example-JSONModel-dummy.m */; }; + 3D3DB30244C6BC6C236665C2 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = B7A8D6EF8C60FFFB42E24B88 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 3DC47F224263A6AE449CFFDC /* JSONKeyMapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3DDA99600B95318A88915CE5 /* SWGCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */; }; + 3EAEDA676CAF94858D91CFB0 /* SpectaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3143CF53A3ECFD840FEBF5 /* SpectaTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3EC6DC73A10ED5CC2F75062A /* SWGOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8371F57BE2022A982DD2C14B /* SWGOrder.m */; }; + 3FA455AFA48AD50F1D53F9CA /* JSONModelLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 40978838FAEA6D634F4AD042 /* JSONValueTransformer+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 430B13D7C84147B12F239C1C /* ISO8601.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */; }; + 4327F8FF04D9796D030CC825 /* SWGMythingApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 43EB4E01F9DBC56B8153AF88 /* SWGUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F927BCFCED60E5C20DD572D /* SWGUser.m */; }; + 44E1A78EC1381D154F5F4198 /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = B6FCB81E5D8E3706D242931A /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45BE91BE73E2BB75611507CA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */; }; + 4684F0551F479F660241F8EE /* SWGConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF50F76847FEFE63382A19D /* SWGConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 480220DF7A8958ABA2B68C4A /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5853898EA95C369F30529C9B /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 480B9A799CF713D7A4FB1280 /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 88AAAF1815056252470FC2A6 /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 485CBCFDC4C3E69D41661405 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */; }; + 49207B3420011B51EB18E841 /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C4946DD8004B10DBD3BEBE0 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 49BD45475EFF07925EF1261D /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E1126602057323308CBEB1C /* SpectaDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A2E86089A4A9CBC89A42217 /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CB976EFCEBA507C7297EFFAF /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m */; }; + 4C1848887F607EB5D0D594FB /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCD887355DA3622403C587F3 /* Security.framework */; }; + 4C235C092D5E9122C9675223 /* NSDate+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4C87A409DB81EB3100727F0F /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 71301AA0D0508AC69416EEFD /* EXPMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4CD5A6D7AA3D5BFD09648D1D /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = BE4CCABD7BD7EF95BEC3C2A4 /* EXPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4CE48BA8AC5C9F3EF8626447 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 4D4DFF614C17C0DC6F9358B9 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = FF99417D61F3A97DC44475AF /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D8B2BA43AAE4EB70B675653 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E0D59D3C52705977CDA2F8C /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FA82A66FE087D46B5F479DF /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 4E381D04C09A000DF81BB192 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 722C967FF2EE63957185640A /* EXPExpect.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50147C1C98A2BE3F820601A9 /* NSArray+JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5396861AA4F84D5063B9B570 /* JSONValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 53DB01B8A07B731462961681 /* JSONModelArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 541A3EF8AB9F89D0C26F5180 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */; }; + 54A1C77FFEF9D6711B04A35F /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5557E105ADC6440D8DE05BE8 /* SWGApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */; }; + 558377E71A2AECE6C70176A1 /* JSONAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = D906469EA22490516C576F34 /* JSONAPI.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 56250F2F58B9A7760BFA25D2 /* SWGFile.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBE9B8A684DF642FE20657F /* SWGFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5771BA042DF953FA88D9C2FF /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AABA64768BF1C67079AC14C /* XCTest.framework */; }; + 58933698E078FEA9C0689292 /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 78DEE88FE58FD1EB9ED82644 /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 591D3B049A7E8627A5AA65B1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */; }; + 592FFE8ADED8118B48C3C008 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */; }; + 59719066DA7A3B5DD4234C92 /* JSONModel+networking.h in Headers */ = {isa = PBXBuildFile; fileRef = B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5A8DE01C8A5A5BA6F321912A /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3348A38E5534FDD63284711E /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5AF80236C8B3D49B88DD6A73 /* ISO8601Serialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 5B2FCF39BB864869CD94F2F9 /* JSONValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B7DF7966982B7F4CADDD133 /* SWGStoreApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 70728AC343FB456859D11ABE /* SWGStoreApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5CF717B5F4B92B85335848B5 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE9F929357775BD67A93711 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D36786D11940C4FC2D151F1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */; }; + 5D474A781C64601B7793EACE /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8CC8C24B86136D1949316C /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DA26B0C4EB1C7DEB0B44AAF /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AABA64768BF1C67079AC14C /* XCTest.framework */; }; + 5EB23F6A3A0BC89591B46C53 /* SWGMyresult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */; }; + 5EC683903E3BFB84AF431EE7 /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 1527CA2833B390D6002D3965 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 5F372EF252811B674AC4AB6B /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 28CEAD6EAF4AC73948D28F2B /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61E0F74A03A9676D1F9B9A1A /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */; }; + 6353F43D216317DCB7178D76 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 64839F8447FE9FFE7BEAA520 /* UIAlertView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */; }; + 655A1A5574F0ADA33C6BA555 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C70D134185F0A5D884F2D5 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 65EEB46EDB53A949C6316472 /* SPTTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E2261DFC4C37167696E0BF2 /* SPTTestSuite.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 684A4BF6370BC43C9704A17A /* SWGConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF50F76847FEFE63382A19D /* SWGConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6895CF33F4FB371D6FCA3FE9 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F02A625CD67C7385B76D0C /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */; }; + 6BD0E2ACB9C405F9E64B8669 /* SWGJSONRequestSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6C73129BE33A179F9AB0617C /* SWGQueryParamCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */; }; + 6CBB043C1B99FCC1B8421A4D /* SWGMythingApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */; }; + 6D9D7788C3964B9919E6AFDD /* SWGConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */; }; + 6DF752A3DC92FFE0ED8186A6 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = AB17D934B80A74041502DE8A /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6E80282ECD2D0EBFB5E4485E /* SWGJSONRequestSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6F0C994E24BAEFAD916AEE27 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 500D44D0509C0C1AF7854372 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 6FFFCA02F0848062C1CFC252 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA0D0CF9107E24C8C01A0D9 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7022EA6C3ED11B8F6D17C915 /* AFHTTPRequestOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */; }; + 70355ED21006B4EFC0743514 /* SWGJSONResponseSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 708D1BE5029DFC2517A09EDF /* SWGQueryParamCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */; }; + 709D563EE63BC8B34E719F68 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 719253026530EB29F2CC2B72 /* SWGFile.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBE9B8A684DF642FE20657F /* SWGFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 730C8CD80F56DC3EBE6F3080 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */; }; + 730EB4EC6649BB254DE45A23 /* SWGStoreApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 70728AC343FB456859D11ABE /* SWGStoreApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 733CE4BAA5170020996D3E9B /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = B724F8E376ED2BB7D587FC11 /* SPTCompiledExample.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 738A8A430BD4B242B982A059 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */; }; + 739B0A56F4B979196B38F1D4 /* SwaggerClient.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */; }; + 73FCB4F39FE4BFF9537374F4 /* SWGPet.m in Sources */ = {isa = PBXBuildFile; fileRef = CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */; }; + 7422BD5EBC0E6395F1069F71 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 74844E56902AF11EAD1519DC /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B0D24466BA8FF3A32751D38 /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 75152788B3BE31431561865B /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA0260CE5A8A4FDA879A100 /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76BCBD536C1967E6EE51F9CC /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C2E8EC548FF8BFE0B65660 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7711A28F5EA5D2624146AA49 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E33B17ABCEF8719288A1534 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7891CCC1701105C4924B92D2 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */; }; + 79AC15C3F613CF7B5167E18A /* ISO8601Serialization.h in Headers */ = {isa = PBXBuildFile; fileRef = A3DA13084371612DD395FBFF /* ISO8601Serialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79BFDC0F5D922F559F6386CD /* SWGCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A068863C9D19B0DE204F391 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 4648E753C7D4CD63548A0283 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A0E55F5686D8206F7ED79ED /* SWGUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F927BCFCED60E5C20DD572D /* SWGUser.m */; }; + 7A1C599B7BB230911B38A23D /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = B96C8F13F1DC53A3C3C3D159 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 7A53181A5C51E8CDC82D78FF /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A95722C4365CBB156219D87 /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = E411487CD9041CB730BB08A7 /* Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7AC10CEF01A1AEF811D131B9 /* SWGFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */; }; + 7B97CB82AB5C67E42EF47207 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */; }; + 7BD9D6B0473CD492B25067F0 /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DABBA96CC74EAE33EEE3E7FF /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m */; }; + 7BEDB566042514B74A383C14 /* JSONModel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF9A35933615D555049BE26 /* JSONModel.framework */; }; + 7E3EF033ABA1E93C7F640408 /* AFHTTPRequestOperationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E51B9CF8F060125255C4874 /* JSONModelArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F9EE30367A72427A141D157 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A06A521245DAB5B8F162AB4 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 81292025A1A602AF03CF2786 /* NSArray+JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81412F96CE91EA61DD405215 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36B743CDFC49D282EF4A78C8 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 815056BB9D281AB625FD6525 /* NSArray+JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8178DA76D849E1EEFDD0776E /* ISO8601Serialization.h in Headers */ = {isa = PBXBuildFile; fileRef = A3DA13084371612DD395FBFF /* ISO8601Serialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8182438CCBAC66CC21D7E6D8 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 016434DA280A6337716485B9 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 81E1F4FC8572144FC30559B2 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 82169A131417A9577A927111 /* Pods-SwaggerClient_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE7532915C90B421F28CFBEA /* Pods-SwaggerClient_Tests-dummy.m */; }; + 8288B907B026F63D6B2E4C69 /* SWGUserApi.m in Sources */ = {isa = PBXBuildFile; fileRef = F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */; }; + 83CE0A6BC031E570966864C9 /* SWGOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8371F57BE2022A982DD2C14B /* SWGOrder.m */; }; + 85E4D74887E7F3F3702DBF51 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F068AE92A66AE490BD6DB0 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 875AF30991031E7098EEF798 /* SWGPetApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 60F89DDC8635677F871D034F /* SWGPetApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 891D33D88CE707237FF15709 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */; }; + 8929E57AFE7279D698EF5E7E /* SPTSharedExampleGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EBBCF0DEF5740D6612DEB32 /* SPTSharedExampleGroups.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 895A70C08AF98E52F33DDF0D /* SWGConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */; }; + 8999ED93A69964E58772CB7C /* JSONAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB8A849BA1FECF15636A354 /* JSONAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8A4B71DDA44F239B71659CC9 /* SWGUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8BC9B4305B0DDA301ACA4B07 /* JSONModelError.h in Headers */ = {isa = PBXBuildFile; fileRef = A79E486BE2BAA943C0E47F51 /* JSONModelError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8CDC523BB3A193C0478C2391 /* Pods-SwaggerClient_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 517927BA19A3538D1E30DE50 /* Pods-SwaggerClient_Example-dummy.m */; }; + 8D650C64BE46E68CB35B4FCA /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */; }; + 8E08F266FF1D8F57E4358D4E /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */; }; + 8E1AE5FA00BEAC8AFAA2B331 /* JSONModel+networking.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8E4CC5A8039EE6FE63613C2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 8EFACBBBDC56722661F3744A /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8F5909852A74BE69436DD070 /* JSONKeyMapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 8FB224E07B86F6A688B90F58 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 91E570000BEF9E1B7FE2D62C /* AFHTTPRequestOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */; }; + 935DB5B30E1569E0AD36149E /* ISO8601Serialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 93A71FA7A09487B7309E2291 /* SWGCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */; }; + 9485712460E60EEE88CAC7F1 /* JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + 954A0C871E08071219871B4D /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = D1EADD18818E3526F2CEAF2F /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 96514B6F8D64D7C3330D5338 /* SWGQueryParamCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 97495C06470E679B7CF0A8CA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + 98546537C1F973E3CD32D4FF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 451719F53715B179730D75E0 /* AFSecurityPolicy.m */; }; + 98AB219A7D05251D3F7F7191 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 194518CC1A4D172FAA272DB9 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + 9B34355CD7E63D1895627210 /* JSONHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C4FAEE42252A322B0545CF6 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 57CF3ABF26B43FAE21E50CB8 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E4390595213439458955F20 /* UIAlertView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E55563763BFCCA174A600C5 /* SWGQueryParamCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E825293685B2F9CCB212441 /* Pods-SwaggerClient_Tests-Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D09D890FDA06F27AD79B2C6 /* Pods-SwaggerClient_Tests-Expecta-dummy.m */; }; + 9F71319C3E9362B30F6C3769 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */; }; + A070DA3650B5255D70D2B282 /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = AAA259A98CD2B660A0FDA33A /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A12B12D456D0FB491E19B70F /* Pods-SwaggerClient_Example-ISO8601-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E80A657EA2993398931392 /* Pods-SwaggerClient_Example-ISO8601-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1C1A904CA59FC4D76396175 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9F5723E5940D1269352135 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A206B6446D5E2CABE5586523 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + A325E1719B72BDDEE0616DBF /* SWGTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C14451912091A7274AEF9E1 /* SWGTag.m */; }; + A341B6CFB383324AA067A6C9 /* SWGObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F66BA3CD50A4290602F14B /* SWGObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A39E4CD5AE12216FB1487BE3 /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 280E652D458B4E1ED5BFFA77 /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A52C6D47F0316E0850BDB9CC /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = F0A24157B4BA2D2E1B9CEC18 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A53061A46842AA54DAB54023 /* JSONAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = D906469EA22490516C576F34 /* JSONAPI.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + A5A2B75AEEE5F1471ABF7C51 /* SWGFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */; }; + A615771FAD89E35239D87FF6 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6A04E6DCA180CCB638EB663 /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7B0C16EEB7FFA25C25370D4 /* JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 67A228DF9CD60524B576E388 /* JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8C07412B7F1F58F95027E4B /* SPTExampleGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 449238F2067778F11FC67BBC /* SPTExampleGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8CAB0E9B1CF76911B13ECC0 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D3138EAAE50116ADEF292E /* SPTExcludeGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9099FF7B971FB25BE12CE34 /* SWGMythingApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A94CB6D49585BD2377348821 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 432957C61F24704F540BB578 /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AA260D742DDFFB983A47540C /* SWGUserApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 20402A2505F9199C8CF42E06 /* SWGUserApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AA31F2218DEBC427DA074A6F /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = F0761D1A1069513A78630ABA /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + AAD24B3301CA60B702236DAB /* SWGJSONResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */; }; + AB5C9A3A56CEBAB1AD349A33 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ABB477C54AD69931FDAD534A /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 73B6962701256AF21226A51C /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + ACD3422A4497EA29AB24A72E /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AD94F44BEC5659D1BB34DE23 /* SPTExampleGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C668D785979FC25F7808753 /* SPTExampleGroup.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + AD992DDF15A32176B225DE7D /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C0B26C4BD3B468DF0C9526 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF5EA9CC989D2DD5BBC37E6D /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = E4A1DE5345BA9BBB37D745D1 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + AF7B682321A34F5E0DC249CC /* Pods-SwaggerClient_Tests-ISO8601-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 32DE028703A8C4BC2B9C2A2E /* Pods-SwaggerClient_Tests-ISO8601-dummy.m */; }; + AFFF90368E8F9EF5886C30B2 /* JSONValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B13D156D3F01638F8D3EC102 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B1E4B9C9C788060FA05197D8 /* JSONModelClassProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2A892164C701F606A01393A /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */; }; + B423A4F4EC57E34D565252DC /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */; }; + B4795C0A8815C3A0950EC1B3 /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = BD363A11A16DE391FD666E56 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B4D66A60456836C75E244CA1 /* SWGTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8892A67E4E1629B3650958 /* SWGTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B540F67558AA7A144899EBBF /* SPTSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159DE92BFB696E3EC0DC17B /* SPTSpec.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + B577C09AD427A9630FC2762A /* Pods-SwaggerClient_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FE46EF9D2B28F3F175C4215 /* Pods-SwaggerClient_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B69AF6583C37F97E73A631A4 /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = EC4578A72A4B005F7E2196EA /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B6DAEBF843B8DC1DC8E3906F /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BAEA77B327844A9285B8670 /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B7BFFB369FFC08F30144EB53 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */; }; + B85B153A4B53D16F245FEEAA /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */; }; + B89BC26D73FFE70F2F4BD7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + B977CEEA0F438EDF96140C66 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B9BA486CAAEB77195346C34B /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B9D2A404F1B49622441EBB16 /* JSONAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB8A849BA1FECF15636A354 /* JSONAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B9E4C068BE8563261382F6A0 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD3DBE17D08805BA594C4CDF /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E7B7B2C24266DB4297E958E /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BEA321219CA5B6A96477031D /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F320CEEEEE2836A8B1AAEC /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BEA7FF33522B439AEB60C281 /* JSONKeyMapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BEF99C501593E888D27462DD /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 243595BDFC8D37871876A044 /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + BF2DDC96324CFDF7C303F050 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF726F674241490B1012F41D /* NSDate+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF9AD2E3F2BBB0F23C5FE05B /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 6366F5C2F45F2C79A805911E /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C05D4C12A5819F4C96283EF0 /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F9946AF7B3E53FAFF57A19 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C070594757FF88D238C2FA87 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */; }; + C1664322571F72BEDD57250C /* JSONModelError.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C249634F44F546BBF6CA700F /* JSONModelArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + C2BE2DCF5392F363C60A210B /* XCTestCase+Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA55A6DD0BDCEBCF8BE2FE9 /* XCTestCase+Specta.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C330AFEF3709DC609D18FE78 /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C167E46BFFD6509CFE494 /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C3FA7E81592D8627DA34C669 /* JSONModel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF9A35933615D555049BE26 /* JSONModel.framework */; }; + C59AA43C300E2D6018686D5C /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = BE62E232E84FDF3AD5CDFE65 /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + C63074C841FEFC17E3AB5C3C /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D6BA58FCD62CCE952D967CE /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m */; }; + C6A0423CD8DBA07A30B98042 /* SWGPet.h in Headers */ = {isa = PBXBuildFile; fileRef = AAAB9238C7E7CC348DE482B8 /* SWGPet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6D59104CEC4FAE304DA4D55 /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0164E9ECEC859315F7EC9249 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C84ED29D92C2DAF709D42519 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9105E9B2229104E74953563 /* SWGJSONResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */; }; + C9FEB3D995D761E335AD7564 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B46CB026DDB6706DAEDC86A3 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA78D205AB1EFA5BFB5434FD /* JSONKeyMapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CADBFFBB5024C1F7431B4161 /* SPTGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 36943083BECC0BE8A4A6AD94 /* SPTGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CB9C5D875643FBC019875C60 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */; }; + CC1FBF181AEECAD23864A42C /* Pods-SwaggerClient_Tests-Specta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BED74BBB7E4563223284FC51 /* Pods-SwaggerClient_Tests-Specta-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CCF74087CAB105D4DED21E9F /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CDB76BF92E8780DFD831170E /* SWGJSONRequestSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */; }; + CE1B2D9D23D09D355C7E07FE /* JSONModelClassProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 91DC534FB82569495452D79F /* JSONModelClassProperty.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CECFB59C6E20B976193137D0 /* NSArray+JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + CEF36F80E21F2D0234B5566A /* AFHTTPRequestOperationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0230521FC1F6FF0AEB25B02 /* SWGObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 93127E06DFE790D76898A78D /* SWGObject.m */; }; + D089D5A08CF97B04969C23E4 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE9F929357775BD67A93711 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D0E021101C4457887F895E49 /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */; }; + D1750EAC8D3DBC472DDCBC9D /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A9A720E390B6BA9880D92DC /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D19EF86C3583D1B62A679E36 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */; }; + D25A60002AC50691F13E03C0 /* JSONModelLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2CB47DBB432B6BAA9C44EF6 /* SWGMythingApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */; }; + D2D9A6640DB83E9E9430A97C /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = D733A96361018321D71A1E73 /* SPTSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D39D39947572DE9798E3D88B /* SWGMyresult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D3E33F4136D0AA075C4C820F /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */; }; + D46CB83D2BFA0851BC5D2061 /* SWGApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */; }; + D5C153FA62530DF6C2F0273C /* SWGPet.h in Headers */ = {isa = PBXBuildFile; fileRef = AAAB9238C7E7CC348DE482B8 /* SWGPet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D64936F4E16C7DDC5CA36786 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D71C1CD54E1E0230C16A87F8 /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = 25F1293C6D78FDE07FC3136A /* XCTestCase+Specta.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + D7239B7051E31F27F8BEE765 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CA44B02B7A9B384AE7EED6 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D85897B024FC6FAD6069F022 /* SPTCallSite.h in Headers */ = {isa = PBXBuildFile; fileRef = E24BE6178D00F87643E8AD96 /* SPTCallSite.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D8D2BF368F6CE862A6B7AA97 /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB73FE1B697EC492FCEBEFE /* SPTExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D973A75729B33D7DBA665F94 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */; }; + D9854E458AA2FBD78985A511 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */; }; + D9DFA62AC86F87A197C5560C /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 98BBCF4F94F7882D6CA276C0 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DAA1007C7857D3BE39826F91 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + DB63C05804976AC7CDF74F4D /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = 099BDB9A4FE1FF80F9B1BA61 /* SPTSharedExampleGroups.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + DB8F6259B5D23FA526D5B6C7 /* Pods-SwaggerClient_Example-ISO8601-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C064E590FE5779DB6C05E82 /* Pods-SwaggerClient_Example-ISO8601-dummy.m */; }; + DBFB445AB39C5D946A2CC276 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */; }; + DC1A23AD09FFE1D162CF752C /* SWGOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DF8E177952FDF501C1A4A2E4 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */; }; + DFA8365B324D8F74B8235B48 /* JSONHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E160A83AA4A88114EE2409BE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + E3222F4CDFB84AFDF6739CEF /* SWGJSONRequestSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */; }; + E33D4EA8D951458DF8A05254 /* SWGUserApi.m in Sources */ = {isa = PBXBuildFile; fileRef = F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */; }; + E3C9C7EAD8A7690BE18CF43E /* UIAlertView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4097E7ABE3BFD9AE7B2D446 /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */; }; + E4FCC6CE42AC64620298B912 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCD887355DA3622403C587F3 /* Security.framework */; }; + E500C5512FD6F2D51E9AC635 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 451719F53715B179730D75E0 /* AFSecurityPolicy.m */; }; + E6389419244A7DC4C9C57934 /* SWGTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8892A67E4E1629B3650958 /* SWGTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E6E0B4AD1CC2AFC6E80DAA67 /* JSONModel+networking.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + E7933B64815CD27F8F7C3540 /* SWGJSONResponseSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECBEE6653FEB368DF6EA2147 /* SwaggerClient.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F248532F283AF83DB6271DCE /* SwaggerClient.bundle */; }; + ECE599AE763A2C388157D2B1 /* JSONValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED132F7E6A664272D3FF3B53 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 79FF652424AF75986DC0A953 /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ED3C42A61083D6D95AA107AB /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE81625A23AF0564339C887C /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */; }; + EEB0BA1DC32939D00C3ED294 /* SPTExample.m in Sources */ = {isa = PBXBuildFile; fileRef = B7116485C5A4C1298D908727 /* SPTExample.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + EEC1D0AFE3CE69C65F59BED8 /* SPTTestSuite.h in Headers */ = {isa = PBXBuildFile; fileRef = 62B20D2725F0504EA461937E /* SPTTestSuite.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EEC3C62F793F896CF5B0B8BF /* SWGStoreApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */; }; + EF7C4A59595F11105D6C2A65 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; + F00CD0B1A1A5D41A7C0A8A0E /* ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C151F4D754285116B7A228 /* ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F0E3847056B72A4ACC11650F /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F16001F37542754EC6BB8DD2 /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A8D06FD0B3DCB85273BFE2 /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F17018B643C6833F68258DE9 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */; }; + F26654D315EA6DCA41834C01 /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 579BC043B4015B34EAEEFF93 /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + F2D019933E1752072C3226C6 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */; }; + F34C32CDBC26097517DD947F /* SWGCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F55122FA09A1A3BBD62E54B3 /* SWGUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F55E8B76B45DE49306387219 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = F54CBCBF08E4D2FEE8EC979F /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F67A3EE5DE902A585BDEDC01 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA8DB7BB0A1DDD958C68683 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F9B487686092CAF6F341F0B4 /* ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C151F4D754285116B7A228 /* ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FA15E8CCF2EE07E232BE3171 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */; }; + FB1C86BB963AE459A2F77925 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D261465E6EF11B9AF904C67 /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDACF057168267FCDAB72DF1 /* SWGUserApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 20402A2505F9199C8CF42E06 /* SWGUserApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDB1AA841E7569F2CAD1A487 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D250ADE57B52C791B82C52 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FE0A66CD1EBA3E418F2C1D00 /* NSDate+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; + FE2033DD10C73DF0B8267A2C /* SWGPet.m in Sources */ = {isa = PBXBuildFile; fileRef = CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */; }; + FE705743662892EB52ADB7B9 /* SWGTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C14451912091A7274AEF9E1 /* SWGTag.m */; }; + FEC1250CB58D27B11D7B6D82 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6580B23616BF5911DED5F5 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FEE8E2294C46AE7CE464264D /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3A87165046AB537E76CFA0 /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Public, ); }; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 2F83CC8868CCC58549D23B75 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = BBD665C31D4B21357533473D; + remoteInfo = "Pods-SwaggerClient_Tests-JSONModel"; + }; + 35DEFA078ABE7B02680F7475 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 58684BF8E23BF0837CADD868; + remoteInfo = "Pods-SwaggerClient_Example-AFNetworking"; + }; + 3E167B43249502B18F5351AC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = C215F478D13D9D22D8E1EF48; + remoteInfo = "Pods-SwaggerClient_Tests-Expecta"; + }; + 65A8E4E62B9816273B466AA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = BBD665C31D4B21357533473D; + remoteInfo = "Pods-SwaggerClient_Tests-JSONModel"; + }; + 6CFF13F0D8A307887FE05E67 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = AF87B186D8CCE5424F3A8D43; + remoteInfo = "Pods-SwaggerClient_Tests-ISO8601"; + }; + 888799CCFD2AB4A92A9B4A4D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5D6776B420CF321A265D866F; + remoteInfo = "Pods-SwaggerClient_Tests-Specta"; + }; + 9B368F4D9DF66B5E965986C6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 9A7195F471543DF0C0847DF5; + remoteInfo = "Pods-SwaggerClient_Tests-SwaggerClient"; + }; + A162F62BEE1492CF1BB6A2BE /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = AF87B186D8CCE5424F3A8D43; + remoteInfo = "Pods-SwaggerClient_Tests-ISO8601"; + }; + A9E619AFCC2FBD32EE05B6C2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 7DCA9F990FC46BE1EFE6E984; + remoteInfo = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; + }; + B3F82AC3BCEB16AD74AA3091 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = F41FA180E243133D32149CC3; + remoteInfo = "Pods-SwaggerClient_Example-SwaggerClient"; + }; + BB29CEBC89A3E750582C41F4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = DDC8A358588D2A3B692812B1; + remoteInfo = "Pods-SwaggerClient_Tests-AFNetworking"; + }; + BDC82344596574309B6BB2A3 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = DDC8A358588D2A3B692812B1; + remoteInfo = "Pods-SwaggerClient_Tests-AFNetworking"; + }; + C683E7A210CF97EA075DB68C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4B19C784C3E2E4F174682EE7; + remoteInfo = "Pods-SwaggerClient_Example-JSONModel"; + }; + E244661BA566E81A5E0825C1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0302FEB4C8D5554EBF417C18; + remoteInfo = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; + }; + EF00F23BFB412FB1141D43C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC89492AC5A2DC4B6E6BC599; + remoteInfo = "Pods-SwaggerClient_Example-ISO8601"; + }; + F2FE102F982CD5E7539DA87C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC89492AC5A2DC4B6E6BC599; + remoteInfo = "Pods-SwaggerClient_Example-ISO8601"; + }; + F8D1ACE4B4B9D16C36898171 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 58684BF8E23BF0837CADD868; + remoteInfo = "Pods-SwaggerClient_Example-AFNetworking"; + }; + F965A0DD3DF9CB139F6943BB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4B19C784C3E2E4F174682EE7; + remoteInfo = "Pods-SwaggerClient_Example-JSONModel"; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 016434DA280A6337716485B9 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; + 0164E9ECEC859315F7EC9249 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; + 01FC7B913F4D0D8ABA61D37F /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-JSONModel-umbrella.h"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h"; sourceTree = ""; }; + 02BFF49A4C0CD62A7A017609 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-JSONModel-umbrella.h"; sourceTree = ""; }; + 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + 034BC9278FF5FAA0BF7EDE54 /* Pods-SwaggerClient_Tests-Specta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Specta-prefix.pch"; sourceTree = ""; }; + 05E2B2609E8745F0FFA56EAC /* Pods-SwaggerClient_Tests-Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Expecta.xcconfig"; sourceTree = ""; }; + 08C151F4D754285116B7A228 /* ISO8601.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601.h; path = ISO8601/ISO8601.h; sourceTree = ""; }; + 099BDB9A4FE1FF80F9B1BA61 /* SPTSharedExampleGroups.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSharedExampleGroups.m; path = Specta/Specta/SPTSharedExampleGroups.m; sourceTree = ""; }; + 0A9A720E390B6BA9880D92DC /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; + 0AABA64768BF1C67079AC14C /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 0AFADA1570737157E9617EFA /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; + 0B0D24466BA8FF3A32751D38 /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; + 0C7C70764F7DC898F9CD47C9 /* Pods-SwaggerClient_Tests-AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-AFNetworking.modulemap"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap"; sourceTree = ""; }; + 0E33B17ABCEF8719288A1534 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; + 0F8CC8C24B86136D1949316C /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; + 10DFD3D78F972F78D71BB6E7 /* Pods-SwaggerClient_Tests-ISO8601-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; sourceTree = ""; }; + 1186977B42F8F3FC21D1A7B9 /* Pods-SwaggerClient_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example.release.xcconfig"; sourceTree = ""; }; + 1284C207920C60CCFF057D06 /* Pods-SwaggerClient_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example.debug.xcconfig"; sourceTree = ""; }; + 145BFF1E93D758B233F0AE9E /* Pods-SwaggerClient_Example-JSONModel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-JSONModel.modulemap"; sourceTree = ""; }; + 1527CA2833B390D6002D3965 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; + 16CF586DFE9835700F2EDA9E /* Pods-SwaggerClient_Tests-JSONModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-JSONModel-dummy.m"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m"; sourceTree = ""; }; + 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertView+AFNetworking.h"; path = "UIKit+AFNetworking/UIAlertView+AFNetworking.h"; sourceTree = ""; }; + 18A8D06FD0B3DCB85273BFE2 /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; + 194518CC1A4D172FAA272DB9 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; + 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig"; sourceTree = ""; }; + 1A3143CF53A3ECFD840FEBF5 /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = ""; }; + 1C064E590FE5779DB6C05E82 /* Pods-SwaggerClient_Example-ISO8601-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-ISO8601-dummy.m"; sourceTree = ""; }; + 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; + 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + 1D6580B23616BF5911DED5F5 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-SwaggerClient-umbrella.h"; sourceTree = ""; }; + 1E1126602057323308CBEB1C /* SpectaDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaDSL.h; path = Specta/Specta/SpectaDSL.h; sourceTree = ""; }; + 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGConfiguration.m; sourceTree = ""; }; + 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAlertView+AFNetworking.m"; path = "UIKit+AFNetworking/UIAlertView+AFNetworking.m"; sourceTree = ""; }; + 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; + 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGUser.h; sourceTree = ""; }; + 1FE46EF9D2B28F3F175C4215 /* Pods-SwaggerClient_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-umbrella.h"; sourceTree = ""; }; + 20402A2505F9199C8CF42E06 /* SWGUserApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGUserApi.h; sourceTree = ""; }; + 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + 243595BDFC8D37871876A044 /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; + 253D83DD07A18825650BBBE9 /* Pods-SwaggerClient_Example-AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-AFNetworking-prefix.pch"; sourceTree = ""; }; + 25F1293C6D78FDE07FC3136A /* XCTestCase+Specta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase+Specta.m"; path = "Specta/Specta/XCTestCase+Specta.m"; sourceTree = ""; }; + 26140D01ECBBE302403277E7 /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; + 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-ISO8601-Private.xcconfig"; sourceTree = ""; }; + 280E652D458B4E1ED5BFFA77 /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; + 28C0B26C4BD3B468DF0C9526 /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; + 28CEAD6EAF4AC73948D28F2B /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; + 2B34AB4D5CC64918834A0AC0 /* Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; sourceTree = ""; }; + 2B84527440CA189207D786E6 /* JSONModel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONKeyMapper.h; path = JSONModel/JSONModelTransformations/JSONKeyMapper.h; sourceTree = ""; }; + 2C14451912091A7274AEF9E1 /* SWGTag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGTag.m; sourceTree = ""; }; + 2C4946DD8004B10DBD3BEBE0 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; + 2D6BA58FCD62CCE952D967CE /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-AFNetworking-dummy.m"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m"; sourceTree = ""; }; + 2EBBCF0DEF5740D6612DEB32 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; + 3159DE92BFB696E3EC0DC17B /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; + 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig"; sourceTree = ""; }; + 32DE028703A8C4BC2B9C2A2E /* Pods-SwaggerClient_Tests-ISO8601-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-ISO8601-dummy.m"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m"; sourceTree = ""; }; + 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGJSONRequestSerializer.m; sourceTree = ""; }; + 3348A38E5534FDD63284711E /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; + 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGCategory.m; sourceTree = ""; }; + 36943083BECC0BE8A4A6AD94 /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; + 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 36B743CDFC49D282EF4A78C8 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-ISO8601-umbrella.h"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h"; sourceTree = ""; }; + 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONKeyMapper.m; path = JSONModel/JSONModelTransformations/JSONKeyMapper.m; sourceTree = ""; }; + 381AE18EE5432808A1136286 /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; + 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGStoreApi.m; sourceTree = ""; }; + 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelLib.h; path = JSONModel/JSONModelLib.h; sourceTree = ""; }; + 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; + 3FA82A66FE087D46B5F479DF /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; + 4124065010B426E1D6A20E50 /* Pods-SwaggerClient_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Tests-frameworks.sh"; sourceTree = ""; }; + 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+ISO8601.m"; path = "ISO8601/NSDate+ISO8601.m"; sourceTree = ""; }; + 432957C61F24704F540BB578 /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; + 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + 449238F2067778F11FC67BBC /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; + 451719F53715B179730D75E0 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + 4648E753C7D4CD63548A0283 /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; + 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 47C2E8EC548FF8BFE0B65660 /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; + 4A51ED87332338CA1F8D657A /* Pods-SwaggerClient_Tests-SwaggerClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-SwaggerClient.xcconfig"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig"; sourceTree = ""; }; + 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig"; sourceTree = ""; }; + 4DA0260CE5A8A4FDA879A100 /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; + 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + 4E270100DEFDE600FBCC15C8 /* Pods-SwaggerClient_Tests-AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; sourceTree = ""; }; + 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGQueryParamCollection.m; sourceTree = ""; }; + 4EC94106B0E5549033F7BA15 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4F282A1F87E3A1263AB11A47 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4F4671535FDE630BAB38EBFC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 4FE8797D427FFD0C0A7BEF85 /* Pods-SwaggerClient_Example-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-environment.h"; sourceTree = ""; }; + 500D44D0509C0C1AF7854372 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; + 517927BA19A3538D1E30DE50 /* Pods-SwaggerClient_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-dummy.m"; sourceTree = ""; }; + 52CA44B02B7A9B384AE7EED6 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; + 5617AFD109F104A6504B905A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 579BC043B4015B34EAEEFF93 /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; + 57CF3ABF26B43FAE21E50CB8 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; + 57E80A657EA2993398931392 /* Pods-SwaggerClient_Example-ISO8601-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-ISO8601-umbrella.h"; sourceTree = ""; }; + 58400894FEC50AFA461EA435 /* Pods-SwaggerClient_Example-SwaggerClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-SwaggerClient.modulemap"; sourceTree = ""; }; + 5853898EA95C369F30529C9B /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; + 596F890BB01AA3448640038C /* Pods-SwaggerClient_Example-AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-AFNetworking.xcconfig"; sourceTree = ""; }; + 598BF1FC07A3867AB98B3140 /* Pods-SwaggerClient_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwaggerClient_Tests-acknowledgements.plist"; sourceTree = ""; }; + 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + 59FC7EC3572287684B292D50 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 5ACAB4F433D4781F70935C78 /* Pods-SwaggerClient_Tests-JSONModel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-JSONModel.modulemap"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap"; sourceTree = ""; }; + 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGMyresult.m; sourceTree = ""; }; + 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGMythingApi.m; sourceTree = ""; }; + 5ED368FA80CE15CF073E7E4C /* SPTCallSite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCallSite.m; path = Specta/Specta/SPTCallSite.m; sourceTree = ""; }; + 5F5A1F2EC2AFCCB056F8E5F8 /* Pods-SwaggerClient_Tests-SwaggerClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; sourceTree = ""; }; + 60DECAD526F277F125AC6CC8 /* Pods-SwaggerClient_Tests-Specta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Tests-Specta-dummy.m"; sourceTree = ""; }; + 60F89DDC8635677F871D034F /* SWGPetApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGPetApi.h; sourceTree = ""; }; + 61ECE30CFAEE60A56370FFC4 /* Pods-SwaggerClient_Example-AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-AFNetworking.modulemap"; sourceTree = ""; }; + 62B20D2725F0504EA461937E /* SPTTestSuite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTTestSuite.h; path = Specta/Specta/SPTTestSuite.h; sourceTree = ""; }; + 62BC316D842CEB918EAC2F85 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 6366F5C2F45F2C79A805911E /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; + 63A4708CCC1EF6AB1122AA0D /* ISO8601.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ISO8601.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModelArray.m; path = JSONModel/JSONModel/JSONModelArray.m; sourceTree = ""; }; + 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; + 65B8DED1B65DC5B191ED3657 /* Pods-SwaggerClient_Tests-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-environment.h"; sourceTree = ""; }; + 66978135221A5645E30BE2F1 /* Pods-SwaggerClient_Example-ISO8601.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-ISO8601.modulemap"; sourceTree = ""; }; + 671A488088E85A1E9E82C2D4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; + 67A228DF9CD60524B576E388 /* JSONModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModel.h; path = JSONModel/JSONModel/JSONModel.h; sourceTree = ""; }; + 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelArray.h; path = JSONModel/JSONModel/JSONModelArray.h; sourceTree = ""; }; + 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModelError.m; path = JSONModel/JSONModel/JSONModelError.m; sourceTree = ""; }; + 6C668D785979FC25F7808753 /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; + 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + 6E2BDA79AAC1CC237F8E6194 /* Pods-SwaggerClient_Tests-Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Expecta-prefix.pch"; sourceTree = ""; }; + 70728AC343FB456859D11ABE /* SWGStoreApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGStoreApi.h; sourceTree = ""; }; + 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + 71301AA0D0508AC69416EEFD /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; + 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGMythingApi.h; sourceTree = ""; }; + 722C967FF2EE63957185640A /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; + 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGJSONResponseSerializer.h; sourceTree = ""; }; + 734153C8D7D6EE89E1CBF7A4 /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; + 73B6962701256AF21226A51C /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; + 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+ISO8601.h"; path = "ISO8601/NSDate+ISO8601.h"; sourceTree = ""; }; + 76F320CEEEEE2836A8B1AAEC /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; + 77F99C66542F4EEBABCA1BD3 /* Specta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Specta.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 78DEE88FE58FD1EB9ED82644 /* SPTCompiledExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCompiledExample.h; path = Specta/Specta/SPTCompiledExample.h; sourceTree = ""; }; + 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601Serialization.m; path = ISO8601/ISO8601Serialization.m; sourceTree = ""; }; + 79F66BA3CD50A4290602F14B /* SWGObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGObject.h; sourceTree = ""; }; + 79FF652424AF75986DC0A953 /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; + 7A0294B9DB6D28C931109F04 /* Pods-SwaggerClient_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Example-frameworks.sh"; sourceTree = ""; }; + 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig"; sourceTree = ""; }; + 7BAEA77B327844A9285B8670 /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-AFNetworking-umbrella.h"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h"; sourceTree = ""; }; + 7D09D890FDA06F27AD79B2C6 /* Pods-SwaggerClient_Tests-Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Tests-Expecta-dummy.m"; sourceTree = ""; }; + 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperationManager.m; path = AFNetworking/AFHTTPRequestOperationManager.m; sourceTree = ""; }; + 7E1FD49EEBB1A08378F9ECA4 /* Pods-SwaggerClient_Tests-ISO8601.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-ISO8601.modulemap"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap"; sourceTree = ""; }; + 7F5E3C9D4DC0F9D156F215D9 /* Pods-SwaggerClient_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Example-resources.sh"; sourceTree = ""; }; + 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "JSONModel+networking.m"; path = "JSONModel/JSONModelNetworking/JSONModel+networking.m"; sourceTree = ""; }; + 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGMyresult.h; sourceTree = ""; }; + 8371F57BE2022A982DD2C14B /* SWGOrder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGOrder.m; sourceTree = ""; }; + 83CAE1AE966882439F8A96EF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-ISO8601/Info.plist"; sourceTree = ""; }; + 859359D6C9F1E75F8FD12FC7 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; + 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClient.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONHTTPClient.h; path = JSONModel/JSONModelNetworking/JSONHTTPClient.h; sourceTree = ""; }; + 88AAAF1815056252470FC2A6 /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; + 8A8892A67E4E1629B3650958 /* SWGTag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGTag.h; sourceTree = ""; }; + 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONValueTransformer.h; path = JSONModel/JSONModelTransformations/JSONValueTransformer.h; sourceTree = ""; }; + 8C9F5723E5940D1269352135 /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; + 8CA55A6DD0BDCEBCF8BE2FE9 /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; + 8DB4BB24028928E6E7BE64E9 /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; + 8E7B7B2C24266DB4297E958E /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; + 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONValueTransformer.m; path = JSONModel/JSONModelTransformations/JSONValueTransformer.m; sourceTree = ""; }; + 91DC534FB82569495452D79F /* JSONModelClassProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModelClassProperty.m; path = JSONModel/JSONModel/JSONModelClassProperty.m; sourceTree = ""; }; + 92F9946AF7B3E53FAFF57A19 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; + 93127E06DFE790D76898A78D /* SWGObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGObject.m; sourceTree = ""; }; + 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; + 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; + 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGPetApi.m; sourceTree = ""; }; + 96B0499DE5856DB93FACE9F3 /* Pods-SwaggerClient_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwaggerClient_Example-acknowledgements.markdown"; sourceTree = ""; }; + 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelClassProperty.h; path = JSONModel/JSONModel/JSONModelClassProperty.h; sourceTree = ""; }; + 9771D508607ABB6410B0BF9F /* Pods-SwaggerClient_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests.debug.xcconfig"; sourceTree = ""; }; + 9825D5812F3C1916DEF34E99 /* Pods-SwaggerClient_Example-SwaggerClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-SwaggerClient.xcconfig"; sourceTree = ""; }; + 98BBCF4F94F7882D6CA276C0 /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; + 99A4A4B3247D70FBA6024D8F /* Pods-SwaggerClient_Example-JSONModel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-JSONModel.xcconfig"; sourceTree = ""; }; + 9A06A521245DAB5B8F162AB4 /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; + 9A26EF949942E5B501DDD747 /* SpectaUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaUtility.h; path = Specta/Specta/SpectaUtility.h; sourceTree = ""; }; + 9B3A87165046AB537E76CFA0 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; + 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONHTTPClient.m; path = JSONModel/JSONModelNetworking/JSONHTTPClient.m; sourceTree = ""; }; + 9D261465E6EF11B9AF904C67 /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; + 9E2261DFC4C37167696E0BF2 /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; + 9F927BCFCED60E5C20DD572D /* SWGUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGUser.m; sourceTree = ""; }; + A038A42B885D252D1A20C7CB /* SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A1907A8F78BBCB2EF8450B44 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + A3345F9CAA9252356B6C083F /* Expecta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Expecta.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig"; sourceTree = ""; }; + A3D3304828283C9BAC71B216 /* Pods-SwaggerClient_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-umbrella.h"; sourceTree = ""; }; + A3DA13084371612DD395FBFF /* ISO8601Serialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601Serialization.h; path = ISO8601/ISO8601Serialization.h; sourceTree = ""; }; + A4077B653CCC6F44DDA78122 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-AFNetworking-dummy.m"; sourceTree = ""; }; + A41CD6CC31666FBF14F37933 /* SpectaDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaDSL.m; path = Specta/Specta/SpectaDSL.m; sourceTree = ""; }; + A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGApiClient.m; sourceTree = ""; }; + A5484E73AF459C17B7675EC4 /* AFNetworking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + A61413AE7365BA6BD1EC261F /* Pods-SwaggerClient_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests.release.xcconfig"; sourceTree = ""; }; + A79E486BE2BAA943C0E47F51 /* JSONModelError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelError.h; path = JSONModel/JSONModel/JSONModelError.h; sourceTree = ""; }; + A7E147F308CD2889593641F8 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; + A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGQueryParamCollection.h; sourceTree = ""; }; + AA7C167E46BFFD6509CFE494 /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; + AAA259A98CD2B660A0FDA33A /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; + AAAB9238C7E7CC348DE482B8 /* SWGPet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGPet.h; sourceTree = ""; }; + AB17D934B80A74041502DE8A /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; + AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGOrder.h; sourceTree = ""; }; + ACA0D0CF9107E24C8C01A0D9 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; + AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig"; sourceTree = ""; }; + ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; + AE7532915C90B421F28CFBEA /* Pods-SwaggerClient_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Tests-dummy.m"; sourceTree = ""; }; + AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; + B045B33F539B441E32ECB917 /* Pods-SwaggerClient_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwaggerClient_Tests-acknowledgements.markdown"; sourceTree = ""; }; + B13A1E5CC1C83917B3B55837 /* XCTest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTest+Private.h"; path = "Specta/Specta/XCTest+Private.h"; sourceTree = ""; }; + B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGCategory.h; sourceTree = ""; }; + B3F068AE92A66AE490BD6DB0 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; + B46CB026DDB6706DAEDC86A3 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Expecta-umbrella.h"; sourceTree = ""; }; + B6FCB81E5D8E3706D242931A /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; + B7116485C5A4C1298D908727 /* SPTExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExample.m; path = Specta/Specta/SPTExample.m; sourceTree = ""; }; + B724F8E376ED2BB7D587FC11 /* SPTCompiledExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCompiledExample.m; path = Specta/Specta/SPTCompiledExample.m; sourceTree = ""; }; + B7A8D6EF8C60FFFB42E24B88 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; + B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "JSONModel+networking.h"; path = "JSONModel/JSONModelNetworking/JSONModel+networking.h"; sourceTree = ""; }; + B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + B96C8F13F1DC53A3C3C3D159 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; + BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JSONValueTransformer+ISO8601.h"; sourceTree = ""; }; + BD363A11A16DE391FD666E56 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; + BD49D2B002813654F20C0CDB /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h"; sourceTree = ""; }; + BE4CCABD7BD7EF95BEC3C2A4 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; + BE62E232E84FDF3AD5CDFE65 /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; + BED74BBB7E4563223284FC51 /* Pods-SwaggerClient_Tests-Specta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Specta-umbrella.h"; sourceTree = ""; }; + BEE9F929357775BD67A93711 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + C0C70D134185F0A5D884F2D5 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + C22D6D663F367C5CCB922CD4 /* Pods-SwaggerClient_Example-JSONModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-JSONModel-prefix.pch"; sourceTree = ""; }; + C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+JSONModel.m"; path = "JSONModel/JSONModelCategories/NSArray+JSONModel.m"; sourceTree = ""; }; + C6CBAE36F463CD9F45A3BB9D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-AFNetworking/Info.plist"; sourceTree = ""; }; + C74AA1F13C4E128B77A1B84A /* Pods-SwaggerClient_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Tests-resources.sh"; sourceTree = ""; }; + C8F4D12FB56992D696A23287 /* AFNetworking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + CA86DC1E6895A71A26C35162 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Info.plist"; sourceTree = ""; }; + CB2A97414B35780C4D650A65 /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; + CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGPet.m; sourceTree = ""; }; + CB976EFCEBA507C7297EFFAF /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-SwaggerClient-dummy.m"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m"; sourceTree = ""; }; + CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGJSONResponseSerializer.m; sourceTree = ""; }; + CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGFile.m; sourceTree = ""; }; + CC4A7C46C28B8D47187C1C49 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + D15CDBD1F8D1EE6AB0D63F21 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; + D1D250ADE57B52C791B82C52 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; + D1EADD18818E3526F2CEAF2F /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; + D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ISO8601.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + D3FAA1B180CA821CADF13336 /* Pods-SwaggerClient_Tests-Specta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Tests-Specta.modulemap"; sourceTree = ""; }; + D467864632DE57A4A06D82B3 /* Pods-SwaggerClient_Example-ISO8601-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-ISO8601-prefix.pch"; sourceTree = ""; }; + D549F681F30BA76D288122C0 /* Pods-SwaggerClient_Tests-ISO8601.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-ISO8601.xcconfig"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig"; sourceTree = ""; }; + D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-JSONModel-Private.xcconfig"; sourceTree = ""; }; + D56A3A676645CFB5F0B4CA22 /* Pods-SwaggerClient_Example-ISO8601.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-ISO8601.xcconfig"; sourceTree = ""; }; + D6BE8527F16F514E61677DA4 /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; + D733A96361018321D71A1E73 /* SPTSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSpec.h; path = Specta/Specta/SPTSpec.h; sourceTree = ""; }; + D7D3138EAAE50116ADEF292E /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; + D805562F6E114EDE2BFB0CE2 /* Pods-SwaggerClient_Tests-Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Specta.xcconfig"; sourceTree = ""; }; + D906469EA22490516C576F34 /* JSONAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONAPI.m; path = JSONModel/JSONModelNetworking/JSONAPI.m; sourceTree = ""; }; + D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + D9ED0A476E3DBC9422CCF739 /* Pods-SwaggerClient_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example.modulemap"; sourceTree = ""; }; + DABBA96CC74EAE33EEE3E7FF /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-SwaggerClient-dummy.m"; sourceTree = ""; }; + DC4F0DB2C1E5DEACB3919576 /* Pods-SwaggerClient_Example-JSONModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-JSONModel-dummy.m"; sourceTree = ""; }; + DCB73FE1B697EC492FCEBEFE /* SPTExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExample.h; path = Specta/Specta/SPTExample.h; sourceTree = ""; }; + DCD887355DA3622403C587F3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; + DD1BFACA7FDF797B7D807147 /* Pods_SwaggerClient_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DEEABA644193BDD43BE2B01A /* Pods-SwaggerClient_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Tests.modulemap"; sourceTree = ""; }; + DF0444D8EBDF25B4DEFD64FC /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; + DFA9B08443D964E2FB073F56 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; + DFB8A849BA1FECF15636A354 /* JSONAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONAPI.h; path = JSONModel/JSONModelNetworking/JSONAPI.h; sourceTree = ""; }; + E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + E24BE6178D00F87643E8AD96 /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; + E29416FF6B777006D0421AF4 /* Pods-SwaggerClient_Tests-JSONModel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-JSONModel.xcconfig"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig"; sourceTree = ""; }; + E2E6D41C47D3DA237C488316 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; + E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + E3CD0D311E5DE9D9C3E348FD /* Pods-SwaggerClient_Tests-Expecta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Tests-Expecta.modulemap"; sourceTree = ""; }; + E411487CD9041CB730BB08A7 /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; + E4A1DE5345BA9BBB37D745D1 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; + E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGJSONRequestSerializer.h; sourceTree = ""; }; + E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGApiClient.h; sourceTree = ""; }; + E76BF395D393BEDAF0184B7D /* ISO8601.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ISO8601.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E8C64E84ED537CE26A1C4095 /* Pods-SwaggerClient_Example-SwaggerClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-SwaggerClient-prefix.pch"; sourceTree = ""; }; + E90E3F2428A92C2B30B905D1 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-AFNetworking-umbrella.h"; sourceTree = ""; }; + EB31DF2DC5E05E3C6E2B293D /* Pods-SwaggerClient_Tests-AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-AFNetworking.xcconfig"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig"; sourceTree = ""; }; + EBA8DB7BB0A1DDD958C68683 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; + EC4578A72A4B005F7E2196EA /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; + ECD35253AA3403B8C0D8BC91 /* Pods_SwaggerClient_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + ED9CD3349C1E0B89048D7931 /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; + EE176C429702B2F0310644D4 /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Expecta-Private.xcconfig"; sourceTree = ""; }; + EEBE9B8A684DF642FE20657F /* SWGFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGFile.h; sourceTree = ""; }; + EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + EFC6B68E929AF9D5BEFD0302 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-JSONModel/Info.plist"; sourceTree = ""; }; + F0761D1A1069513A78630ABA /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; + F0A24157B4BA2D2E1B9CEC18 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; + F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGUserApi.m; sourceTree = ""; }; + F248532F283AF83DB6271DCE /* SwaggerClient.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClient.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JSONValueTransformer+ISO8601.m"; sourceTree = ""; }; + F2C9039E5EA681AB43C4BBEF /* JSONModel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + F39E23BF273317107095F738 /* Pods-SwaggerClient_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwaggerClient_Example-acknowledgements.plist"; sourceTree = ""; }; + F54CBCBF08E4D2FEE8EC979F /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; + F7E78B22E6B39AF231BCCA2D /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; + F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+JSONModel.h"; path = "JSONModel/JSONModelCategories/NSArray+JSONModel.h"; sourceTree = ""; }; + FAF50F76847FEFE63382A19D /* SWGConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGConfiguration.h; sourceTree = ""; }; + FB09DF7ECF2A36274905F66A /* SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FBF9A35933615D555049BE26 /* JSONModel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperationManager.h; path = AFNetworking/AFHTTPRequestOperationManager.h; sourceTree = ""; }; + FDE30FAA7D4B65680CAF7FCC /* Pods-SwaggerClient_Tests-JSONModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; sourceTree = ""; }; + FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Specta-Private.xcconfig"; sourceTree = ""; }; + FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModel.m; path = JSONModel/JSONModel/JSONModel.m; sourceTree = ""; }; + FF99417D61F3A97DC44475AF /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 22103A8AB4D5FCBA853D48FE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 1398D1EFD62E17C5E8B2D5E4 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4356669AECF52D690D7A0708 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B89BC26D73FFE70F2F4BD7F9 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 499759AF0A623FE7F6AF7041 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4A427963DE553632587A5ADF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D19EF86C3583D1B62A679E36 /* AFNetworking.framework in Frameworks */, + 0769C01E1EDA98F189CA18F7 /* Foundation.framework in Frameworks */, + 153CA93C3D5647FED90150DD /* ISO8601.framework in Frameworks */, + C3FA7E81592D8627DA34C669 /* JSONModel.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 673A0374A2A20CD429AB0773 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 97495C06470E679B7CF0A8CA /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 750E29F817ADCE3AB9B643BA /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 45BE91BE73E2BB75611507CA /* CoreGraphics.framework in Frameworks */, + 4CE48BA8AC5C9F3EF8626447 /* Foundation.framework in Frameworks */, + 386EB7F3BE797D89A650C1C5 /* MobileCoreServices.framework in Frameworks */, + E4FCC6CE42AC64620298B912 /* Security.framework in Frameworks */, + DBFB445AB39C5D946A2CC276 /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8269400275399508F5AC9F90 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EF7C4A59595F11105D6C2A65 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A06FF8C70F93B2C2A8E2C69A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + A206B6446D5E2CABE5586523 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B5794BCD92EB55B5659DC58C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 7422BD5EBC0E6395F1069F71 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C9772FEF5F5BFC03430176FC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 591D3B049A7E8627A5AA65B1 /* CoreGraphics.framework in Frameworks */, + DAA1007C7857D3BE39826F91 /* Foundation.framework in Frameworks */, + 2599FEFF7BBE8634BD34A792 /* MobileCoreServices.framework in Frameworks */, + 4C1848887F607EB5D0D594FB /* Security.framework in Frameworks */, + 730C8CD80F56DC3EBE6F3080 /* SystemConfiguration.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D0FE5D2BE433B354C40D398F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D3E33F4136D0AA075C4C820F /* AFNetworking.framework in Frameworks */, + 1C19F010F92332D333674C99 /* Foundation.framework in Frameworks */, + 430B13D7C84147B12F239C1C /* ISO8601.framework in Frameworks */, + 7BEDB566042514B74A383C14 /* JSONModel.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D1964A51153C3AD7CB69D97B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E160A83AA4A88114EE2409BE /* Foundation.framework in Frameworks */, + 5771BA042DF953FA88D9C2FF /* XCTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D85DD4B01002C97CAEAD5ECD /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FC7F930F7556CE714F53300E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8E4CC5A8039EE6FE63613C2F /* Foundation.framework in Frameworks */, + 5DA26B0C4EB1C7DEB0B44AAF /* XCTest.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 14140A2FCC717D1807A7F7C5 /* Support Files */ = { + isa = PBXGroup; + children = ( + 5617AFD109F104A6504B905A /* Info.plist */, + E3CD0D311E5DE9D9C3E348FD /* Pods-SwaggerClient_Tests-Expecta.modulemap */, + 05E2B2609E8745F0FFA56EAC /* Pods-SwaggerClient_Tests-Expecta.xcconfig */, + EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */, + 7D09D890FDA06F27AD79B2C6 /* Pods-SwaggerClient_Tests-Expecta-dummy.m */, + 6E2BDA79AAC1CC237F8E6194 /* Pods-SwaggerClient_Tests-Expecta-prefix.pch */, + B46CB026DDB6706DAEDC86A3 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Pods-SwaggerClient_Tests-Expecta"; + sourceTree = ""; + }; + 1919E245EDC5D1667FA4AA3A /* Products */ = { + isa = PBXGroup; + children = ( + A5484E73AF459C17B7675EC4 /* AFNetworking.framework */, + C8F4D12FB56992D696A23287 /* AFNetworking.framework */, + A3345F9CAA9252356B6C083F /* Expecta.framework */, + 63A4708CCC1EF6AB1122AA0D /* ISO8601.framework */, + E76BF395D393BEDAF0184B7D /* ISO8601.framework */, + F2C9039E5EA681AB43C4BBEF /* JSONModel.framework */, + 2B84527440CA189207D786E6 /* JSONModel.framework */, + ECD35253AA3403B8C0D8BC91 /* Pods_SwaggerClient_Example.framework */, + DD1BFACA7FDF797B7D807147 /* Pods_SwaggerClient_Tests.framework */, + 77F99C66542F4EEBABCA1BD3 /* Specta.framework */, + F248532F283AF83DB6271DCE /* SwaggerClient.bundle */, + 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */, + A038A42B885D252D1A20C7CB /* SwaggerClient.framework */, + FB09DF7ECF2A36274905F66A /* SwaggerClient.framework */, + ); + name = Products; + sourceTree = ""; + }; + 268C001763B7BFCB78674988 /* Development Pods */ = { + isa = PBXGroup; + children = ( + 4F9034C1AD9F301BF2961504 /* SwaggerClient */, + ); + name = "Development Pods"; + sourceTree = ""; + }; + 287A389EC1CB278D24C36DFA /* Serialization */ = { + isa = PBXGroup; + children = ( + 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */, + 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */, + B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */, + 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */, + ); + name = Serialization; + sourceTree = ""; + }; + 33F545DC4CC555AE4F30E353 /* NSURLConnection */ = { + isa = PBXGroup; + children = ( + 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */, + 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */, + FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */, + 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */, + 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */, + 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */, + ); + name = NSURLConnection; + sourceTree = ""; + }; + 3532914D193EF177F482B953 /* Support Files */ = { + isa = PBXGroup; + children = ( + 59FC7EC3572287684B292D50 /* Info.plist */, + CA86DC1E6895A71A26C35162 /* Info.plist */, + 58400894FEC50AFA461EA435 /* Pods-SwaggerClient_Example-SwaggerClient.modulemap */, + 9825D5812F3C1916DEF34E99 /* Pods-SwaggerClient_Example-SwaggerClient.xcconfig */, + 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */, + DABBA96CC74EAE33EEE3E7FF /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m */, + E8C64E84ED537CE26A1C4095 /* Pods-SwaggerClient_Example-SwaggerClient-prefix.pch */, + 1D6580B23616BF5911DED5F5 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h */, + 5F5A1F2EC2AFCCB056F8E5F8 /* Pods-SwaggerClient_Tests-SwaggerClient.modulemap */, + 4A51ED87332338CA1F8D657A /* Pods-SwaggerClient_Tests-SwaggerClient.xcconfig */, + 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */, + CB976EFCEBA507C7297EFFAF /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m */, + 2B34AB4D5CC64918834A0AC0 /* Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch */, + BD49D2B002813654F20C0CDB /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h */, + ); + name = "Support Files"; + path = "SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient"; + sourceTree = ""; + }; + 3EF1F48832B88DEA7380C789 /* ISO8601 */ = { + isa = PBXGroup; + children = ( + 08C151F4D754285116B7A228 /* ISO8601.h */, + A3DA13084371612DD395FBFF /* ISO8601Serialization.h */, + 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */, + 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */, + 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */, + BD7D77F2AC0E7E1511D454C8 /* Support Files */, + ); + path = ISO8601; + sourceTree = ""; + }; + 4F9034C1AD9F301BF2961504 /* SwaggerClient */ = { + isa = PBXGroup; + children = ( + 3532914D193EF177F482B953 /* Support Files */, + B55257A75677A5B455E28C0E /* SwaggerClient */, + ); + name = SwaggerClient; + path = ../..; + sourceTree = ""; + }; + 58B541E3318B7CA53A88A30E /* UIKit */ = { + isa = PBXGroup; + children = ( + 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */, + 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */, + ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */, + D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */, + 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */, + 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */, + 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */, + D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */, + 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */, + D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */, + 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */, + 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */, + 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */, + EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */, + 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */, + 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */, + 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */, + ); + name = UIKit; + sourceTree = ""; + }; + 63E0886E243C932B9756FBD5 /* Frameworks */ = { + isa = PBXGroup; + children = ( + AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */, + D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */, + FBF9A35933615D555049BE26 /* JSONModel.framework */, + A15D48AEC789CE1196E54C8F /* iOS */, + ); + name = Frameworks; + sourceTree = ""; + }; + 731D3D653792B9E33F0CEAEF /* NSURLSession */ = { + isa = PBXGroup; + children = ( + 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */, + 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */, + BEE9F929357775BD67A93711 /* AFURLSessionManager.h */, + 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */, + ); + name = NSURLSession; + sourceTree = ""; + }; + 86940BB4E50AC8BEB41F258B /* Specta */ = { + isa = PBXGroup; + children = ( + E24BE6178D00F87643E8AD96 /* SPTCallSite.h */, + 5ED368FA80CE15CF073E7E4C /* SPTCallSite.m */, + 78DEE88FE58FD1EB9ED82644 /* SPTCompiledExample.h */, + B724F8E376ED2BB7D587FC11 /* SPTCompiledExample.m */, + DCB73FE1B697EC492FCEBEFE /* SPTExample.h */, + B7116485C5A4C1298D908727 /* SPTExample.m */, + 449238F2067778F11FC67BBC /* SPTExampleGroup.h */, + 6C668D785979FC25F7808753 /* SPTExampleGroup.m */, + D7D3138EAAE50116ADEF292E /* SPTExcludeGlobalBeforeAfterEach.h */, + 36943083BECC0BE8A4A6AD94 /* SPTGlobalBeforeAfterEach.h */, + 2EBBCF0DEF5740D6612DEB32 /* SPTSharedExampleGroups.h */, + 099BDB9A4FE1FF80F9B1BA61 /* SPTSharedExampleGroups.m */, + D733A96361018321D71A1E73 /* SPTSpec.h */, + 3159DE92BFB696E3EC0DC17B /* SPTSpec.m */, + 62B20D2725F0504EA461937E /* SPTTestSuite.h */, + 9E2261DFC4C37167696E0BF2 /* SPTTestSuite.m */, + 381AE18EE5432808A1136286 /* Specta.h */, + 1E1126602057323308CBEB1C /* SpectaDSL.h */, + A41CD6CC31666FBF14F37933 /* SpectaDSL.m */, + 1A3143CF53A3ECFD840FEBF5 /* SpectaTypes.h */, + 9A26EF949942E5B501DDD747 /* SpectaUtility.h */, + D6BE8527F16F514E61677DA4 /* SpectaUtility.m */, + B13A1E5CC1C83917B3B55837 /* XCTest+Private.h */, + 8CA55A6DD0BDCEBCF8BE2FE9 /* XCTestCase+Specta.h */, + 25F1293C6D78FDE07FC3136A /* XCTestCase+Specta.m */, + E4F7D4BF68FBAF97DA094102 /* Support Files */, + ); + path = Specta; + sourceTree = ""; + }; + 95C8D702F42F6124FD6031B8 /* Expecta */ = { + isa = PBXGroup; + children = ( + 0164E9ECEC859315F7EC9249 /* EXPBlockDefinedMatcher.h */, + ACA0D0CF9107E24C8C01A0D9 /* EXPBlockDefinedMatcher.m */, + BE4CCABD7BD7EF95BEC3C2A4 /* EXPDefines.h */, + D1D250ADE57B52C791B82C52 /* EXPDoubleTuple.h */, + 3FA82A66FE087D46B5F479DF /* EXPDoubleTuple.m */, + 722C967FF2EE63957185640A /* EXPExpect.h */, + E2E6D41C47D3DA237C488316 /* EXPExpect.m */, + 4648E753C7D4CD63548A0283 /* EXPFloatTuple.h */, + 734153C8D7D6EE89E1CBF7A4 /* EXPFloatTuple.m */, + 71301AA0D0508AC69416EEFD /* EXPMatcher.h */, + EBA8DB7BB0A1DDD958C68683 /* EXPMatcherHelpers.h */, + B96C8F13F1DC53A3C3C3D159 /* EXPMatcherHelpers.m */, + 28C0B26C4BD3B468DF0C9526 /* EXPMatchers.h */, + 76F320CEEEEE2836A8B1AAEC /* EXPMatchers+beCloseTo.h */, + 0AFADA1570737157E9617EFA /* EXPMatchers+beCloseTo.m */, + 9B3A87165046AB537E76CFA0 /* EXPMatchers+beFalsy.h */, + 500D44D0509C0C1AF7854372 /* EXPMatchers+beFalsy.m */, + D15CDBD1F8D1EE6AB0D63F21 /* EXPMatchers+beGreaterThan.h */, + 579BC043B4015B34EAEEFF93 /* EXPMatchers+beGreaterThan.m */, + 4DA0260CE5A8A4FDA879A100 /* EXPMatchers+beGreaterThanOrEqualTo.h */, + 5853898EA95C369F30529C9B /* EXPMatchers+beGreaterThanOrEqualTo.m */, + 280E652D458B4E1ED5BFFA77 /* EXPMatchers+beIdenticalTo.h */, + B7A8D6EF8C60FFFB42E24B88 /* EXPMatchers+beIdenticalTo.m */, + 98BBCF4F94F7882D6CA276C0 /* EXPMatchers+beInTheRangeOf.h */, + DF0444D8EBDF25B4DEFD64FC /* EXPMatchers+beInTheRangeOf.m */, + 79FF652424AF75986DC0A953 /* EXPMatchers+beInstanceOf.h */, + 016434DA280A6337716485B9 /* EXPMatchers+beInstanceOf.m */, + AA7C167E46BFFD6509CFE494 /* EXPMatchers+beKindOf.h */, + 6366F5C2F45F2C79A805911E /* EXPMatchers+beKindOf.m */, + B6FCB81E5D8E3706D242931A /* EXPMatchers+beLessThan.h */, + B3F068AE92A66AE490BD6DB0 /* EXPMatchers+beLessThan.m */, + FF99417D61F3A97DC44475AF /* EXPMatchers+beLessThanOrEqualTo.h */, + 3348A38E5534FDD63284711E /* EXPMatchers+beLessThanOrEqualTo.m */, + F54CBCBF08E4D2FEE8EC979F /* EXPMatchers+beNil.h */, + AB17D934B80A74041502DE8A /* EXPMatchers+beNil.m */, + 0A9A720E390B6BA9880D92DC /* EXPMatchers+beSubclassOf.h */, + 1527CA2833B390D6002D3965 /* EXPMatchers+beSubclassOf.m */, + 28CEAD6EAF4AC73948D28F2B /* EXPMatchers+beSupersetOf.h */, + 194518CC1A4D172FAA272DB9 /* EXPMatchers+beSupersetOf.m */, + 52CA44B02B7A9B384AE7EED6 /* EXPMatchers+beTruthy.h */, + BE62E232E84FDF3AD5CDFE65 /* EXPMatchers+beTruthy.m */, + F0A24157B4BA2D2E1B9CEC18 /* EXPMatchers+beginWith.h */, + E4A1DE5345BA9BBB37D745D1 /* EXPMatchers+beginWith.m */, + A7E147F308CD2889593641F8 /* EXPMatchers+conformTo.h */, + 2C4946DD8004B10DBD3BEBE0 /* EXPMatchers+conformTo.m */, + F7E78B22E6B39AF231BCCA2D /* EXPMatchers+contain.h */, + 18A8D06FD0B3DCB85273BFE2 /* EXPMatchers+contain.m */, + 8DB4BB24028928E6E7BE64E9 /* EXPMatchers+endWith.h */, + BD363A11A16DE391FD666E56 /* EXPMatchers+endWith.m */, + 88AAAF1815056252470FC2A6 /* EXPMatchers+equal.h */, + 26140D01ECBBE302403277E7 /* EXPMatchers+equal.m */, + 92F9946AF7B3E53FAFF57A19 /* EXPMatchers+haveCountOf.h */, + F0761D1A1069513A78630ABA /* EXPMatchers+haveCountOf.m */, + EC4578A72A4B005F7E2196EA /* EXPMatchers+match.h */, + DFA9B08443D964E2FB073F56 /* EXPMatchers+match.m */, + 8C9F5723E5940D1269352135 /* EXPMatchers+postNotification.h */, + 47C2E8EC548FF8BFE0B65660 /* EXPMatchers+postNotification.m */, + 0F8CC8C24B86136D1949316C /* EXPMatchers+raise.h */, + 0E33B17ABCEF8719288A1534 /* EXPMatchers+raise.m */, + D1EADD18818E3526F2CEAF2F /* EXPMatchers+raiseWithReason.h */, + 73B6962701256AF21226A51C /* EXPMatchers+raiseWithReason.m */, + 9D261465E6EF11B9AF904C67 /* EXPMatchers+respondTo.h */, + 9A06A521245DAB5B8F162AB4 /* EXPMatchers+respondTo.m */, + 859359D6C9F1E75F8FD12FC7 /* EXPUnsupportedObject.h */, + 0B0D24466BA8FF3A32751D38 /* EXPUnsupportedObject.m */, + E411487CD9041CB730BB08A7 /* Expecta.h */, + ED9CD3349C1E0B89048D7931 /* ExpectaObject.h */, + 243595BDFC8D37871876A044 /* ExpectaObject.m */, + 432957C61F24704F540BB578 /* ExpectaSupport.h */, + 8E7B7B2C24266DB4297E958E /* ExpectaSupport.m */, + 57CF3ABF26B43FAE21E50CB8 /* NSObject+Expecta.h */, + AAA259A98CD2B660A0FDA33A /* NSValue+Expecta.h */, + CB2A97414B35780C4D650A65 /* NSValue+Expecta.m */, + 14140A2FCC717D1807A7F7C5 /* Support Files */, + ); + path = Expecta; + sourceTree = ""; + }; + A03705BE3759CEB52D808DB5 /* Pods-SwaggerClient_Tests */ = { + isa = PBXGroup; + children = ( + 4F282A1F87E3A1263AB11A47 /* Info.plist */, + DEEABA644193BDD43BE2B01A /* Pods-SwaggerClient_Tests.modulemap */, + B045B33F539B441E32ECB917 /* Pods-SwaggerClient_Tests-acknowledgements.markdown */, + 598BF1FC07A3867AB98B3140 /* Pods-SwaggerClient_Tests-acknowledgements.plist */, + AE7532915C90B421F28CFBEA /* Pods-SwaggerClient_Tests-dummy.m */, + 65B8DED1B65DC5B191ED3657 /* Pods-SwaggerClient_Tests-environment.h */, + 4124065010B426E1D6A20E50 /* Pods-SwaggerClient_Tests-frameworks.sh */, + C74AA1F13C4E128B77A1B84A /* Pods-SwaggerClient_Tests-resources.sh */, + 1FE46EF9D2B28F3F175C4215 /* Pods-SwaggerClient_Tests-umbrella.h */, + 9771D508607ABB6410B0BF9F /* Pods-SwaggerClient_Tests.debug.xcconfig */, + A61413AE7365BA6BD1EC261F /* Pods-SwaggerClient_Tests.release.xcconfig */, + ); + name = "Pods-SwaggerClient_Tests"; + path = "Target Support Files/Pods-SwaggerClient_Tests"; + sourceTree = ""; + }; + A1023CCC5989B44088116E66 /* Pods */ = { + isa = PBXGroup; + children = ( + B6B45A3D2553F2454BA474D8 /* AFNetworking */, + 95C8D702F42F6124FD6031B8 /* Expecta */, + 3EF1F48832B88DEA7380C789 /* ISO8601 */, + C00FC8494E3F97CF2445CD2B /* JSONModel */, + 86940BB4E50AC8BEB41F258B /* Specta */, + ); + name = Pods; + sourceTree = ""; + }; + A15D48AEC789CE1196E54C8F /* iOS */ = { + isa = PBXGroup; + children = ( + E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */, + 671A488088E85A1E9E82C2D4 /* Foundation.framework */, + AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */, + DCD887355DA3622403C587F3 /* Security.framework */, + AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */, + 0AABA64768BF1C67079AC14C /* XCTest.framework */, + ); + name = iOS; + sourceTree = ""; + }; + A3C7A0CE418F4E2A35715352 /* Targets Support Files */ = { + isa = PBXGroup; + children = ( + DACF90DFCA19D58F567ABAD7 /* Pods-SwaggerClient_Example */, + A03705BE3759CEB52D808DB5 /* Pods-SwaggerClient_Tests */, + ); + name = "Targets Support Files"; + sourceTree = ""; + }; + AA9F04788FA9956FFAA3269C /* Support Files */ = { + isa = PBXGroup; + children = ( + CC4A7C46C28B8D47187C1C49 /* Info.plist */, + EFC6B68E929AF9D5BEFD0302 /* Info.plist */, + 145BFF1E93D758B233F0AE9E /* Pods-SwaggerClient_Example-JSONModel.modulemap */, + 99A4A4B3247D70FBA6024D8F /* Pods-SwaggerClient_Example-JSONModel.xcconfig */, + D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */, + DC4F0DB2C1E5DEACB3919576 /* Pods-SwaggerClient_Example-JSONModel-dummy.m */, + C22D6D663F367C5CCB922CD4 /* Pods-SwaggerClient_Example-JSONModel-prefix.pch */, + 02BFF49A4C0CD62A7A017609 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h */, + 5ACAB4F433D4781F70935C78 /* Pods-SwaggerClient_Tests-JSONModel.modulemap */, + E29416FF6B777006D0421AF4 /* Pods-SwaggerClient_Tests-JSONModel.xcconfig */, + 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */, + 16CF586DFE9835700F2EDA9E /* Pods-SwaggerClient_Tests-JSONModel-dummy.m */, + FDE30FAA7D4B65680CAF7FCC /* Pods-SwaggerClient_Tests-JSONModel-prefix.pch */, + 01FC7B913F4D0D8ABA61D37F /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Pods-SwaggerClient_Example-JSONModel"; + sourceTree = ""; + }; + ADBB4065C1F453AB4A0E7F6E /* Support Files */ = { + isa = PBXGroup; + children = ( + 62BC316D842CEB918EAC2F85 /* Info.plist */, + C6CBAE36F463CD9F45A3BB9D /* Info.plist */, + 61ECE30CFAEE60A56370FFC4 /* Pods-SwaggerClient_Example-AFNetworking.modulemap */, + 596F890BB01AA3448640038C /* Pods-SwaggerClient_Example-AFNetworking.xcconfig */, + A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */, + A4077B653CCC6F44DDA78122 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m */, + 253D83DD07A18825650BBBE9 /* Pods-SwaggerClient_Example-AFNetworking-prefix.pch */, + E90E3F2428A92C2B30B905D1 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h */, + 0C7C70764F7DC898F9CD47C9 /* Pods-SwaggerClient_Tests-AFNetworking.modulemap */, + EB31DF2DC5E05E3C6E2B293D /* Pods-SwaggerClient_Tests-AFNetworking.xcconfig */, + AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */, + 2D6BA58FCD62CCE952D967CE /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m */, + 4E270100DEFDE600FBCC15C8 /* Pods-SwaggerClient_Tests-AFNetworking-prefix.pch */, + 7BAEA77B327844A9285B8670 /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Pods-SwaggerClient_Example-AFNetworking"; + sourceTree = ""; + }; + B55257A75677A5B455E28C0E /* SwaggerClient */ = { + isa = PBXGroup; + children = ( + BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */, + F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */, + E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */, + A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */, + B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */, + 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */, + FAF50F76847FEFE63382A19D /* SWGConfiguration.h */, + 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */, + EEBE9B8A684DF642FE20657F /* SWGFile.h */, + CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */, + E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */, + 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */, + 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */, + CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */, + 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */, + 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */, + 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */, + 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */, + 79F66BA3CD50A4290602F14B /* SWGObject.h */, + 93127E06DFE790D76898A78D /* SWGObject.m */, + AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */, + 8371F57BE2022A982DD2C14B /* SWGOrder.m */, + AAAB9238C7E7CC348DE482B8 /* SWGPet.h */, + CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */, + 60F89DDC8635677F871D034F /* SWGPetApi.h */, + 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */, + A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */, + 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */, + 70728AC343FB456859D11ABE /* SWGStoreApi.h */, + 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */, + 8A8892A67E4E1629B3650958 /* SWGTag.h */, + 2C14451912091A7274AEF9E1 /* SWGTag.m */, + 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */, + 9F927BCFCED60E5C20DD572D /* SWGUser.m */, + 20402A2505F9199C8CF42E06 /* SWGUserApi.h */, + F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */, + ); + path = SwaggerClient; + sourceTree = ""; + }; + B6B45A3D2553F2454BA474D8 /* AFNetworking */ = { + isa = PBXGroup; + children = ( + C0C70D134185F0A5D884F2D5 /* AFNetworking.h */, + 33F545DC4CC555AE4F30E353 /* NSURLConnection */, + 731D3D653792B9E33F0CEAEF /* NSURLSession */, + FE04BA1134972D1DEC32B8CA /* Reachability */, + C040C67829C03E322C32FDF1 /* Security */, + 287A389EC1CB278D24C36DFA /* Serialization */, + ADBB4065C1F453AB4A0E7F6E /* Support Files */, + 58B541E3318B7CA53A88A30E /* UIKit */, + ); + path = AFNetworking; + sourceTree = ""; + }; + BD7D77F2AC0E7E1511D454C8 /* Support Files */ = { + isa = PBXGroup; + children = ( + 4EC94106B0E5549033F7BA15 /* Info.plist */, + 83CAE1AE966882439F8A96EF /* Info.plist */, + 66978135221A5645E30BE2F1 /* Pods-SwaggerClient_Example-ISO8601.modulemap */, + D56A3A676645CFB5F0B4CA22 /* Pods-SwaggerClient_Example-ISO8601.xcconfig */, + 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */, + 1C064E590FE5779DB6C05E82 /* Pods-SwaggerClient_Example-ISO8601-dummy.m */, + D467864632DE57A4A06D82B3 /* Pods-SwaggerClient_Example-ISO8601-prefix.pch */, + 57E80A657EA2993398931392 /* Pods-SwaggerClient_Example-ISO8601-umbrella.h */, + 7E1FD49EEBB1A08378F9ECA4 /* Pods-SwaggerClient_Tests-ISO8601.modulemap */, + D549F681F30BA76D288122C0 /* Pods-SwaggerClient_Tests-ISO8601.xcconfig */, + 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */, + 32DE028703A8C4BC2B9C2A2E /* Pods-SwaggerClient_Tests-ISO8601-dummy.m */, + 10DFD3D78F972F78D71BB6E7 /* Pods-SwaggerClient_Tests-ISO8601-prefix.pch */, + 36B743CDFC49D282EF4A78C8 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Pods-SwaggerClient_Example-ISO8601"; + sourceTree = ""; + }; + C00FC8494E3F97CF2445CD2B /* JSONModel */ = { + isa = PBXGroup; + children = ( + DFB8A849BA1FECF15636A354 /* JSONAPI.h */, + D906469EA22490516C576F34 /* JSONAPI.m */, + 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */, + 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */, + 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */, + 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */, + 67A228DF9CD60524B576E388 /* JSONModel.h */, + FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */, + B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */, + 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */, + 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */, + 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */, + 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */, + 91DC534FB82569495452D79F /* JSONModelClassProperty.m */, + A79E486BE2BAA943C0E47F51 /* JSONModelError.h */, + 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */, + 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */, + 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */, + 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */, + F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */, + C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */, + AA9F04788FA9956FFAA3269C /* Support Files */, + ); + path = JSONModel; + sourceTree = ""; + }; + C040C67829C03E322C32FDF1 /* Security */ = { + isa = PBXGroup; + children = ( + 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */, + 451719F53715B179730D75E0 /* AFSecurityPolicy.m */, + ); + name = Security; + sourceTree = ""; + }; + DACF90DFCA19D58F567ABAD7 /* Pods-SwaggerClient_Example */ = { + isa = PBXGroup; + children = ( + 4F4671535FDE630BAB38EBFC /* Info.plist */, + D9ED0A476E3DBC9422CCF739 /* Pods-SwaggerClient_Example.modulemap */, + 96B0499DE5856DB93FACE9F3 /* Pods-SwaggerClient_Example-acknowledgements.markdown */, + F39E23BF273317107095F738 /* Pods-SwaggerClient_Example-acknowledgements.plist */, + 517927BA19A3538D1E30DE50 /* Pods-SwaggerClient_Example-dummy.m */, + 4FE8797D427FFD0C0A7BEF85 /* Pods-SwaggerClient_Example-environment.h */, + 7A0294B9DB6D28C931109F04 /* Pods-SwaggerClient_Example-frameworks.sh */, + 7F5E3C9D4DC0F9D156F215D9 /* Pods-SwaggerClient_Example-resources.sh */, + A3D3304828283C9BAC71B216 /* Pods-SwaggerClient_Example-umbrella.h */, + 1284C207920C60CCFF057D06 /* Pods-SwaggerClient_Example.debug.xcconfig */, + 1186977B42F8F3FC21D1A7B9 /* Pods-SwaggerClient_Example.release.xcconfig */, + ); + name = "Pods-SwaggerClient_Example"; + path = "Target Support Files/Pods-SwaggerClient_Example"; + sourceTree = ""; + }; + E4F7D4BF68FBAF97DA094102 /* Support Files */ = { + isa = PBXGroup; + children = ( + A1907A8F78BBCB2EF8450B44 /* Info.plist */, + D3FAA1B180CA821CADF13336 /* Pods-SwaggerClient_Tests-Specta.modulemap */, + D805562F6E114EDE2BFB0CE2 /* Pods-SwaggerClient_Tests-Specta.xcconfig */, + FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */, + 60DECAD526F277F125AC6CC8 /* Pods-SwaggerClient_Tests-Specta-dummy.m */, + 034BC9278FF5FAA0BF7EDE54 /* Pods-SwaggerClient_Tests-Specta-prefix.pch */, + BED74BBB7E4563223284FC51 /* Pods-SwaggerClient_Tests-Specta-umbrella.h */, + ); + name = "Support Files"; + path = "../Target Support Files/Pods-SwaggerClient_Tests-Specta"; + sourceTree = ""; + }; + F8DFE02AA7117447C43F2FFC = { + isa = PBXGroup; + children = ( + EE176C429702B2F0310644D4 /* Podfile */, + 268C001763B7BFCB78674988 /* Development Pods */, + 63E0886E243C932B9756FBD5 /* Frameworks */, + A1023CCC5989B44088116E66 /* Pods */, + 1919E245EDC5D1667FA4AA3A /* Products */, + A3C7A0CE418F4E2A35715352 /* Targets Support Files */, + ); + sourceTree = ""; + }; + FE04BA1134972D1DEC32B8CA /* Reachability */ = { + isa = PBXGroup; + children = ( + E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */, + 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */, + ); + name = Reachability; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 156119613885B08AA0F014A7 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8999ED93A69964E58772CB7C /* JSONAPI.h in Headers */, + 9B34355CD7E63D1895627210 /* JSONHTTPClient.h in Headers */, + 3DC47F224263A6AE449CFFDC /* JSONKeyMapper.h in Headers */, + 59719066DA7A3B5DD4234C92 /* JSONModel+networking.h in Headers */, + A7B0C16EEB7FFA25C25370D4 /* JSONModel.h in Headers */, + 7E51B9CF8F060125255C4874 /* JSONModelArray.h in Headers */, + B1E4B9C9C788060FA05197D8 /* JSONModelClassProperty.h in Headers */, + 8BC9B4305B0DDA301ACA4B07 /* JSONModelError.h in Headers */, + D25A60002AC50691F13E03C0 /* JSONModelLib.h in Headers */, + ECE599AE763A2C388157D2B1 /* JSONValueTransformer.h in Headers */, + 50147C1C98A2BE3F820601A9 /* NSArray+JSONModel.h in Headers */, + 3760B1DD16BFF927E104FB25 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 250DC207ED9525F56AB6683F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 40978838FAEA6D634F4AD042 /* JSONValueTransformer+ISO8601.h in Headers */, + 30761F9D2ADDD7315DDC95D8 /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h in Headers */, + 31A472719AA3A52EC74903FD /* SWGApiClient.h in Headers */, + F34C32CDBC26097517DD947F /* SWGCategory.h in Headers */, + 4684F0551F479F660241F8EE /* SWGConfiguration.h in Headers */, + 719253026530EB29F2CC2B72 /* SWGFile.h in Headers */, + 6BD0E2ACB9C405F9E64B8669 /* SWGJSONRequestSerializer.h in Headers */, + E7933B64815CD27F8F7C3540 /* SWGJSONResponseSerializer.h in Headers */, + D39D39947572DE9798E3D88B /* SWGMyresult.h in Headers */, + 4327F8FF04D9796D030CC825 /* SWGMythingApi.h in Headers */, + 30AED8CD55E9DA4D102A028B /* SWGObject.h in Headers */, + 05E44B1705BF02EF459EED58 /* SWGOrder.h in Headers */, + C6A0423CD8DBA07A30B98042 /* SWGPet.h in Headers */, + 875AF30991031E7098EEF798 /* SWGPetApi.h in Headers */, + 9E55563763BFCCA174A600C5 /* SWGQueryParamCollection.h in Headers */, + 5B7DF7966982B7F4CADDD133 /* SWGStoreApi.h in Headers */, + E6389419244A7DC4C9C57934 /* SWGTag.h in Headers */, + F55122FA09A1A3BBD62E54B3 /* SWGUser.h in Headers */, + FDACF057168267FCDAB72DF1 /* SWGUserApi.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4473FA90B779810F6D33A32C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 0E5BA06D6F20D109F5937BBA /* Pods-SwaggerClient_Example-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 4545D53E1FD0C4B7B97B04F9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B9D2A404F1B49622441EBB16 /* JSONAPI.h in Headers */, + 2575C7D4A30F9F057EEB475B /* JSONHTTPClient.h in Headers */, + BEA7FF33522B439AEB60C281 /* JSONKeyMapper.h in Headers */, + 009F14C0CA20741504926131 /* JSONModel+networking.h in Headers */, + 2A1D80A2AD26A4E7E3CB41BF /* JSONModel.h in Headers */, + 15481C9B911D9926D6616544 /* JSONModelArray.h in Headers */, + 2B9B995C35A4D77609B5BFF2 /* JSONModelClassProperty.h in Headers */, + 08D39D19BF314C76BE1C7C47 /* JSONModelError.h in Headers */, + 3FA455AFA48AD50F1D53F9CA /* JSONModelLib.h in Headers */, + 5B2FCF39BB864869CD94F2F9 /* JSONValueTransformer.h in Headers */, + 81292025A1A602AF03CF2786 /* NSArray+JSONModel.h in Headers */, + 31EED5998AB440042E5AD2A1 /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 53E267707CCEA2E3A1AB0B3C /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C84ED29D92C2DAF709D42519 /* AFHTTPRequestOperation.h in Headers */, + 7E3EF033ABA1E93C7F640408 /* AFHTTPRequestOperationManager.h in Headers */, + B13D156D3F01638F8D3EC102 /* AFHTTPSessionManager.h in Headers */, + 7A53181A5C51E8CDC82D78FF /* AFNetworkActivityIndicatorManager.h in Headers */, + AB5C9A3A56CEBAB1AD349A33 /* AFNetworkReachabilityManager.h in Headers */, + 0BA67D960C3D46FE796FA170 /* AFNetworking.h in Headers */, + 709D563EE63BC8B34E719F68 /* AFSecurityPolicy.h in Headers */, + F0E3847056B72A4ACC11650F /* AFURLConnectionOperation.h in Headers */, + ACD3422A4497EA29AB24A72E /* AFURLRequestSerialization.h in Headers */, + BF2DDC96324CFDF7C303F050 /* AFURLResponseSerialization.h in Headers */, + 5CF717B5F4B92B85335848B5 /* AFURLSessionManager.h in Headers */, + B6DAEBF843B8DC1DC8E3906F /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h in Headers */, + B9BA486CAAEB77195346C34B /* UIActivityIndicatorView+AFNetworking.h in Headers */, + E3C9C7EAD8A7690BE18CF43E /* UIAlertView+AFNetworking.h in Headers */, + 8FB224E07B86F6A688B90F58 /* UIButton+AFNetworking.h in Headers */, + 54A1C77FFEF9D6711B04A35F /* UIImageView+AFNetworking.h in Headers */, + A615771FAD89E35239D87FF6 /* UIKit+AFNetworking.h in Headers */, + 8EFACBBBDC56722661F3744A /* UIProgressView+AFNetworking.h in Headers */, + 6895CF33F4FB371D6FCA3FE9 /* UIRefreshControl+AFNetworking.h in Headers */, + 1E90336D2D07D4CCD8EAB3AE /* UIWebView+AFNetworking.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7AC2D11FE2C693EA5B960A79 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + CC1FBF181AEECAD23864A42C /* Pods-SwaggerClient_Tests-Specta-umbrella.h in Headers */, + D85897B024FC6FAD6069F022 /* SPTCallSite.h in Headers */, + 58933698E078FEA9C0689292 /* SPTCompiledExample.h in Headers */, + D8D2BF368F6CE862A6B7AA97 /* SPTExample.h in Headers */, + A8C07412B7F1F58F95027E4B /* SPTExampleGroup.h in Headers */, + A8CAB0E9B1CF76911B13ECC0 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */, + CADBFFBB5024C1F7431B4161 /* SPTGlobalBeforeAfterEach.h in Headers */, + 8929E57AFE7279D698EF5E7E /* SPTSharedExampleGroups.h in Headers */, + D2D9A6640DB83E9E9430A97C /* SPTSpec.h in Headers */, + EEC1D0AFE3CE69C65F59BED8 /* SPTTestSuite.h in Headers */, + 2019465B5EC42B2DCBB85EE3 /* Specta.h in Headers */, + 49BD45475EFF07925EF1261D /* SpectaDSL.h in Headers */, + 3EAEDA676CAF94858D91CFB0 /* SpectaTypes.h in Headers */, + 1CF4FB9D2FD679D464ABBB50 /* SpectaUtility.h in Headers */, + 18EB1478750F10527DCBA3CA /* XCTest+Private.h in Headers */, + C2BE2DCF5392F363C60A210B /* XCTestCase+Specta.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7F75A327B3E596E1CE9BEAE5 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 6353F43D216317DCB7178D76 /* AFHTTPRequestOperation.h in Headers */, + CEF36F80E21F2D0234B5566A /* AFHTTPRequestOperationManager.h in Headers */, + D64936F4E16C7DDC5CA36786 /* AFHTTPSessionManager.h in Headers */, + 81E1F4FC8572144FC30559B2 /* AFNetworkActivityIndicatorManager.h in Headers */, + 202A56F969E09068E449B790 /* AFNetworkReachabilityManager.h in Headers */, + 655A1A5574F0ADA33C6BA555 /* AFNetworking.h in Headers */, + 01644CF4631020B9AC9CCD06 /* AFSecurityPolicy.h in Headers */, + 060CE80CB8B14C7F22E6C8F7 /* AFURLConnectionOperation.h in Headers */, + 063630C46D0AE3241769A6AB /* AFURLRequestSerialization.h in Headers */, + 0CE023D16C43712578A85693 /* AFURLResponseSerialization.h in Headers */, + D089D5A08CF97B04969C23E4 /* AFURLSessionManager.h in Headers */, + 2C0B0BCC4246AA2B5C7A85A4 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h in Headers */, + A6A04E6DCA180CCB638EB663 /* UIActivityIndicatorView+AFNetworking.h in Headers */, + 9E4390595213439458955F20 /* UIAlertView+AFNetworking.h in Headers */, + 4D8B2BA43AAE4EB70B675653 /* UIButton+AFNetworking.h in Headers */, + CCF74087CAB105D4DED21E9F /* UIImageView+AFNetworking.h in Headers */, + B977CEEA0F438EDF96140C66 /* UIKit+AFNetworking.h in Headers */, + ED3C42A61083D6D95AA107AB /* UIProgressView+AFNetworking.h in Headers */, + 15D907F1F8EE9988D498B929 /* UIRefreshControl+AFNetworking.h in Headers */, + B9E4C068BE8563261382F6A0 /* UIWebView+AFNetworking.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97DCCF614986E72E496EDC94 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + C6D59104CEC4FAE304DA4D55 /* EXPBlockDefinedMatcher.h in Headers */, + 4CD5A6D7AA3D5BFD09648D1D /* EXPDefines.h in Headers */, + FDB1AA841E7569F2CAD1A487 /* EXPDoubleTuple.h in Headers */, + 4E381D04C09A000DF81BB192 /* EXPExpect.h in Headers */, + 7A068863C9D19B0DE204F391 /* EXPFloatTuple.h in Headers */, + 4C87A409DB81EB3100727F0F /* EXPMatcher.h in Headers */, + F67A3EE5DE902A585BDEDC01 /* EXPMatcherHelpers.h in Headers */, + BEA321219CA5B6A96477031D /* EXPMatchers+beCloseTo.h in Headers */, + FEE8E2294C46AE7CE464264D /* EXPMatchers+beFalsy.h in Headers */, + 141E818821C0DF4EF86D111A /* EXPMatchers+beGreaterThan.h in Headers */, + 75152788B3BE31431561865B /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */, + A39E4CD5AE12216FB1487BE3 /* EXPMatchers+beIdenticalTo.h in Headers */, + D9DFA62AC86F87A197C5560C /* EXPMatchers+beInTheRangeOf.h in Headers */, + ED132F7E6A664272D3FF3B53 /* EXPMatchers+beInstanceOf.h in Headers */, + C330AFEF3709DC609D18FE78 /* EXPMatchers+beKindOf.h in Headers */, + 44E1A78EC1381D154F5F4198 /* EXPMatchers+beLessThan.h in Headers */, + 4D4DFF614C17C0DC6F9358B9 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */, + F55E8B76B45DE49306387219 /* EXPMatchers+beNil.h in Headers */, + D1750EAC8D3DBC472DDCBC9D /* EXPMatchers+beSubclassOf.h in Headers */, + 5F372EF252811B674AC4AB6B /* EXPMatchers+beSupersetOf.h in Headers */, + D7239B7051E31F27F8BEE765 /* EXPMatchers+beTruthy.h in Headers */, + A52C6D47F0316E0850BDB9CC /* EXPMatchers+beginWith.h in Headers */, + 0A807DDB6336109324346314 /* EXPMatchers+conformTo.h in Headers */, + 1A089E25AFA9D708ACA954D0 /* EXPMatchers+contain.h in Headers */, + 14D082B7758784153108F8D0 /* EXPMatchers+endWith.h in Headers */, + 480B9A799CF713D7A4FB1280 /* EXPMatchers+equal.h in Headers */, + C05D4C12A5819F4C96283EF0 /* EXPMatchers+haveCountOf.h in Headers */, + B69AF6583C37F97E73A631A4 /* EXPMatchers+match.h in Headers */, + A1C1A904CA59FC4D76396175 /* EXPMatchers+postNotification.h in Headers */, + 5D474A781C64601B7793EACE /* EXPMatchers+raise.h in Headers */, + 954A0C871E08071219871B4D /* EXPMatchers+raiseWithReason.h in Headers */, + FB1C86BB963AE459A2F77925 /* EXPMatchers+respondTo.h in Headers */, + AD992DDF15A32176B225DE7D /* EXPMatchers.h in Headers */, + 248E11A29947ED3176089DE8 /* EXPUnsupportedObject.h in Headers */, + 7A95722C4365CBB156219D87 /* Expecta.h in Headers */, + 2BF8572932D3DB0D00340B5D /* ExpectaObject.h in Headers */, + A94CB6D49585BD2377348821 /* ExpectaSupport.h in Headers */, + 9C4FAEE42252A322B0545CF6 /* NSObject+Expecta.h in Headers */, + A070DA3650B5255D70D2B282 /* NSValue+Expecta.h in Headers */, + C9FEB3D995D761E335AD7564 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AB4A5205D0F4C0D7D380619A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F00CD0B1A1A5D41A7C0A8A0E /* ISO8601.h in Headers */, + 8178DA76D849E1EEFDD0776E /* ISO8601Serialization.h in Headers */, + 4C235C092D5E9122C9675223 /* NSDate+ISO8601.h in Headers */, + 81412F96CE91EA61DD405215 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + BF506DBD467268993DD0B88B /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 1B9947C260FA1F8C7BBF6CAA /* JSONValueTransformer+ISO8601.h in Headers */, + FEC1250CB58D27B11D7B6D82 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h in Headers */, + 2E492A887BD1485D00A872DE /* SWGApiClient.h in Headers */, + 79BFDC0F5D922F559F6386CD /* SWGCategory.h in Headers */, + 684A4BF6370BC43C9704A17A /* SWGConfiguration.h in Headers */, + 56250F2F58B9A7760BFA25D2 /* SWGFile.h in Headers */, + 6E80282ECD2D0EBFB5E4485E /* SWGJSONRequestSerializer.h in Headers */, + 70355ED21006B4EFC0743514 /* SWGJSONResponseSerializer.h in Headers */, + 208F0DB6A4BA036D42430F0E /* SWGMyresult.h in Headers */, + A9099FF7B971FB25BE12CE34 /* SWGMythingApi.h in Headers */, + A341B6CFB383324AA067A6C9 /* SWGObject.h in Headers */, + DC1A23AD09FFE1D162CF752C /* SWGOrder.h in Headers */, + D5C153FA62530DF6C2F0273C /* SWGPet.h in Headers */, + 31F4C8B75EEE1B23E2591723 /* SWGPetApi.h in Headers */, + 96514B6F8D64D7C3330D5338 /* SWGQueryParamCollection.h in Headers */, + 730EB4EC6649BB254DE45A23 /* SWGStoreApi.h in Headers */, + B4D66A60456836C75E244CA1 /* SWGTag.h in Headers */, + 8A4B71DDA44F239B71659CC9 /* SWGUser.h in Headers */, + AA260D742DDFFB983A47540C /* SWGUserApi.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C8F839C66585929F628BBFD6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + F9B487686092CAF6F341F0B4 /* ISO8601.h in Headers */, + 79AC15C3F613CF7B5167E18A /* ISO8601Serialization.h in Headers */, + BF726F674241490B1012F41D /* NSDate+ISO8601.h in Headers */, + A12B12D456D0FB491E19B70F /* Pods-SwaggerClient_Example-ISO8601-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D82B733FDD10A4C34B91EA7E /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + B577C09AD427A9630FC2762A /* Pods-SwaggerClient_Tests-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 0302FEB4C8D5554EBF417C18 /* Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient */ = { + isa = PBXNativeTarget; + buildConfigurationList = 351BAE8D5BC62A097309ADC9 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient" */; + buildPhases = ( + 8448357716917B3811ADC84F /* Sources */, + D85DD4B01002C97CAEAD5ECD /* Frameworks */, + 18DC42A60FE85FD053CE074E /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; + productName = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; + productReference = 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */; + productType = "com.apple.product-type.bundle"; + }; + 3D847D51CC40CEBA17C36758 /* Pods-SwaggerClient_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3D7EC3A64D24B9B21CAB0CB0 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example" */; + buildPhases = ( + 465DA8A121427D77A47133AD /* Sources */, + 673A0374A2A20CD429AB0773 /* Frameworks */, + 4473FA90B779810F6D33A32C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + BFFCF1DD85CC0EBDD4A15E6F /* PBXTargetDependency */, + 1BD6424F23937FAA86565E89 /* PBXTargetDependency */, + F5D78FECB621781EB73E6197 /* PBXTargetDependency */, + 6FC0DE2C745B1889560F6372 /* PBXTargetDependency */, + ); + name = "Pods-SwaggerClient_Example"; + productName = "Pods-SwaggerClient_Example"; + productReference = ECD35253AA3403B8C0D8BC91 /* Pods_SwaggerClient_Example.framework */; + productType = "com.apple.product-type.framework"; + }; + 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */ = { + isa = PBXNativeTarget; + buildConfigurationList = 85CDE45473383342737F8E25 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-JSONModel" */; + buildPhases = ( + D73538A10BDC3736D358D63A /* Sources */, + 8269400275399508F5AC9F90 /* Frameworks */, + 156119613885B08AA0F014A7 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Example-JSONModel"; + productName = "Pods-SwaggerClient_Example-JSONModel"; + productReference = 2B84527440CA189207D786E6 /* JSONModel.framework */; + productType = "com.apple.product-type.framework"; + }; + 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0CA4D8762B52D96C8C564237 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-AFNetworking" */; + buildPhases = ( + 44795B49329385F6BF17D23B /* Sources */, + 750E29F817ADCE3AB9B643BA /* Frameworks */, + 7F75A327B3E596E1CE9BEAE5 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Example-AFNetworking"; + productName = "Pods-SwaggerClient_Example-AFNetworking"; + productReference = A5484E73AF459C17B7675EC4 /* AFNetworking.framework */; + productType = "com.apple.product-type.framework"; + }; + 586988C23CE1F40608512406 /* Pods-SwaggerClient_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = D30DD5D7DFF977FDA7B6BEF1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests" */; + buildPhases = ( + 9FD38D102529F8D7D3170D67 /* Sources */, + B5794BCD92EB55B5659DC58C /* Frameworks */, + D82B733FDD10A4C34B91EA7E /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 02A00A78A8D4DBA4C494E782 /* PBXTargetDependency */, + 7E019665346D67BA59BD3582 /* PBXTargetDependency */, + 2BC5F748C750AEDB54C6722D /* PBXTargetDependency */, + 6300704AD4301AF8D7350451 /* PBXTargetDependency */, + 8BD39B4AC51572C84586390B /* PBXTargetDependency */, + 2F7257A66A460B6DD6A4EA8E /* PBXTargetDependency */, + ); + name = "Pods-SwaggerClient_Tests"; + productName = "Pods-SwaggerClient_Tests"; + productReference = DD1BFACA7FDF797B7D807147 /* Pods_SwaggerClient_Tests.framework */; + productType = "com.apple.product-type.framework"; + }; + 5D6776B420CF321A265D866F /* Pods-SwaggerClient_Tests-Specta */ = { + isa = PBXNativeTarget; + buildConfigurationList = 24A540001943BDE4C634EC51 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Specta" */; + buildPhases = ( + 0142C86F1CE186B36A8261E9 /* Sources */, + FC7F930F7556CE714F53300E /* Frameworks */, + 7AC2D11FE2C693EA5B960A79 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Tests-Specta"; + productName = "Pods-SwaggerClient_Tests-Specta"; + productReference = 77F99C66542F4EEBABCA1BD3 /* Specta.framework */; + productType = "com.apple.product-type.framework"; + }; + 7DCA9F990FC46BE1EFE6E984 /* Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6083D3A92D58EC4F28AE1B83 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient" */; + buildPhases = ( + 8AF5012546A593E5921B31FF /* Sources */, + 499759AF0A623FE7F6AF7041 /* Frameworks */, + FD18433AC00713F1D24CEE1F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; + productName = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; + productReference = F248532F283AF83DB6271DCE /* SwaggerClient.bundle */; + productType = "com.apple.product-type.bundle"; + }; + 9A7195F471543DF0C0847DF5 /* Pods-SwaggerClient_Tests-SwaggerClient */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0CF9A436B18EF00915610CA8 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient" */; + buildPhases = ( + C1749AA5E0494F78957B7B27 /* Sources */, + D0FE5D2BE433B354C40D398F /* Frameworks */, + 06ED960DB2AAD40ADDC8FBA2 /* Resources */, + 250DC207ED9525F56AB6683F /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + B6FBD2C5C6EF1DBE5A3B8C0E /* PBXTargetDependency */, + 4176E190DC2EF76DC2017F30 /* PBXTargetDependency */, + 1A0AA9815393DBD89407AF6B /* PBXTargetDependency */, + EC423479E5CD171647C2D9BE /* PBXTargetDependency */, + ); + name = "Pods-SwaggerClient_Tests-SwaggerClient"; + productName = "Pods-SwaggerClient_Tests-SwaggerClient"; + productReference = FB09DF7ECF2A36274905F66A /* SwaggerClient.framework */; + productType = "com.apple.product-type.framework"; + }; + AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */ = { + isa = PBXNativeTarget; + buildConfigurationList = 440F2EB40823B7BE6C0366BF /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-ISO8601" */; + buildPhases = ( + 6E74CB31F8190636A0E3EDC4 /* Sources */, + A06FF8C70F93B2C2A8E2C69A /* Frameworks */, + AB4A5205D0F4C0D7D380619A /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Tests-ISO8601"; + productName = "Pods-SwaggerClient_Tests-ISO8601"; + productReference = 63A4708CCC1EF6AB1122AA0D /* ISO8601.framework */; + productType = "com.apple.product-type.framework"; + }; + BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8F5905F41630018F867BF0DD /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-JSONModel" */; + buildPhases = ( + 84DB4D9B2F896BDE2D16EE9C /* Sources */, + 22103A8AB4D5FCBA853D48FE /* Frameworks */, + 4545D53E1FD0C4B7B97B04F9 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Tests-JSONModel"; + productName = "Pods-SwaggerClient_Tests-JSONModel"; + productReference = F2C9039E5EA681AB43C4BBEF /* JSONModel.framework */; + productType = "com.apple.product-type.framework"; + }; + C215F478D13D9D22D8E1EF48 /* Pods-SwaggerClient_Tests-Expecta */ = { + isa = PBXNativeTarget; + buildConfigurationList = CE9D2C2EB73F81484282144B /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Expecta" */; + buildPhases = ( + 3CE9B586C0B1F55752D43B64 /* Sources */, + D1964A51153C3AD7CB69D97B /* Frameworks */, + 97DCCF614986E72E496EDC94 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Tests-Expecta"; + productName = "Pods-SwaggerClient_Tests-Expecta"; + productReference = A3345F9CAA9252356B6C083F /* Expecta.framework */; + productType = "com.apple.product-type.framework"; + }; + DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */ = { + isa = PBXNativeTarget; + buildConfigurationList = 45EDD505E7F0B8B9474DB404 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-AFNetworking" */; + buildPhases = ( + 08D9808518E24B8B95461158 /* Sources */, + C9772FEF5F5BFC03430176FC /* Frameworks */, + 53E267707CCEA2E3A1AB0B3C /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Tests-AFNetworking"; + productName = "Pods-SwaggerClient_Tests-AFNetworking"; + productReference = C8F4D12FB56992D696A23287 /* AFNetworking.framework */; + productType = "com.apple.product-type.framework"; + }; + EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */ = { + isa = PBXNativeTarget; + buildConfigurationList = D60F77FE8CF69D3A0CE90DB1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-ISO8601" */; + buildPhases = ( + 7F899B2AE63A9C2AF4594B6E /* Sources */, + 4356669AECF52D690D7A0708 /* Frameworks */, + C8F839C66585929F628BBFD6 /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "Pods-SwaggerClient_Example-ISO8601"; + productName = "Pods-SwaggerClient_Example-ISO8601"; + productReference = E76BF395D393BEDAF0184B7D /* ISO8601.framework */; + productType = "com.apple.product-type.framework"; + }; + F41FA180E243133D32149CC3 /* Pods-SwaggerClient_Example-SwaggerClient */ = { + isa = PBXNativeTarget; + buildConfigurationList = B99147797FD26A68689C683E /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient" */; + buildPhases = ( + 7B2044C659DA2DB123C95C64 /* Sources */, + 4A427963DE553632587A5ADF /* Frameworks */, + E6CAB5E75279623276601C95 /* Resources */, + BF506DBD467268993DD0B88B /* Headers */, + ); + buildRules = ( + ); + dependencies = ( + 5E6E70FCD4CD3DEF152EA484 /* PBXTargetDependency */, + B158D90617991ACE7FF89C92 /* PBXTargetDependency */, + E5E1ECE1FCFCE7D924A5661D /* PBXTargetDependency */, + 2C0DE9B3B72582655B86E580 /* PBXTargetDependency */, + ); + name = "Pods-SwaggerClient_Example-SwaggerClient"; + productName = "Pods-SwaggerClient_Example-SwaggerClient"; + productReference = A038A42B885D252D1A20C7CB /* SwaggerClient.framework */; + productType = "com.apple.product-type.framework"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 2773EB90C58135F3C1FC4A1B /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0640; + }; + buildConfigurationList = 99E24E8C0F51BD67AFA23E56 /* Build configuration list for PBXProject "Pods" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = F8DFE02AA7117447C43F2FFC; + productRefGroup = 1919E245EDC5D1667FA4AA3A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3D847D51CC40CEBA17C36758 /* Pods-SwaggerClient_Example */, + 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */, + EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */, + 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */, + F41FA180E243133D32149CC3 /* Pods-SwaggerClient_Example-SwaggerClient */, + 7DCA9F990FC46BE1EFE6E984 /* Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient */, + 586988C23CE1F40608512406 /* Pods-SwaggerClient_Tests */, + DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */, + C215F478D13D9D22D8E1EF48 /* Pods-SwaggerClient_Tests-Expecta */, + AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */, + BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */, + 5D6776B420CF321A265D866F /* Pods-SwaggerClient_Tests-Specta */, + 9A7195F471543DF0C0847DF5 /* Pods-SwaggerClient_Tests-SwaggerClient */, + 0302FEB4C8D5554EBF417C18 /* Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 06ED960DB2AAD40ADDC8FBA2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 739B0A56F4B979196B38F1D4 /* SwaggerClient.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 18DC42A60FE85FD053CE074E /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E6CAB5E75279623276601C95 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ECBEE6653FEB368DF6EA2147 /* SwaggerClient.bundle in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FD18433AC00713F1D24CEE1F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 0142C86F1CE186B36A8261E9 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2FBDF7CE14C4468420FD55AE /* Pods-SwaggerClient_Tests-Specta-dummy.m in Sources */, + 349C1EC2A3BC841F900B1486 /* SPTCallSite.m in Sources */, + 733CE4BAA5170020996D3E9B /* SPTCompiledExample.m in Sources */, + EEB0BA1DC32939D00C3ED294 /* SPTExample.m in Sources */, + AD94F44BEC5659D1BB34DE23 /* SPTExampleGroup.m in Sources */, + DB63C05804976AC7CDF74F4D /* SPTSharedExampleGroups.m in Sources */, + B540F67558AA7A144899EBBF /* SPTSpec.m in Sources */, + 65EEB46EDB53A949C6316472 /* SPTTestSuite.m in Sources */, + 35B0AC4B7AF8B00BC4C38BE6 /* SpectaDSL.m in Sources */, + 234F4761A980F0FB31468104 /* SpectaUtility.m in Sources */, + D71C1CD54E1E0230C16A87F8 /* XCTestCase+Specta.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 08D9808518E24B8B95461158 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D650C64BE46E68CB35B4FCA /* AFHTTPRequestOperation.m in Sources */, + 7022EA6C3ED11B8F6D17C915 /* AFHTTPRequestOperationManager.m in Sources */, + 28DA345E3A79443D17917DD3 /* AFHTTPSessionManager.m in Sources */, + 5D36786D11940C4FC2D151F1 /* AFNetworkActivityIndicatorManager.m in Sources */, + B85B153A4B53D16F245FEEAA /* AFNetworkReachabilityManager.m in Sources */, + E500C5512FD6F2D51E9AC635 /* AFSecurityPolicy.m in Sources */, + 10D3E7AAF6BF29347D2C6098 /* AFURLConnectionOperation.m in Sources */, + C070594757FF88D238C2FA87 /* AFURLRequestSerialization.m in Sources */, + B2A892164C701F606A01393A /* AFURLResponseSerialization.m in Sources */, + 485CBCFDC4C3E69D41661405 /* AFURLSessionManager.m in Sources */, + C63074C841FEFC17E3AB5C3C /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m in Sources */, + 592FFE8ADED8118B48C3C008 /* UIActivityIndicatorView+AFNetworking.m in Sources */, + 64839F8447FE9FFE7BEAA520 /* UIAlertView+AFNetworking.m in Sources */, + FA15E8CCF2EE07E232BE3171 /* UIButton+AFNetworking.m in Sources */, + 541A3EF8AB9F89D0C26F5180 /* UIImageView+AFNetworking.m in Sources */, + D973A75729B33D7DBA665F94 /* UIProgressView+AFNetworking.m in Sources */, + 891D33D88CE707237FF15709 /* UIRefreshControl+AFNetworking.m in Sources */, + E4097E7ABE3BFD9AE7B2D446 /* UIWebView+AFNetworking.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3CE9B586C0B1F55752D43B64 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6FFFCA02F0848062C1CFC252 /* EXPBlockDefinedMatcher.m in Sources */, + 4E0D59D3C52705977CDA2F8C /* EXPDoubleTuple.m in Sources */, + 38DD8E43F24A829555F60CFA /* EXPExpect.m in Sources */, + 15D3342D7E8179197A16CE99 /* EXPFloatTuple.m in Sources */, + 7A1C599B7BB230911B38A23D /* EXPMatcherHelpers.m in Sources */, + 1A42236975D31BC018BADEA8 /* EXPMatchers+beCloseTo.m in Sources */, + 6F0C994E24BAEFAD916AEE27 /* EXPMatchers+beFalsy.m in Sources */, + F26654D315EA6DCA41834C01 /* EXPMatchers+beGreaterThan.m in Sources */, + 480220DF7A8958ABA2B68C4A /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */, + 3D3DB30244C6BC6C236665C2 /* EXPMatchers+beIdenticalTo.m in Sources */, + 1AE4C4E081C7868C097ED07E /* EXPMatchers+beInTheRangeOf.m in Sources */, + 8182438CCBAC66CC21D7E6D8 /* EXPMatchers+beInstanceOf.m in Sources */, + BF9AD2E3F2BBB0F23C5FE05B /* EXPMatchers+beKindOf.m in Sources */, + 85E4D74887E7F3F3702DBF51 /* EXPMatchers+beLessThan.m in Sources */, + 5A8DE01C8A5A5BA6F321912A /* EXPMatchers+beLessThanOrEqualTo.m in Sources */, + 6DF752A3DC92FFE0ED8186A6 /* EXPMatchers+beNil.m in Sources */, + 5EC683903E3BFB84AF431EE7 /* EXPMatchers+beSubclassOf.m in Sources */, + 98AB219A7D05251D3F7F7191 /* EXPMatchers+beSupersetOf.m in Sources */, + C59AA43C300E2D6018686D5C /* EXPMatchers+beTruthy.m in Sources */, + AF5EA9CC989D2DD5BBC37E6D /* EXPMatchers+beginWith.m in Sources */, + 49207B3420011B51EB18E841 /* EXPMatchers+conformTo.m in Sources */, + F16001F37542754EC6BB8DD2 /* EXPMatchers+contain.m in Sources */, + B4795C0A8815C3A0950EC1B3 /* EXPMatchers+endWith.m in Sources */, + 2B068325226CBE00207FD473 /* EXPMatchers+equal.m in Sources */, + AA31F2218DEBC427DA074A6F /* EXPMatchers+haveCountOf.m in Sources */, + 179CF1D636A8BCC9B4FF0357 /* EXPMatchers+match.m in Sources */, + 76BCBD536C1967E6EE51F9CC /* EXPMatchers+postNotification.m in Sources */, + 7711A28F5EA5D2624146AA49 /* EXPMatchers+raise.m in Sources */, + ABB477C54AD69931FDAD534A /* EXPMatchers+raiseWithReason.m in Sources */, + 7F9EE30367A72427A141D157 /* EXPMatchers+respondTo.m in Sources */, + 74844E56902AF11EAD1519DC /* EXPUnsupportedObject.m in Sources */, + BEF99C501593E888D27462DD /* ExpectaObject.m in Sources */, + BD3DBE17D08805BA594C4CDF /* ExpectaSupport.m in Sources */, + 064D4D263A3BCF74314B1CC0 /* NSValue+Expecta.m in Sources */, + 9E825293685B2F9CCB212441 /* Pods-SwaggerClient_Tests-Expecta-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 44795B49329385F6BF17D23B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B7BFFB369FFC08F30144EB53 /* AFHTTPRequestOperation.m in Sources */, + 91E570000BEF9E1B7FE2D62C /* AFHTTPRequestOperationManager.m in Sources */, + 69F02A625CD67C7385B76D0C /* AFHTTPSessionManager.m in Sources */, + F17018B643C6833F68258DE9 /* AFNetworkActivityIndicatorManager.m in Sources */, + 738A8A430BD4B242B982A059 /* AFNetworkReachabilityManager.m in Sources */, + 98546537C1F973E3CD32D4FF /* AFSecurityPolicy.m in Sources */, + 9F71319C3E9362B30F6C3769 /* AFURLConnectionOperation.m in Sources */, + 7B97CB82AB5C67E42EF47207 /* AFURLRequestSerialization.m in Sources */, + D9854E458AA2FBD78985A511 /* AFURLResponseSerialization.m in Sources */, + CB9C5D875643FBC019875C60 /* AFURLSessionManager.m in Sources */, + 0D6A55BDCE3AAA3B8A4451D0 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m in Sources */, + DF8E177952FDF501C1A4A2E4 /* UIActivityIndicatorView+AFNetworking.m in Sources */, + 14B409D1DD01CD3148C13D93 /* UIAlertView+AFNetworking.m in Sources */, + B423A4F4EC57E34D565252DC /* UIButton+AFNetworking.m in Sources */, + EE81625A23AF0564339C887C /* UIImageView+AFNetworking.m in Sources */, + F2D019933E1752072C3226C6 /* UIProgressView+AFNetworking.m in Sources */, + 7891CCC1701105C4924B92D2 /* UIRefreshControl+AFNetworking.m in Sources */, + 8E08F266FF1D8F57E4358D4E /* UIWebView+AFNetworking.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 465DA8A121427D77A47133AD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8CDC523BB3A193C0478C2391 /* Pods-SwaggerClient_Example-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6E74CB31F8190636A0E3EDC4 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 935DB5B30E1569E0AD36149E /* ISO8601Serialization.m in Sources */, + 216BA373617DE71E01797A11 /* NSDate+ISO8601.m in Sources */, + AF7B682321A34F5E0DC249CC /* Pods-SwaggerClient_Tests-ISO8601-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7B2044C659DA2DB123C95C64 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + D0E021101C4457887F895E49 /* JSONValueTransformer+ISO8601.m in Sources */, + 7BD9D6B0473CD492B25067F0 /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m in Sources */, + 5557E105ADC6440D8DE05BE8 /* SWGApiClient.m in Sources */, + 93A71FA7A09487B7309E2291 /* SWGCategory.m in Sources */, + 6D9D7788C3964B9919E6AFDD /* SWGConfiguration.m in Sources */, + A5A2B75AEEE5F1471ABF7C51 /* SWGFile.m in Sources */, + CDB76BF92E8780DFD831170E /* SWGJSONRequestSerializer.m in Sources */, + C9105E9B2229104E74953563 /* SWGJSONResponseSerializer.m in Sources */, + 5EB23F6A3A0BC89591B46C53 /* SWGMyresult.m in Sources */, + 6CBB043C1B99FCC1B8421A4D /* SWGMythingApi.m in Sources */, + 24A7213C685D7D07D1A1FEBD /* SWGObject.m in Sources */, + 3EC6DC73A10ED5CC2F75062A /* SWGOrder.m in Sources */, + 73FCB4F39FE4BFF9537374F4 /* SWGPet.m in Sources */, + 0D7DC58CB3CDFDB33C4CB741 /* SWGPetApi.m in Sources */, + 6C73129BE33A179F9AB0617C /* SWGQueryParamCollection.m in Sources */, + 2FB329EBD1692264B6EF0552 /* SWGStoreApi.m in Sources */, + A325E1719B72BDDEE0616DBF /* SWGTag.m in Sources */, + 7A0E55F5686D8206F7ED79ED /* SWGUser.m in Sources */, + 8288B907B026F63D6B2E4C69 /* SWGUserApi.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7F899B2AE63A9C2AF4594B6E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5AF80236C8B3D49B88DD6A73 /* ISO8601Serialization.m in Sources */, + FE0A66CD1EBA3E418F2C1D00 /* NSDate+ISO8601.m in Sources */, + DB8F6259B5D23FA526D5B6C7 /* Pods-SwaggerClient_Example-ISO8601-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8448357716917B3811ADC84F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 84DB4D9B2F896BDE2D16EE9C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A53061A46842AA54DAB54023 /* JSONAPI.m in Sources */, + DFA8365B324D8F74B8235B48 /* JSONHTTPClient.m in Sources */, + 8F5909852A74BE69436DD070 /* JSONKeyMapper.m in Sources */, + 8E1AE5FA00BEAC8AFAA2B331 /* JSONModel+networking.m in Sources */, + 9485712460E60EEE88CAC7F1 /* JSONModel.m in Sources */, + 53DB01B8A07B731462961681 /* JSONModelArray.m in Sources */, + CE1B2D9D23D09D355C7E07FE /* JSONModelClassProperty.m in Sources */, + 2E0CAD7ECD05DB499DB08A87 /* JSONModelError.m in Sources */, + 5396861AA4F84D5063B9B570 /* JSONValueTransformer.m in Sources */, + CECFB59C6E20B976193137D0 /* NSArray+JSONModel.m in Sources */, + 1F6FDD41776492A1FC024230 /* Pods-SwaggerClient_Tests-JSONModel-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AF5012546A593E5921B31FF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9FD38D102529F8D7D3170D67 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 82169A131417A9577A927111 /* Pods-SwaggerClient_Tests-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C1749AA5E0494F78957B7B27 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 61E0F74A03A9676D1F9B9A1A /* JSONValueTransformer+ISO8601.m in Sources */, + 4A2E86089A4A9CBC89A42217 /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m in Sources */, + D46CB83D2BFA0851BC5D2061 /* SWGApiClient.m in Sources */, + 3DDA99600B95318A88915CE5 /* SWGCategory.m in Sources */, + 895A70C08AF98E52F33DDF0D /* SWGConfiguration.m in Sources */, + 7AC10CEF01A1AEF811D131B9 /* SWGFile.m in Sources */, + E3222F4CDFB84AFDF6739CEF /* SWGJSONRequestSerializer.m in Sources */, + AAD24B3301CA60B702236DAB /* SWGJSONResponseSerializer.m in Sources */, + 0C64F018C08F817B763164B4 /* SWGMyresult.m in Sources */, + D2CB47DBB432B6BAA9C44EF6 /* SWGMythingApi.m in Sources */, + D0230521FC1F6FF0AEB25B02 /* SWGObject.m in Sources */, + 83CE0A6BC031E570966864C9 /* SWGOrder.m in Sources */, + FE2033DD10C73DF0B8267A2C /* SWGPet.m in Sources */, + 015B81A52CCCF49BCE3973BE /* SWGPetApi.m in Sources */, + 708D1BE5029DFC2517A09EDF /* SWGQueryParamCollection.m in Sources */, + EEC3C62F793F896CF5B0B8BF /* SWGStoreApi.m in Sources */, + FE705743662892EB52ADB7B9 /* SWGTag.m in Sources */, + 43EB4E01F9DBC56B8153AF88 /* SWGUser.m in Sources */, + E33D4EA8D951458DF8A05254 /* SWGUserApi.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D73538A10BDC3736D358D63A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 558377E71A2AECE6C70176A1 /* JSONAPI.m in Sources */, + 0DE7F2395E87EE714F79B368 /* JSONHTTPClient.m in Sources */, + CA78D205AB1EFA5BFB5434FD /* JSONKeyMapper.m in Sources */, + E6E0B4AD1CC2AFC6E80DAA67 /* JSONModel+networking.m in Sources */, + 1BF4F57244442FA9C0CE55BF /* JSONModel.m in Sources */, + C249634F44F546BBF6CA700F /* JSONModelArray.m in Sources */, + 3A595234403693F5B22FB680 /* JSONModelClassProperty.m in Sources */, + C1664322571F72BEDD57250C /* JSONModelError.m in Sources */, + AFFF90368E8F9EF5886C30B2 /* JSONValueTransformer.m in Sources */, + 815056BB9D281AB625FD6525 /* NSArray+JSONModel.m in Sources */, + 3B64A6FDF788A2104D9BB03D /* Pods-SwaggerClient_Example-JSONModel-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 02A00A78A8D4DBA4C494E782 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-AFNetworking"; + target = DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */; + targetProxy = BB29CEBC89A3E750582C41F4 /* PBXContainerItemProxy */; + }; + 1A0AA9815393DBD89407AF6B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-JSONModel"; + target = BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */; + targetProxy = 2F83CC8868CCC58549D23B75 /* PBXContainerItemProxy */; + }; + 1BD6424F23937FAA86565E89 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-ISO8601"; + target = EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */; + targetProxy = F2FE102F982CD5E7539DA87C /* PBXContainerItemProxy */; + }; + 2BC5F748C750AEDB54C6722D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-ISO8601"; + target = AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */; + targetProxy = 6CFF13F0D8A307887FE05E67 /* PBXContainerItemProxy */; + }; + 2C0DE9B3B72582655B86E580 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; + target = 7DCA9F990FC46BE1EFE6E984 /* Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient */; + targetProxy = A9E619AFCC2FBD32EE05B6C2 /* PBXContainerItemProxy */; + }; + 2F7257A66A460B6DD6A4EA8E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-SwaggerClient"; + target = 9A7195F471543DF0C0847DF5 /* Pods-SwaggerClient_Tests-SwaggerClient */; + targetProxy = 9B368F4D9DF66B5E965986C6 /* PBXContainerItemProxy */; + }; + 4176E190DC2EF76DC2017F30 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-ISO8601"; + target = AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */; + targetProxy = A162F62BEE1492CF1BB6A2BE /* PBXContainerItemProxy */; + }; + 5E6E70FCD4CD3DEF152EA484 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-AFNetworking"; + target = 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */; + targetProxy = 35DEFA078ABE7B02680F7475 /* PBXContainerItemProxy */; + }; + 6300704AD4301AF8D7350451 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-JSONModel"; + target = BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */; + targetProxy = 65A8E4E62B9816273B466AA8 /* PBXContainerItemProxy */; + }; + 6FC0DE2C745B1889560F6372 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-SwaggerClient"; + target = F41FA180E243133D32149CC3 /* Pods-SwaggerClient_Example-SwaggerClient */; + targetProxy = B3F82AC3BCEB16AD74AA3091 /* PBXContainerItemProxy */; + }; + 7E019665346D67BA59BD3582 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-Expecta"; + target = C215F478D13D9D22D8E1EF48 /* Pods-SwaggerClient_Tests-Expecta */; + targetProxy = 3E167B43249502B18F5351AC /* PBXContainerItemProxy */; + }; + 8BD39B4AC51572C84586390B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-Specta"; + target = 5D6776B420CF321A265D866F /* Pods-SwaggerClient_Tests-Specta */; + targetProxy = 888799CCFD2AB4A92A9B4A4D /* PBXContainerItemProxy */; + }; + B158D90617991ACE7FF89C92 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-ISO8601"; + target = EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */; + targetProxy = EF00F23BFB412FB1141D43C5 /* PBXContainerItemProxy */; + }; + B6FBD2C5C6EF1DBE5A3B8C0E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-AFNetworking"; + target = DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */; + targetProxy = BDC82344596574309B6BB2A3 /* PBXContainerItemProxy */; + }; + BFFCF1DD85CC0EBDD4A15E6F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-AFNetworking"; + target = 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */; + targetProxy = F8D1ACE4B4B9D16C36898171 /* PBXContainerItemProxy */; + }; + E5E1ECE1FCFCE7D924A5661D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-JSONModel"; + target = 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */; + targetProxy = C683E7A210CF97EA075DB68C /* PBXContainerItemProxy */; + }; + EC423479E5CD171647C2D9BE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; + target = 0302FEB4C8D5554EBF417C18 /* Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient */; + targetProxy = E244661BA566E81A5E0825C1 /* PBXContainerItemProxy */; + }; + F5D78FECB621781EB73E6197 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "Pods-SwaggerClient_Example-JSONModel"; + target = 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */; + targetProxy = F965A0DD3DF9CB139F6943BB /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 14C70FE0F9248716EE11B2CF /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 2D9DCA05584D9947769124F1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 30FCF9AEE90EB01477EEDD21 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 3C4D84B09966C1EBB9326178 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = JSONModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 3D5D5F3CF6A8D4D00622A305 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 3FC10A6D6960BC43BB20B853 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 49924A43BE9497F916594933 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = JSONModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 4C2807B49537D196CE169CC2 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A61413AE7365BA6BD1EC261F /* Pods-SwaggerClient_Tests.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwaggerClient_Tests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 5929DBB10E29005DC83A3346 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = Specta; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 6037561365806EA7912120B7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 6491E34213FA00ABA3EC3414 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + ONLY_ACTIVE_ARCH = YES; + STRIP_INSTALLED_PRODUCT = NO; + SYMROOT = "${SRCROOT}/../build"; + }; + name = Debug; + }; + 813A284274843355078ABEFF /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = ISO8601; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 837088993F8D419A5048972B /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 89426D48F1A5F252BA31BC19 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8D9F50000A71314C8478F819 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8F3972E289E9835DAB0BA58A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = Specta; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 99980674672C271843AEBE7D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1284C207920C60CCFF057D06 /* Pods-SwaggerClient_Example.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwaggerClient_Example; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 9EA376E3284FF916BB73C6C8 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = JSONModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + A1ABD38F7BB787A7BB54FC0E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + A3EF19A924851BE6C96D5843 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + BDC2F51048C85553B9DC912C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1186977B42F8F3FC21D1A7B9 /* Pods-SwaggerClient_Example.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwaggerClient_Example; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + BDECEB1160D6F35C0C30B5CB /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = ISO8601; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C13AFB5C5EFEEE7E88711C71 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = SwaggerClient; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + D6EDCE1A62BC8AC3F7F38CFF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = ISO8601; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + DDAB6F28ED3DCC0EF938E4CC /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + E0D8A215A8D61E60A12A1BFF /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = Expecta; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + E8E4045C9D79BC1F23331F37 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = Expecta; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F6419E521DC6907A23B44A37 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9771D508607ABB6410B0BF9F /* Pods-SwaggerClient_Tests.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_NAME = Pods_SwaggerClient_Tests; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F71480DA210FC6DFCC099C62 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = ISO8601; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + F970345CB4D7E00494DA2170 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_NAME = JSONModel; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 0CA4D8762B52D96C8C564237 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-AFNetworking" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6037561365806EA7912120B7 /* Debug */, + A3EF19A924851BE6C96D5843 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 0CF9A436B18EF00915610CA8 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A1ABD38F7BB787A7BB54FC0E /* Debug */, + 3FC10A6D6960BC43BB20B853 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 24A540001943BDE4C634EC51 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Specta" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 5929DBB10E29005DC83A3346 /* Debug */, + 8F3972E289E9835DAB0BA58A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 351BAE8D5BC62A097309ADC9 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 30FCF9AEE90EB01477EEDD21 /* Debug */, + 3D5D5F3CF6A8D4D00622A305 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3D7EC3A64D24B9B21CAB0CB0 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 99980674672C271843AEBE7D /* Debug */, + BDC2F51048C85553B9DC912C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 440F2EB40823B7BE6C0366BF /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-ISO8601" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 813A284274843355078ABEFF /* Debug */, + D6EDCE1A62BC8AC3F7F38CFF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 45EDD505E7F0B8B9474DB404 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-AFNetworking" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + DDAB6F28ED3DCC0EF938E4CC /* Debug */, + 89426D48F1A5F252BA31BC19 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6083D3A92D58EC4F28AE1B83 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 837088993F8D419A5048972B /* Debug */, + 2D9DCA05584D9947769124F1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 85CDE45473383342737F8E25 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-JSONModel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3C4D84B09966C1EBB9326178 /* Debug */, + 49924A43BE9497F916594933 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8F5905F41630018F867BF0DD /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-JSONModel" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F970345CB4D7E00494DA2170 /* Debug */, + 9EA376E3284FF916BB73C6C8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 99E24E8C0F51BD67AFA23E56 /* Build configuration list for PBXProject "Pods" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6491E34213FA00ABA3EC3414 /* Debug */, + 14C70FE0F9248716EE11B2CF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + B99147797FD26A68689C683E /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C13AFB5C5EFEEE7E88711C71 /* Debug */, + 8D9F50000A71314C8478F819 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + CE9D2C2EB73F81484282144B /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Expecta" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E8E4045C9D79BC1F23331F37 /* Debug */, + E0D8A215A8D61E60A12A1BFF /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D30DD5D7DFF977FDA7B6BEF1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F6419E521DC6907A23B44A37 /* Debug */, + 4C2807B49537D196CE169CC2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D60F77FE8CF69D3A0CE90DB1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-ISO8601" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F71480DA210FC6DFCC099C62 /* Debug */, + BDECEB1160D6F35C0C30B5CB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 2773EB90C58135F3C1FC4A1B /* Project object */; +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme new file mode 100644 index 00000000000..a91c8dbe5a6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme new file mode 100644 index 00000000000..ce67afc33a6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme new file mode 100644 index 00000000000..ac951f5cd52 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme new file mode 100644 index 00000000000..f605c7dd48e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme new file mode 100644 index 00000000000..98577a45b4b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme new file mode 100644 index 00000000000..c7fe2b95938 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme new file mode 100644 index 00000000000..02301b1756c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme new file mode 100644 index 00000000000..1ce43043397 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme new file mode 100644 index 00000000000..988d2641665 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme new file mode 100644 index 00000000000..19eafa3c13f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme new file mode 100644 index 00000000000..deb7ff17324 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme new file mode 100644 index 00000000000..ab0552ad3e4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme new file mode 100644 index 00000000000..81e7708f6eb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme new file mode 100644 index 00000000000..18a5bbb7e5f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 00000000000..a8522689c17 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,152 @@ + + + + + SchemeUserState + + Pods-SwaggerClient_Example-AFNetworking.xcscheme + + isShown + + + Pods-SwaggerClient_Example-ISO8601.xcscheme + + isShown + + + Pods-SwaggerClient_Example-JSONModel.xcscheme + + isShown + + + Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme + + isShown + + + Pods-SwaggerClient_Example-SwaggerClient.xcscheme + + isShown + + + Pods-SwaggerClient_Example.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-AFNetworking.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-Expecta.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-ISO8601.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-JSONModel.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-Specta.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme + + isShown + + + Pods-SwaggerClient_Tests-SwaggerClient.xcscheme + + isShown + + + Pods-SwaggerClient_Tests.xcscheme + + isShown + + + + SuppressBuildableAutocreation + + 0302FEB4C8D5554EBF417C18 + + primary + + + 3D847D51CC40CEBA17C36758 + + primary + + + 4B19C784C3E2E4F174682EE7 + + primary + + + 58684BF8E23BF0837CADD868 + + primary + + + 586988C23CE1F40608512406 + + primary + + + 5D6776B420CF321A265D866F + + primary + + + 7DCA9F990FC46BE1EFE6E984 + + primary + + + 9A7195F471543DF0C0847DF5 + + primary + + + AF87B186D8CCE5424F3A8D43 + + primary + + + BBD665C31D4B21357533473D + + primary + + + C215F478D13D9D22D8E1EF48 + + primary + + + DDC8A358588D2A3B692812B1 + + primary + + + EC89492AC5A2DC4B6E6BC599 + + primary + + + F41FA180E243133D32149CC3 + + primary + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE new file mode 100644 index 00000000000..ca257c03c5a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE @@ -0,0 +1,20 @@ +Copyright (c) 2012-2014 Specta Team. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md new file mode 100644 index 00000000000..f453a2eb6e6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md @@ -0,0 +1,176 @@ +# Specta + +A light-weight TDD / BDD framework for Objective-C. + +### Status +[![Build Status](https://travis-ci.org/specta/specta.png)](https://travis-ci.org/specta/specta) +[![Coverage Status](https://coveralls.io/repos/specta/specta/badge.svg)](https://coveralls.io/r/specta/specta) + +## FEATURES + +* An Objective-C RSpec-like BDD DSL +* Quick and easy set up +* Built on top of XCTest +* Excellent Xcode integration + +## SCREENSHOT + +![Specta Screenshot](https://raw.githubusercontent.com/specta/specta/master/misc/specta_screenshot.jpg) + +## SETUP + +Use [CocoaPods](http://github.com/CocoaPods/CocoaPods), [Carthage](https://github.com/carthage/carthage) or [Set up manually](#setting-up-manually) + +### CocoaPods + +1. Add Specta to your project's `Podfile`: + + ```ruby + target :MyApp do + # your app dependencies + end + + target :MyAppTests do + pod 'Specta', '~> 0.5' + # pod 'Expecta', '~> 0.3' # expecta matchers + # pod 'OCMock', '~> 2.2' # OCMock + # pod 'OCHamcrest', '~> 3.0' # hamcrest matchers + # pod 'OCMockito', '~> 1.0' # OCMock + # pod 'LRMocky', '~> 0.9' # LRMocky + end + ``` + +2. Run `pod update` or `pod install` in your project directory. + +### Carthage + +1. Add Specta to your project's `Cartfile.private` + + ``` + github "specta/specta" ~> 0.5 + ``` + +2. Run `carthage update` in your project directory +3. Drag the appropriate `Specta.framework` for your platform (located in Carthage/Build/) into your application’s Xcode project, and add it to your test target(s). +4. If you are building for iOS, a new `Run Script Phase` must be added to copy the framework. The instructions can be found on [Carthage's getting started instructions](https://github.com/carthage/carthage#getting-started) + +### SETTING UP MANUALLY + +1. Clone from Github. +2. Run `rake` in project root to build. +3. Add a "Cocoa/Cocoa Touch Unit Testing Bundle" target if you don't already have one. +4. Copy and add all header files in `Products` folder to the Test target in your Xcode project. +5. For **OS X projects**, copy and add `Specta.framework` in `Products/osx` folder to the test target in your Xcode project. + For **iOS projects**, copy and add `Specta.framework` in `Products/ios` folder to the test target in your Xcode project. + You can alternatively use `libSpecta.a`, if you prefer to add it as a static library for your project. (iOS 7 and below require this) +6. Add `-ObjC` and `-all_load` to the "Other Linker Flags" build setting for the test target in your Xcode project. +7. If you encounter linking issues with `_llvm_*` symbols, ensure your target's "Generate Test Coverage Files" and "Instrument Program Flow" build settings are set to `Yes`. + +## EXAMPLE + +```objective-c +#import // #import "Specta.h" if you're using libSpecta.a + +SharedExamplesBegin(MySharedExamples) +// Global shared examples are shared across all spec files. + +sharedExamplesFor(@"foo", ^(NSDictionary *data) { + __block id bar = nil; + beforeEach(^{ + bar = data[@"bar"]; + }); + it(@"should not be nil", ^{ + XCTAssertNotNil(bar); + }); +}); + +SharedExamplesEnd + +SpecBegin(Thing) + +describe(@"Thing", ^{ + sharedExamplesFor(@"another shared behavior", ^(NSDictionary *data) { + // Locally defined shared examples can override global shared examples within its scope. + }); + + beforeAll(^{ + // This is run once and only once before all of the examples + // in this group and before any beforeEach blocks. + }); + + beforeEach(^{ + // This is run before each example. + }); + + it(@"should do stuff", ^{ + // This is an example block. Place your assertions here. + }); + + it(@"should do some stuff asynchronously", ^{ + waitUntil(^(DoneCallback done) { + // Async example blocks need to invoke done() callback. + done(); + }); + }); + + itShouldBehaveLike(@"a shared behavior", @{@"key" : @"obj"}); + + itShouldBehaveLike(@"another shared behavior", ^{ + // Use a block that returns a dictionary if you need the context to be evaluated lazily, + // e.g. to use an object prepared in a beforeEach block. + return @{@"key" : @"obj"}; + }); + + describe(@"Nested examples", ^{ + it(@"should do even more stuff", ^{ + // ... + }); + }); + + pending(@"pending example"); + + pending(@"another pending example", ^{ + // ... + }); + + afterEach(^{ + // This is run after each example. + }); + + afterAll(^{ + // This is run once and only once after all of the examples + // in this group and after any afterEach blocks. + }); +}); + +SpecEnd +``` + +* `beforeEach` and `afterEach` are also aliased as `before` and `after` respectively. +* `describe` is also aliased as `context`. +* `it` is also aliased as `example` and `specify`. +* `itShouldBehaveLike` is also aliased as `itBehavesLike`. +* Use `pending` or prepend `x` to `describe`, `context`, `example`, `it`, and `specify` to mark examples or groups as pending. +* Use `^(DoneCallback done)` as shown in the example above to make examples wait for completion. `done()` callback needs to be invoked to let Specta know that your test is complete. The default timeout is 10.0 seconds but this can be changed by calling the function `setAsyncSpecTimeout(NSTimeInterval timeout)`. +* `(before|after)(Each/All)` also accept `^(DoneCallback done)`s. +* Do `#define SPT_CEDAR_SYNTAX` before importing Specta if you prefer to write `SPEC_BEGIN` and `SPEC_END` instead of `SpecBegin` and `SpecEnd`. +* Prepend `f` to your `describe`, `context`, `example`, `it`, and `specify` to set focus on examples or groups. When specs are focused, all unfocused specs are skipped. +* To use original XCTest reporter, set an environment variable named `SPECTA_REPORTER_CLASS` to `SPTXCTestReporter` in your test scheme. +* Set an environment variable `SPECTA_NO_SHUFFLE` with value `1` to disable test shuffling. +* Set an environment variable `SPECTA_SEED` to specify the random seed for test shuffling. + +Standard XCTest matchers such as `XCTAssertEqualObjects` and `XCTAssertNil` work, but you probably want to add a nicer matcher framework - [Expecta](http://github.com/specta/expecta/) to your setup. Or if you really prefer, [OCHamcrest](https://github.com/jonreid/OCHamcrest) works fine too. Also, add a mocking framework: [OCMock](http://ocmock.org/). + +## RUNNING TESTS IN COMMAND LINE + +* Run `rake test` in the cloned folder. + +## CONTRIBUTION GUIDELINES + +* Please use only spaces and indent 2 spaces at a time. +* Please prefix instance variable names with a single underscore (`_`). +* Please prefix custom classes and functions defined in the global scope with `SPT`. + +## LICENSE + +Copyright (c) 2012-2015 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE). diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h new file mode 100644 index 00000000000..adcd3b0a130 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h @@ -0,0 +1,12 @@ +#import + +@interface SPTCallSite : NSObject + +@property (nonatomic, copy, readonly) NSString *file; +@property (nonatomic, readonly) NSUInteger line; + ++ (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line; + +- (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m new file mode 100644 index 00000000000..585cecd1316 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m @@ -0,0 +1,18 @@ +#import "SPTCallSite.h" + +@implementation SPTCallSite + ++ (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line { + return [[self alloc] initWithFile:file line:line]; +} + +- (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line { + self = [super init]; + if (self) { + _file = file; + _line = line; + } + return self; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h new file mode 100644 index 00000000000..adb3aaa4331 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h @@ -0,0 +1,17 @@ +#import +#import "SpectaTypes.h" + +@interface SPTCompiledExample : NSObject + +@property (nonatomic, copy) NSString *name; +@property (nonatomic, copy) NSString *testCaseName; +@property (nonatomic, copy) SPTSpecBlock block; + +@property (nonatomic) BOOL pending; +@property (nonatomic, getter=isFocused) BOOL focused; + +@property (nonatomic) SEL testMethodSelector; + +- (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m new file mode 100644 index 00000000000..e7621655b98 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m @@ -0,0 +1,17 @@ +#import "SPTCompiledExample.h" + +@implementation SPTCompiledExample + +- (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused { + self = [super init]; + if (self) { + self.name = name; + self.testCaseName = testCaseName; + self.block = block; + self.pending = pending; + self.focused = focused; + } + return self; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h new file mode 100644 index 00000000000..849aacbccc8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h @@ -0,0 +1,17 @@ +#import +#import "SpectaTypes.h" + +@class SPTCallSite; + +@interface SPTExample : NSObject + +@property (nonatomic, copy) NSString *name; +@property (nonatomic, retain) SPTCallSite *callSite; +@property (nonatomic, copy) SPTVoidBlock block; + +@property (nonatomic) BOOL pending; +@property (nonatomic, getter=isFocused) BOOL focused; + +- (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m new file mode 100644 index 00000000000..e5905a9d874 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m @@ -0,0 +1,17 @@ +#import "SPTExample.h" + +@implementation SPTExample + +- (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block { + self = [super init]; + if (self) { + self.name = name; + self.callSite = callSite; + self.block = block; + self.focused = focused; + self.pending = block == nil; + } + return self; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h new file mode 100644 index 00000000000..f3d0060b55e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h @@ -0,0 +1,36 @@ +#import +#import +#import "SpectaTypes.h" + +@class SPTExample; +@class SPTCallSite; + +@interface SPTExampleGroup : NSObject + +@property (nonatomic, copy) NSString *name; +@property (nonatomic, strong) SPTExampleGroup *root; +@property (nonatomic, strong) SPTExampleGroup *parent; +@property (nonatomic, strong) NSMutableArray *children; +@property (nonatomic, strong) NSMutableArray *beforeAllArray; +@property (nonatomic, strong) NSMutableArray *afterAllArray; +@property (nonatomic, strong) NSMutableArray *beforeEachArray; +@property (nonatomic, strong) NSMutableArray *afterEachArray; +@property (nonatomic, strong) NSMutableDictionary *sharedExamples; +@property (nonatomic) unsigned int exampleCount; +@property (nonatomic) unsigned int ranExampleCount; +@property (nonatomic) unsigned int pendingExampleCount; +@property (nonatomic, getter=isFocused) BOOL focused; + +- (id)initWithName:(NSString *)name parent:(SPTExampleGroup *)parent root:(SPTExampleGroup *)root; + +- (SPTExampleGroup *)addExampleGroupWithName:(NSString *)name focused:(BOOL)focused; +- (SPTExample *)addExampleWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; + +- (void)addBeforeAllBlock:(SPTVoidBlock)block; +- (void)addAfterAllBlock:(SPTVoidBlock)block; +- (void)addBeforeEachBlock:(SPTVoidBlock)block; +- (void)addAfterEachBlock:(SPTVoidBlock)block; + +- (NSArray *)compileExamplesWithStack:(NSArray *)stack; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m new file mode 100644 index 00000000000..cf518004f5e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m @@ -0,0 +1,335 @@ +#import "SPTExampleGroup.h" +#import "SPTExample.h" +#import "SPTCompiledExample.h" +#import "SPTSpec.h" +#import "SpectaUtility.h" +#import "XCTest+Private.h" +#import "SPTGlobalBeforeAfterEach.h" +#import +#import + +static NSArray *ClassesWithClassMethod(SEL classMethodSelector) { + NSMutableArray *classesWithClassMethod = [[NSMutableArray alloc] init]; + + int numberOfClasses = objc_getClassList(NULL, 0); + if (numberOfClasses > 0) { + Class *classes = (Class *)malloc(sizeof(Class) *numberOfClasses); + numberOfClasses = objc_getClassList(classes, numberOfClasses); + + for(int classIndex = 0; classIndex < numberOfClasses; classIndex++) { + Class aClass = classes[classIndex]; + + if (class_conformsToProtocol(aClass, @protocol(SPTGlobalBeforeAfterEach))) { + Method globalMethod = class_getClassMethod(aClass, classMethodSelector); + if (globalMethod) { + [classesWithClassMethod addObject:aClass]; + } + } + } + + free(classes); + } + + return classesWithClassMethod; +} + +static void runExampleBlock(void (^block)(), NSString *name) { + if (!SPTIsBlock(block)) { + return; + } + + ((SPTVoidBlock)block)(); +} + +typedef NS_ENUM(NSInteger, SPTExampleGroupOrder) { + SPTExampleGroupOrderOutermostFirst = 1, + SPTExampleGroupOrderInnermostFirst +}; + +@interface SPTExampleGroup () + +- (void)incrementExampleCount; +- (void)incrementPendingExampleCount; +- (void)resetRanExampleCountIfNeeded; +- (void)incrementRanExampleCount; +- (void)runBeforeHooks:(NSString *)compiledName; +- (void)runBeforeAllHooks:(NSString *)compiledName; +- (void)runBeforeEachHooks:(NSString *)compiledName; +- (void)runAfterHooks:(NSString *)compiledName; +- (void)runAfterEachHooks:(NSString *)compiledName; +- (void)runAfterAllHooks:(NSString *)compiledName; + +@end + +@implementation SPTExampleGroup + +- (id)init { + self = [super init]; + if (self) { + self.name = nil; + self.root = nil; + self.parent = nil; + self.children = [NSMutableArray array]; + self.beforeAllArray = [NSMutableArray array]; + self.afterAllArray = [NSMutableArray array]; + self.beforeEachArray = [NSMutableArray array]; + self.afterEachArray = [NSMutableArray array]; + self.sharedExamples = [NSMutableDictionary dictionary]; + self.exampleCount = 0; + self.pendingExampleCount = 0; + self.ranExampleCount = 0; + } + return self; +} + +- (id)initWithName:(NSString *)name parent:(SPTExampleGroup *)parent root:(SPTExampleGroup *)root { + self = [self init]; + if (self) { + self.name = name; + self.parent = parent; + self.root = root; + } + return self; +} + +- (SPTExampleGroup *)addExampleGroupWithName:(NSString *)name focused:(BOOL)focused { + SPTExampleGroup *group = [[SPTExampleGroup alloc] initWithName:name parent:self root:self.root]; + group.focused = focused; + [self.children addObject:group]; + return group; +} + +- (SPTExample *)addExampleWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block { + SPTExample *example; + @synchronized(self) { + example = [[SPTExample alloc] initWithName:name callSite:callSite focused:focused block:block]; + [self.children addObject:example]; + + [self incrementExampleCount]; + if (example.pending) { + [self incrementPendingExampleCount]; + } + } + return example; +} + +- (void)incrementExampleCount { + SPTExampleGroup *group = self; + while (group != nil) { + group.exampleCount ++; + group = group.parent; + } +} + +- (void)incrementPendingExampleCount { + SPTExampleGroup *group = self; + while (group != nil) { + group.pendingExampleCount ++; + group = group.parent; + } +} + +- (void)resetRanExampleCountIfNeeded { + SPTExampleGroup *group = self; + while (group != nil) { + if (group.ranExampleCount >= group.exampleCount) { + group.ranExampleCount = 0; + } + group = group.parent; + } +} + +- (void)incrementRanExampleCount { + SPTExampleGroup *group = self; + while (group != nil) { + group.ranExampleCount ++; + group = group.parent; + } +} + +- (void)addBeforeAllBlock:(SPTVoidBlock)block { + if (!block) return; + [self.beforeAllArray addObject:[block copy]]; +} + +- (void)addAfterAllBlock:(SPTVoidBlock)block { + if (!block) return; + [self.afterAllArray addObject:[block copy]]; +} + +- (void)addBeforeEachBlock:(SPTVoidBlock)block { + if (!block) return; + [self.beforeEachArray addObject:[block copy]]; +} + +- (void)addAfterEachBlock:(SPTVoidBlock)block { + if (!block) return; + [self.afterEachArray addObject:[block copy]]; +} + +- (void)runGlobalBeforeEachHooks:(NSString *)compiledName { + static NSArray *globalBeforeEachClasses; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + globalBeforeEachClasses = ClassesWithClassMethod(@selector(beforeEach)); + }); + + for (Class class in globalBeforeEachClasses) { + [class beforeEach]; + } +} + +- (void)runGlobalAfterEachHooks:(NSString *)compiledName { + static NSArray *globalAfterEachClasses; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + globalAfterEachClasses = ClassesWithClassMethod(@selector(afterEach)); + }); + + for (Class class in globalAfterEachClasses) { + [class afterEach]; + } +} + +// Builds an array of example groups that enclose the current group. +// When in innermost-first order, the most deeply nested example groups, +// beginning with self, are placed at the beginning of the array. +// When in outermost-first order, the opposite is true, and the last +// group in the array (self) is the most deeply nested. +- (NSArray *)exampleGroupStackInOrder:(SPTExampleGroupOrder)order { + NSMutableArray *groups = [NSMutableArray array]; + SPTExampleGroup *group = self; + while (group != nil) { + switch (order) { + case SPTExampleGroupOrderOutermostFirst: + [groups insertObject:group atIndex:0]; + break; + case SPTExampleGroupOrderInnermostFirst: + [groups addObject:group]; + break; + } + group = group.parent; + } + + return [groups copy]; +} + +- (void)runBeforeHooks:(NSString *)compiledName { + [self runBeforeAllHooks:compiledName]; + [self runBeforeEachHooks:compiledName]; +} + +- (void)runBeforeAllHooks:(NSString *)compiledName { + for(SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderOutermostFirst]) { + if (group.ranExampleCount == 0) { + for (id beforeAllBlock in group.beforeAllArray) { + runExampleBlock(beforeAllBlock, [NSString stringWithFormat:@"%@ - before all block", compiledName]); + } + } + } +} + +- (void)runBeforeEachHooks:(NSString *)compiledName { + [self runGlobalBeforeEachHooks:compiledName]; + for (SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderOutermostFirst]) { + for (id beforeEachBlock in group.beforeEachArray) { + runExampleBlock(beforeEachBlock, [NSString stringWithFormat:@"%@ - before each block", compiledName]); + } + } +} + +- (void)runAfterHooks:(NSString *)compiledName { + [self runAfterEachHooks:compiledName]; + [self runAfterAllHooks:compiledName]; +} + +- (void)runAfterEachHooks:(NSString *)compiledName { + for (SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderInnermostFirst]) { + for (id afterEachBlock in group.afterEachArray) { + runExampleBlock(afterEachBlock, [NSString stringWithFormat:@"%@ - after each block", compiledName]); + } + } + [self runGlobalAfterEachHooks:compiledName]; +} + +- (void)runAfterAllHooks:(NSString *)compiledName { + for (SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderInnermostFirst]) { + if (group.ranExampleCount == group.exampleCount) { + for (id afterAllBlock in group.afterAllArray) { + runExampleBlock(afterAllBlock, [NSString stringWithFormat:@"%@ - after all block", compiledName]); + } + } + } +} + +- (BOOL)isFocusedOrHasFocusedAncestor { + SPTExampleGroup *ancestor = self; + while (ancestor != nil) { + if (ancestor.focused) { + return YES; + } else { + ancestor = ancestor.parent; + } + } + + return NO; +} + +- (NSArray *)compileExamplesWithStack:(NSArray *)stack { + BOOL groupIsFocusedOrHasFocusedAncestor = [self isFocusedOrHasFocusedAncestor]; + + NSArray *compiled = @[]; + + for(id child in self.children) { + if ([child isKindOfClass:[SPTExampleGroup class]]) { + SPTExampleGroup *group = child; + NSArray *newStack = [stack arrayByAddingObject:group]; + compiled = [compiled arrayByAddingObjectsFromArray:[group compileExamplesWithStack:newStack]]; + + } else if ([child isKindOfClass:[SPTExample class]]) { + SPTExample *example = child; + NSArray *newStack = [stack arrayByAddingObject:example]; + + NSString *compiledName = [spt_map(newStack, ^id(id obj, NSUInteger idx) { + return [obj name]; + }) componentsJoinedByString:@" "]; + + NSString *testCaseName = [spt_map(newStack, ^id(id obj, NSUInteger idx) { + return spt_underscorize([obj name]); + }) componentsJoinedByString:@"__"]; + + // If example is pending, run only before- and after-all hooks. + // Otherwise, run the example and all before and after hooks. + SPTSpecBlock compiledBlock = example.pending ? ^(SPTSpec *spec){ + @synchronized(self.root) { + [self resetRanExampleCountIfNeeded]; + [self runBeforeAllHooks:compiledName]; + [self incrementRanExampleCount]; + [self runAfterAllHooks:compiledName]; + } + } : ^(SPTSpec *spec) { + @synchronized(self.root) { + [self resetRanExampleCountIfNeeded]; + [self runBeforeHooks:compiledName]; + } + @try { + runExampleBlock(example.block, compiledName); + } + @catch(NSException *e) { + [spec spt_handleException:e]; + } + @finally { + @synchronized(self.root) { + [self incrementRanExampleCount]; + [self runAfterHooks:compiledName]; + } + } + }; + SPTCompiledExample *compiledExample = [[SPTCompiledExample alloc] initWithName:compiledName testCaseName:testCaseName block:compiledBlock pending:example.pending focused:(groupIsFocusedOrHasFocusedAncestor || example.focused)]; + compiled = [compiled arrayByAddingObject:compiledExample]; + } + } + return compiled; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h new file mode 100644 index 00000000000..9581f0bc75d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h @@ -0,0 +1,10 @@ +/* + * Copyright (c) 2015 Specta Team. All rights reserved. + */ +#import + +// This protocol was used for blacklisting classes for global beforeEach and afterEach blocks. +// Now, instead, classes are whitelisted by implementing the SPTGlobalBeforeAfterEach protocol. +__deprecated_msg("Please whitelist classes instead with the SPTGlobalBeforeAfterEach protocol") +@protocol SPTExcludeGlobalBeforeAfterEach +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h new file mode 100644 index 00000000000..490359ddf4e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h @@ -0,0 +1,15 @@ +/* + * Copyright (c) 2015 Specta Team. All rights reserved. + */ +#import + +// This protocol is used for whitelisting classes for global beforeEach and afterEach blocks. +// If you want a class to participate in those just add this protocol to a category and it will be +// included. +@protocol SPTGlobalBeforeAfterEach + +@optional ++ (void)beforeEach; ++ (void)afterEach; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h new file mode 100644 index 00000000000..090acba799d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h @@ -0,0 +1,17 @@ +#import +#import +#import + +@class _XCTestCaseImplementation; + +@class SPTExampleGroup; + +@interface SPTSharedExampleGroups : XCTestCase + ++ (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup; ++ (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup; + +- (void)sharedExampleGroups; + +@end + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m new file mode 100644 index 00000000000..35b405c10f3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m @@ -0,0 +1,74 @@ +#import "SPTSharedExampleGroups.h" +#import "SPTExampleGroup.h" +#import "SPTSpec.h" +#import "SpectaUtility.h" +#import + +NSMutableDictionary *globalSharedExampleGroups = nil; +BOOL initialized = NO; + +@implementation SPTSharedExampleGroups + ++ (void)initialize { + Class SPTSharedExampleGroupsClass = [SPTSharedExampleGroups class]; + if ([self class] == SPTSharedExampleGroupsClass) { + if (!initialized) { + initialized = YES; + globalSharedExampleGroups = [[NSMutableDictionary alloc] init]; + + Class *classes = NULL; + int numClasses = objc_getClassList(NULL, 0); + + if (numClasses > 0) { + classes = (Class *)malloc(sizeof(Class) * numClasses); + numClasses = objc_getClassList(classes, numClasses); + + Class klass, superClass; + for(uint i = 0; i < numClasses; i++) { + klass = classes[i]; + superClass = class_getSuperclass(klass); + if (superClass == SPTSharedExampleGroupsClass) { + [[[klass alloc] init] sharedExampleGroups]; + } + } + + free(classes); + } + } + } +} + ++ (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup { + (exampleGroup == nil ? globalSharedExampleGroups : exampleGroup.sharedExamples)[name] = [block copy]; +} + ++ (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup { + SPTDictionaryBlock sharedExampleGroup = nil; + while (exampleGroup != nil) { + if ((sharedExampleGroup = exampleGroup.sharedExamples[name])) { + return sharedExampleGroup; + } + exampleGroup = exampleGroup.parent; + } + return globalSharedExampleGroups[name]; +} + +- (void)sharedExampleGroups {} + +- (void)spt_handleException:(NSException *)exception { + [SPTCurrentSpec spt_handleException:exception]; +} + +- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected { + [SPTCurrentSpec recordFailureWithDescription:description inFile:filename atLine:lineNumber expected:expected]; +} + +- (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception { + [SPTCurrentSpec _recordUnexpectedFailureWithDescription:description exception:exception]; +} + +- (_XCTestCaseImplementation *)internalImplementation { + return [SPTCurrentSpec internalImplementation]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h new file mode 100644 index 00000000000..ada4ea2d717 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h @@ -0,0 +1,28 @@ +#import +#import + +@class + SPTTestSuite +, SPTCompiledExample +; + +@interface SPTSpec : XCTestCase + +@property (strong) XCTestCaseRun *spt_run; +@property (nonatomic) BOOL spt_pending; +@property (nonatomic) BOOL spt_skipped; + ++ (BOOL)spt_isDisabled; ++ (void)spt_setDisabled:(BOOL)disabled; ++ (BOOL)spt_focusedExamplesExist; ++ (SEL)spt_convertToTestMethod:(SPTCompiledExample *)example; ++ (SPTTestSuite *)spt_testSuite; ++ (void)spt_setCurrentTestSuite; ++ (void)spt_unsetCurrentTestSuite; ++ (void)spt_setCurrentTestSuiteFileName:(NSString *)fileName lineNumber:(NSUInteger)lineNumber; + +- (void)spec; +- (BOOL)spt_shouldRunExample:(SPTCompiledExample *)example; +- (void)spt_runExample:(SPTCompiledExample *)example; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m new file mode 100644 index 00000000000..76717830326 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m @@ -0,0 +1,209 @@ +#import "SPTSpec.h" +#import "SPTTestSuite.h" +#import "SPTCompiledExample.h" +#import "SPTSharedExampleGroups.h" +#import "SpectaUtility.h" +#import +#import "XCTest+Private.h" + +@implementation SPTSpec + ++ (void)initialize { + [SPTSharedExampleGroups initialize]; + SPTTestSuite *testSuite = [[SPTTestSuite alloc] init]; + SPTSpec *spec = [[[self class] alloc] init]; + NSString *specName = NSStringFromClass([self class]); + objc_setAssociatedObject(self, "spt_testSuite", testSuite, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + [self spt_setCurrentTestSuite]; + @try { + [spec spec]; + } + @catch (NSException *exception) { + fprintf(stderr, "%s: An exception has occured outside of tests, aborting.\n\n%s (%s) \n", [specName UTF8String], [[exception name] UTF8String], [[exception reason] UTF8String]); + if ([exception respondsToSelector:@selector(callStackSymbols)]) { + NSArray *callStackSymbols = [exception callStackSymbols]; + if (callStackSymbols) { + NSString *callStack = [NSString stringWithFormat:@"\n Call Stack:\n %@\n", [callStackSymbols componentsJoinedByString:@"\n "]]; + fprintf(stderr, "%s", [callStack UTF8String]); + } + } + exit(1); + } + @finally { + [self spt_unsetCurrentTestSuite]; + } + [testSuite compile]; + [super initialize]; +} + ++ (SPTTestSuite *)spt_testSuite { + return objc_getAssociatedObject(self, "spt_testSuite"); +} + ++ (BOOL)spt_isDisabled { + return [self spt_testSuite].disabled; +} + ++ (void)spt_setDisabled:(BOOL)disabled { + [self spt_testSuite].disabled = disabled; +} + ++ (NSArray *)spt_allSpecClasses { + static NSArray *allSpecClasses = nil; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + + NSMutableArray *specClasses = [[NSMutableArray alloc] init]; + + int numberOfClasses = objc_getClassList(NULL, 0); + if (numberOfClasses > 0) { + Class *classes = (Class *)malloc(sizeof(Class) * numberOfClasses); + numberOfClasses = objc_getClassList(classes, numberOfClasses); + + for (int classIndex = 0; classIndex < numberOfClasses; classIndex++) { + Class aClass = classes[classIndex]; + if (spt_isSpecClass(aClass)) { + [specClasses addObject:aClass]; + } + } + + free(classes); + } + + allSpecClasses = [specClasses copy]; + }); + + return allSpecClasses; +} + ++ (BOOL)spt_focusedExamplesExist { + for (Class specClass in [self spt_allSpecClasses]) { + SPTTestSuite *testSuite = [specClass spt_testSuite]; + if (testSuite.disabled == NO && [testSuite hasFocusedExamples]) { + return YES; + } + } + + return NO; +} + ++ (SEL)spt_convertToTestMethod:(SPTCompiledExample *)example { + @synchronized(example) { + if (!example.testMethodSelector) { + IMP imp = imp_implementationWithBlock(^(SPTSpec *self) { + [self spt_runExample:example]; + }); + + SEL sel; + unsigned int i = 0; + + do { + i++; + if (i == 1) { + sel = NSSelectorFromString([NSString stringWithFormat:@"test_%@", example.testCaseName]); + } else { + sel = NSSelectorFromString([NSString stringWithFormat:@"test_%@_%u", example.testCaseName, i]); + } + } while([self instancesRespondToSelector:sel]); + + class_addMethod(self, sel, imp, "@@:"); + example.testMethodSelector = sel; + } + } + + return example.testMethodSelector; +} + ++ (void)spt_setCurrentTestSuite { + SPTTestSuite *testSuite = [self spt_testSuite]; + [[NSThread currentThread] threadDictionary][spt_kCurrentTestSuiteKey] = testSuite; +} + ++ (void)spt_unsetCurrentTestSuite { + [[[NSThread currentThread] threadDictionary] removeObjectForKey:spt_kCurrentTestSuiteKey]; +} + ++ (void)spt_setCurrentTestSuiteFileName:(NSString *)fileName lineNumber:(NSUInteger)lineNumber { + SPTTestSuite *testSuite = [self spt_testSuite]; + testSuite.fileName = fileName; + testSuite.lineNumber = lineNumber; +} + +- (void)spec {} + +- (BOOL)spt_shouldRunExample:(SPTCompiledExample *)example { + return [[self class] spt_isDisabled] == NO && + (example.focused || [[self class] spt_focusedExamplesExist] == NO); +} + +- (void)spt_runExample:(SPTCompiledExample *)example { + [[NSThread currentThread] threadDictionary][spt_kCurrentSpecKey] = self; + + if ([self spt_shouldRunExample:example]) { + self.spt_pending = example.pending; + example.block(self); + } else if (!example.pending) { + self.spt_skipped = YES; + } + + [[[NSThread currentThread] threadDictionary] removeObjectForKey:spt_kCurrentSpecKey]; +} + +#pragma mark - XCTestCase overrides + ++ (NSArray *)testInvocations { + NSArray *compiledExamples = [self spt_testSuite].compiledExamples; + [NSMutableArray arrayWithCapacity:[compiledExamples count]]; + + NSMutableSet *addedSelectors = [NSMutableSet setWithCapacity:[compiledExamples count]]; + NSMutableArray *selectors = [NSMutableArray arrayWithCapacity:[compiledExamples count]]; + + // dynamically generate test methods with compiled examples + for (SPTCompiledExample *example in compiledExamples) { + SEL sel = [self spt_convertToTestMethod:example]; + NSString *selName = NSStringFromSelector(sel); + [selectors addObject: selName]; + [addedSelectors addObject: selName]; + } + + // look for any other test methods that may be present in class. + unsigned int n; + Method *imethods = class_copyMethodList(self, &n); + + for (NSUInteger i = 0; i < n; i++) { + struct objc_method_description *desc = method_getDescription(imethods[i]); + + char *types = desc->types; + SEL sel = desc->name; + NSString *selName = NSStringFromSelector(sel); + + if (strcmp(types, "@@:") == 0 && [selName hasPrefix:@"test"] && ![addedSelectors containsObject:selName]) { + [selectors addObject:NSStringFromSelector(sel)]; + } + } + + free(imethods); + + // create invocations from test method selectors + NSMutableArray *invocations = [NSMutableArray arrayWithCapacity:[selectors count]]; + for (NSString *selName in selectors) { + SEL sel = NSSelectorFromString(selName); + NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[self instanceMethodSignatureForSelector:sel]]; + [inv setSelector:sel]; + [invocations addObject:inv]; + } + + return spt_shuffle(invocations); +} + +- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected { + SPTSpec *currentSpec = SPTCurrentSpec; + [currentSpec.spt_run recordFailureWithDescription:description inFile:filename atLine:lineNumber expected:expected]; +} + +- (void)performTest:(XCTestRun *)run { + self.spt_run = (XCTestCaseRun *)run; + [super performTest:run]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h new file mode 100644 index 00000000000..9bd90162d5f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h @@ -0,0 +1,21 @@ +#import + +@class + SPTExample +, SPTExampleGroup +; + +@interface SPTTestSuite : NSObject + +@property (nonatomic, strong) SPTExampleGroup *rootGroup; +@property (nonatomic, strong) NSMutableArray *groupStack; +@property (nonatomic, strong) NSArray *compiledExamples; +@property (nonatomic, copy) NSString *fileName; +@property (nonatomic) NSUInteger lineNumber; +@property (nonatomic, getter = isDisabled) BOOL disabled; +@property (nonatomic) BOOL hasFocusedExamples; + +- (SPTExampleGroup *)currentGroup; +- (void)compile; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m new file mode 100644 index 00000000000..7053edd6972 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m @@ -0,0 +1,31 @@ +#import "SPTTestSuite.h" +#import "SPTExampleGroup.h" +#import "SPTCompiledExample.h" + +@implementation SPTTestSuite + +- (id)init { + self = [super init]; + if (self) { + self.rootGroup = [[SPTExampleGroup alloc] init]; + self.rootGroup.root = self.rootGroup; + self.groupStack = [NSMutableArray arrayWithObject:self.rootGroup]; + } + return self; +} + +- (SPTExampleGroup *)currentGroup { + return [self.groupStack lastObject]; +} + +- (void)compile { + self.compiledExamples = [self.rootGroup compileExamplesWithStack:@[]]; + for (SPTCompiledExample *example in self.compiledExamples) { + if (example.focused) { + self.hasFocusedExamples = YES; + break; + } + } +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h new file mode 100644 index 00000000000..dda17f915a8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h @@ -0,0 +1,14 @@ +#import +#import + +//! Project version number for Specta. +FOUNDATION_EXPORT double SpectaVersionNumber; + +//! Project version string for Specta. +FOUNDATION_EXPORT const unsigned char SpectaVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + +#import +#import +#import diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h new file mode 100644 index 00000000000..284d4f54092 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h @@ -0,0 +1,90 @@ +#import + +#define SpecBegin(name) _SPTSpecBegin(name, __FILE__, __LINE__) +#define SpecEnd _SPTSpecEnd + +#define SharedExamplesBegin(name) _SPTSharedExampleGroupsBegin(name) +#define SharedExamplesEnd _SPTSharedExampleGroupsEnd +#define SharedExampleGroupsBegin(name) _SPTSharedExampleGroupsBegin(name) +#define SharedExampleGroupsEnd _SPTSharedExampleGroupsEnd + +typedef void (^DoneCallback)(void); + +OBJC_EXTERN void describe(NSString *name, void (^block)()); +OBJC_EXTERN void fdescribe(NSString *name, void (^block)()); + +OBJC_EXTERN void context(NSString *name, void (^block)()); +OBJC_EXTERN void fcontext(NSString *name, void (^block)()); + +OBJC_EXTERN void it(NSString *name, void (^block)()); +OBJC_EXTERN void fit(NSString *name, void (^block)()); + +OBJC_EXTERN void example(NSString *name, void (^block)()); +OBJC_EXTERN void fexample(NSString *name, void (^block)()); + +OBJC_EXTERN void specify(NSString *name, void (^block)()); +OBJC_EXTERN void fspecify(NSString *name, void (^block)()); + +#define pending(...) spt_pending_(__VA_ARGS__, nil) +#define xdescribe(...) spt_pending_(__VA_ARGS__, nil) +#define xcontext(...) spt_pending_(__VA_ARGS__, nil) +#define xexample(...) spt_pending_(__VA_ARGS__, nil) +#define xit(...) spt_pending_(__VA_ARGS__, nil) +#define xspecify(...) spt_pending_(__VA_ARGS__, nil) + +OBJC_EXTERN void beforeAll(void (^block)()); +OBJC_EXTERN void afterAll(void (^block)()); + +OBJC_EXTERN void beforeEach(void (^block)()); +OBJC_EXTERN void afterEach(void (^block)()); + +OBJC_EXTERN void before(void (^block)()); +OBJC_EXTERN void after(void (^block)()); + +OBJC_EXTERN void sharedExamplesFor(NSString *name, void (^block)(NSDictionary *data)); +OBJC_EXTERN void sharedExamples(NSString *name, void (^block)(NSDictionary *data)); + +#define itShouldBehaveLike(...) spt_itShouldBehaveLike_(@(__FILE__), __LINE__, __VA_ARGS__) +#define itBehavesLike(...) spt_itShouldBehaveLike_(@(__FILE__), __LINE__, __VA_ARGS__) + +OBJC_EXTERN void waitUntil(void (^block)(DoneCallback done)); +/** + * Runs the @c block and waits until the @c done block is called or the + * @c timeout has passed. + * + * @param timeout timeout for this @c block only; does not affect the global + * timeout, as @c setAsyncSpecTimeout() does. + * @param ^block runs test code + */ +OBJC_EXTERN void waitUntilTimeout(NSTimeInterval timeout, void (^block)(DoneCallback done)); + +OBJC_EXTERN void setAsyncSpecTimeout(NSTimeInterval timeout); + +// ---------------------------------------------------------------------------- + +#define _SPTSpecBegin(name, file, line) \ +@interface name##Spec : SPTSpec \ +@end \ +@implementation name##Spec \ +- (void)spec { \ + [[self class] spt_setCurrentTestSuiteFileName:(@(file)) lineNumber:(line)]; + +#define _SPTSpecEnd \ +} \ +@end + +#define _SPTSharedExampleGroupsBegin(name) \ +@interface name##SharedExampleGroups : SPTSharedExampleGroups \ +@end \ +@implementation name##SharedExampleGroups \ +- (void)sharedExampleGroups { + +#define _SPTSharedExampleGroupsEnd \ +} \ +@end + +OBJC_EXTERN void spt_it_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()); +OBJC_EXTERN void spt_fit_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()); +OBJC_EXTERN void spt_pending_(NSString *name, ...); +OBJC_EXTERN void spt_itShouldBehaveLike_(NSString *fileName, NSUInteger lineNumber, NSString *name, id dictionaryOrBlock); +OBJC_EXTERN void spt_itShouldBehaveLike_block(NSString *fileName, NSUInteger lineNumber, NSString *name, NSDictionary *(^block)()); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m new file mode 100644 index 00000000000..10edcd56a70 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m @@ -0,0 +1,189 @@ +#import "SpectaDSL.h" +#import "SpectaTypes.h" +#import "SpectaUtility.h" +#import "SPTTestSuite.h" +#import "SPTExampleGroup.h" +#import "SPTSharedExampleGroups.h" +#import "SPTSpec.h" +#import "SPTCallSite.h" +#import + +static NSTimeInterval asyncSpecTimeout = 10.0; + +static void spt_defineItBlock(NSString *name, NSString *fileName, NSUInteger lineNumber, BOOL focused, void (^block)()) { + SPTReturnUnlessBlockOrNil(block); + SPTCallSite *site = nil; + if (lineNumber && fileName) { + site = [SPTCallSite callSiteWithFile:fileName line:lineNumber]; + } + [SPTCurrentGroup addExampleWithName:name callSite:site focused:focused block:block]; +} + +static void spt_defineDescribeBlock(NSString *name, BOOL focused, void (^block)()) { + if (block) { + [SPTGroupStack addObject:[SPTCurrentGroup addExampleGroupWithName:name focused:focused]]; + block(); + [SPTGroupStack removeLastObject]; + } else { + spt_defineItBlock(name, nil, 0, focused, nil); + } +} + +void spt_it_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()) { + spt_defineItBlock(name, fileName, lineNumber, NO, block); +} + +void spt_fit_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()) { + spt_defineItBlock(name, fileName, lineNumber, YES, block); +} + +void spt_pending_(NSString *name, ...) { + spt_defineItBlock(name, nil, 0, NO, nil); +} + +void spt_itShouldBehaveLike_(NSString *fileName, NSUInteger lineNumber, NSString *name, id dictionaryOrBlock) { + SPTDictionaryBlock block = [SPTSharedExampleGroups sharedExampleGroupWithName:name exampleGroup:SPTCurrentGroup]; + if (block) { + if (SPTIsBlock(dictionaryOrBlock)) { + id (^dataBlock)(void) = [dictionaryOrBlock copy]; + + describe(name, ^{ + __block NSMutableDictionary *dataDict = [[NSMutableDictionary alloc] init]; + + beforeEach(^{ + NSDictionary *blockData = dataBlock(); + [dataDict removeAllObjects]; + [dataDict addEntriesFromDictionary:blockData]; + }); + + block(dataDict); + + afterAll(^{ + dataDict = nil; + }); + }); + } else { + NSDictionary *data = dictionaryOrBlock; + + describe(name, ^{ + block(data); + }); + } + } else { + SPTSpec *currentSpec = SPTCurrentSpec; + if (currentSpec) { + [currentSpec recordFailureWithDescription:@"itShouldBehaveLike should not be invoked inside an example block!" inFile:fileName atLine:lineNumber expected:NO]; + } else { + it(name, ^{ + [SPTCurrentSpec recordFailureWithDescription:[NSString stringWithFormat:@"Shared example group \"%@\" does not exist.", name] inFile:fileName atLine:lineNumber expected:NO]; + }); + } + } +} + +void spt_itShouldBehaveLike_block(NSString *fileName, NSUInteger lineNumber, NSString *name, NSDictionary *(^block)()) { + spt_itShouldBehaveLike_(fileName, lineNumber, name, (id)block); +} + +void describe(NSString *name, void (^block)()) { + spt_defineDescribeBlock(name, NO, block); +} + +void fdescribe(NSString *name, void (^block)()) { + spt_defineDescribeBlock(name, YES, block); +} + +void context(NSString *name, void (^block)()) { + describe(name, block); +} + +void fcontext(NSString *name, void (^block)()) { + fdescribe(name, block); +} + +void it(NSString *name, void (^block)()) { + spt_defineItBlock(name, nil, 0, NO, block); +} + +void fit(NSString *name, void (^block)()) { + spt_defineItBlock(name, nil, 0, YES, block); +} + +void example(NSString *name, void (^block)()) { + it(name, block); +} + +void fexample(NSString *name, void (^block)()) { + fit(name, block); +} + +void specify(NSString *name, void (^block)()) { + it(name, block); +} + +void fspecify(NSString *name, void (^block)()) { + fit(name, block); +} + +void beforeAll(void (^block)()) { + SPTReturnUnlessBlockOrNil(block); + [SPTCurrentGroup addBeforeAllBlock:block]; +} + +void afterAll(void (^block)()) { + SPTReturnUnlessBlockOrNil(block); + [SPTCurrentGroup addAfterAllBlock:block]; +} + +void beforeEach(void (^block)()) { + SPTReturnUnlessBlockOrNil(block); + [SPTCurrentGroup addBeforeEachBlock:block]; +} + +void afterEach(void (^block)()) { + SPTReturnUnlessBlockOrNil(block); + [SPTCurrentGroup addAfterEachBlock:block]; +} + +void before(void (^block)()) { + beforeEach(block); +} + +void after(void (^block)()) { + afterEach(block); +} + +void sharedExamplesFor(NSString *name, void (^block)(NSDictionary *data)) { + [SPTSharedExampleGroups addSharedExampleGroupWithName:name block:block exampleGroup:SPTCurrentGroup]; +} + +void sharedExamples(NSString *name, void (^block)(NSDictionary *data)) { + sharedExamplesFor(name, block); +} + +void waitUntil(void (^block)(DoneCallback done)) { + waitUntilTimeout(asyncSpecTimeout, block); +} + +void waitUntilTimeout(NSTimeInterval timeout, void (^block)(DoneCallback done)) { + __block uint32_t complete = 0; + dispatch_async(dispatch_get_main_queue(), ^{ + block(^{ + OSAtomicOr32Barrier(1, &complete); + }); + }); + NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeout]; + while (!complete && [timeoutDate timeIntervalSinceNow] > 0) { + [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; + } + if (!complete) { + NSString *message = [NSString stringWithFormat:@"failed to invoke done() callback before timeout (%f seconds)", timeout]; + SPTSpec *currentSpec = SPTCurrentSpec; + SPTTestSuite *testSuite = [[currentSpec class] spt_testSuite]; + [currentSpec recordFailureWithDescription:message inFile:testSuite.fileName atLine:testSuite.lineNumber expected:YES]; + } +} + +void setAsyncSpecTimeout(NSTimeInterval timeout) { + asyncSpecTimeout = timeout; +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h new file mode 100644 index 00000000000..f1f0ae3eaac --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h @@ -0,0 +1,5 @@ +@class SPTSpec; + +typedef void (^SPTVoidBlock)(); +typedef void (^SPTSpecBlock)(SPTSpec *spec); +typedef void (^SPTDictionaryBlock)(NSDictionary *dictionary); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h new file mode 100644 index 00000000000..a3a8f071f5e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h @@ -0,0 +1,18 @@ +#import + +extern NSString * const spt_kCurrentTestSuiteKey; +extern NSString * const spt_kCurrentSpecKey; + +#define SPTCurrentTestSuite [[NSThread mainThread] threadDictionary][spt_kCurrentTestSuiteKey] +#define SPTCurrentSpec [[NSThread mainThread] threadDictionary][spt_kCurrentSpecKey] +#define SPTCurrentGroup [SPTCurrentTestSuite currentGroup] +#define SPTGroupStack [SPTCurrentTestSuite groupStack] + +#define SPTReturnUnlessBlockOrNil(block) if ((block) && !SPTIsBlock((block))) return; +#define SPTIsBlock(obj) [(obj) isKindOfClass:NSClassFromString(@"NSBlock")] + +BOOL spt_isSpecClass(Class aClass); +NSString *spt_underscorize(NSString *string); +NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)); +NSArray *spt_shuffle(NSArray *array); +unsigned int spt_seed(); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m new file mode 100644 index 00000000000..9b2ee804d51 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m @@ -0,0 +1,79 @@ +#import "SpectaUtility.h" +#import "SPTSpec.h" +#import + +NSString * const spt_kCurrentTestSuiteKey = @"SPTCurrentTestSuite"; +NSString * const spt_kCurrentSpecKey = @"SPTCurrentSpec"; + +static unsigned int seed = 0; + +BOOL spt_isSpecClass(Class aClass) { + Class superclass = class_getSuperclass(aClass); + while (superclass != Nil) { + if (superclass == [SPTSpec class]) { + return YES; + } else { + superclass = class_getSuperclass(superclass); + } + } + return NO; +} + +NSString *spt_underscorize(NSString *string) { + static NSMutableCharacterSet *invalidCharSet; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + invalidCharSet = [[NSMutableCharacterSet alloc] init]; + [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet controlCharacterSet]]; + [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet illegalCharacterSet]]; + [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet newlineCharacterSet]]; + [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet nonBaseCharacterSet]]; + [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; + [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]]; + }); + NSString *stripped = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + stripped = [[stripped componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""]; + + NSArray *components = [stripped componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + stripped = [[components objectsAtIndexes:[components indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { + return ![obj isEqualToString:@""]; + }]] componentsJoinedByString:@"_"]; + return stripped; +} + +NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)) { + NSMutableArray *mapped = [NSMutableArray arrayWithCapacity:[array count]]; + [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + [mapped addObject:block(obj, idx)]; + }]; + return mapped; +} + +NSArray *spt_shuffle(NSArray *array) { + if (![[[[NSProcessInfo processInfo] environment] objectForKey:@"SPECTA_SHUFFLE"] isEqualToString:@"1"]) { + return array; + } + spt_seed(); + NSMutableArray *shuffled = [array mutableCopy]; + NSUInteger count = [shuffled count]; + for (NSUInteger i = 0; i < count; i++) { + NSUInteger r = random() % count; + [shuffled exchangeObjectAtIndex:i withObjectAtIndex:r]; + } + return shuffled; +} + +unsigned int spt_seed() { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSString *envSeed = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPECTA_SEED"]; + if (envSeed) { + sscanf([envSeed UTF8String], "%u", &seed); + } else { + seed = arc4random(); + } + srandom(seed); + printf("Test Seed: %u\n", seed); + }); + return seed; +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h new file mode 100644 index 00000000000..0b83aeb2189 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h @@ -0,0 +1,40 @@ +#import + +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 + +@interface XCTestObservationCenter (SPTTestSuspention) + +- (void)_suspendObservationForBlock:(void (^)(void))block; + +@end + +#else + +@interface XCTestObservationCenter : NSObject + ++ (id)sharedObservationCenter; +- (void)_suspendObservationForBlock:(void (^)(void))block; + +@end + +#endif + +@protocol XCTestObservation +@end + +@interface _XCTestDriverTestObserver : NSObject + +- (void)stopObserving; +- (void)startObserving; + +@end + +@interface _XCTestCaseImplementation : NSObject +@end + +@interface XCTestCase () + +- (_XCTestCaseImplementation *)internalImplementation; +- (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h new file mode 100644 index 00000000000..9ca8f8ab1eb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h @@ -0,0 +1,7 @@ +#import + +@interface XCTestCase (Specta) + +- (void)spt_handleException:(NSException *)exception; + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m new file mode 100644 index 00000000000..4c503eec12a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m @@ -0,0 +1,65 @@ +#import +#import "XCTestCase+Specta.h" +#import "SPTSpec.h" +#import "SPTExample.h" +#import "SPTSharedExampleGroups.h" +#import "SpectaUtility.h" +#import "XCTest+Private.h" + +@interface XCTestCase (xct_allSubclasses) + +- (NSArray *)allSubclasses; +- (void)_dequeueFailures; + +@end + +@implementation XCTestCase (Specta) + ++ (void)load { + Method allSubclasses = class_getClassMethod(self, @selector(allSubclasses)); + Method allSubclasses_swizzle = class_getClassMethod(self , @selector(spt_allSubclasses_swizzle)); + method_exchangeImplementations(allSubclasses, allSubclasses_swizzle); + + Method dequeueFailures = class_getInstanceMethod(self, @selector(_dequeueFailures)); + Method dequeueFailures_swizzle = class_getInstanceMethod(self, @selector(spt_dequeueFailures)); + method_exchangeImplementations(dequeueFailures, dequeueFailures_swizzle); +} + ++ (NSArray *)spt_allSubclasses_swizzle { + NSArray *subclasses = [self spt_allSubclasses_swizzle]; // call original + NSMutableArray *filtered = [NSMutableArray arrayWithCapacity:[subclasses count]]; + // exclude SPTSpec base class and all subclasses of SPTSharedExampleGroups + for (id subclass in subclasses) { + if (subclass != [SPTSpec class] && ![subclass isKindOfClass:[SPTSharedExampleGroups class]]) { + [filtered addObject:subclass]; + } + } + return spt_shuffle(filtered); +} + +- (void)spt_dequeueFailures { + void(^dequeueFailures)() = ^() { + [self spt_dequeueFailures]; + }; + + if ([NSThread isMainThread]) { + dequeueFailures(); + } else { + dispatch_sync(dispatch_get_main_queue(), dequeueFailures); + } +} + +- (void)spt_handleException:(NSException *)exception { + NSString *description = [exception reason]; + if ([exception userInfo]) { + id line = [exception userInfo][@"line"]; + id file = [exception userInfo][@"file"]; + if ([line isKindOfClass:[NSNumber class]] && [file isKindOfClass:[NSString class]]) { + [self recordFailureWithDescription:description inFile:file atLine:[line unsignedIntegerValue] expected:YES]; + return; + } + } + [self _recordUnexpectedFailureWithDescription:description exception:exception]; +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist new file mode 100644 index 00000000000..45fdab38185 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.5.4 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig new file mode 100644 index 00000000000..6038dd05ec4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Example-AFNetworking.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_EXAMPLE_AFNETWORKING_OTHER_LDFLAGS} -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m new file mode 100644 index 00000000000..121351f3b6d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Example_AFNetworking : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Example_AFNetworking +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch new file mode 100644 index 00000000000..e597ce6d7a5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h new file mode 100644 index 00000000000..c0674fea370 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h @@ -0,0 +1,34 @@ +#import + +#import "AFHTTPRequestOperation.h" +#import "AFHTTPRequestOperationManager.h" +#import "AFHTTPSessionManager.h" +#import "AFNetworking.h" +#import "AFNetworkReachabilityManager.h" +#import "AFSecurityPolicy.h" +#import "AFURLConnectionOperation.h" +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFURLSessionManager.h" +#import "AFURLConnectionOperation.h" +#import "AFHTTPRequestOperation.h" +#import "AFHTTPRequestOperationManager.h" +#import "AFURLSessionManager.h" +#import "AFHTTPSessionManager.h" +#import "AFNetworkReachabilityManager.h" +#import "AFSecurityPolicy.h" +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFNetworkActivityIndicatorManager.h" +#import "UIActivityIndicatorView+AFNetworking.h" +#import "UIAlertView+AFNetworking.h" +#import "UIButton+AFNetworking.h" +#import "UIImageView+AFNetworking.h" +#import "UIKit+AFNetworking.h" +#import "UIProgressView+AFNetworking.h" +#import "UIRefreshControl+AFNetworking.h" +#import "UIWebView+AFNetworking.h" + +FOUNDATION_EXPORT double AFNetworkingVersionNumber; +FOUNDATION_EXPORT const unsigned char AFNetworkingVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap new file mode 100644 index 00000000000..27b03b27d63 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap @@ -0,0 +1,6 @@ +framework module AFNetworking { + umbrella header "Pods-SwaggerClient_Example-AFNetworking-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig new file mode 100644 index 00000000000..2062d788591 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig @@ -0,0 +1 @@ +PODS_SWAGGERCLIENT_EXAMPLE_AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist new file mode 100644 index 00000000000..08376429b62 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.3.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig new file mode 100644 index 00000000000..174001d709b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Example-ISO8601.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_EXAMPLE_ISO_____OTHER_LDFLAGS} -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m new file mode 100644 index 00000000000..d00d9499765 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Example_ISO8601 : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Example_ISO8601 +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch new file mode 100644 index 00000000000..e597ce6d7a5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h new file mode 100644 index 00000000000..cb8c2f8c323 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h @@ -0,0 +1,9 @@ +#import + +#import "ISO8601.h" +#import "ISO8601Serialization.h" +#import "NSDate+ISO8601.h" + +FOUNDATION_EXPORT double ISO8601VersionNumber; +FOUNDATION_EXPORT const unsigned char ISO8601VersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap new file mode 100644 index 00000000000..67b0fba4245 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap @@ -0,0 +1,6 @@ +framework module ISO8601 { + umbrella header "Pods-SwaggerClient_Example-ISO8601-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig new file mode 100644 index 00000000000..f5de60d3b21 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig @@ -0,0 +1 @@ +PODS_SWAGGERCLIENT_EXAMPLE_ISO_____OTHER_LDFLAGS = -framework "Foundation" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist new file mode 100644 index 00000000000..01903d77110 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig new file mode 100644 index 00000000000..7145cef6bf3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Example-JSONModel.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/JSONModel" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m new file mode 100644 index 00000000000..dad0697d0cb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Example_JSONModel : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Example_JSONModel +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch new file mode 100644 index 00000000000..e597ce6d7a5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h new file mode 100644 index 00000000000..a976352169b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h @@ -0,0 +1,17 @@ +#import + +#import "JSONModel.h" +#import "JSONModelArray.h" +#import "JSONModelClassProperty.h" +#import "JSONModelError.h" +#import "NSArray+JSONModel.h" +#import "JSONModelLib.h" +#import "JSONAPI.h" +#import "JSONHTTPClient.h" +#import "JSONModel+networking.h" +#import "JSONKeyMapper.h" +#import "JSONValueTransformer.h" + +FOUNDATION_EXPORT double JSONModelVersionNumber; +FOUNDATION_EXPORT const unsigned char JSONModelVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap new file mode 100644 index 00000000000..4282e5d525a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap @@ -0,0 +1,6 @@ +framework module JSONModel { + umbrella header "Pods-SwaggerClient_Example-JSONModel-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.xcconfig new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist new file mode 100644 index 00000000000..4ba5fa28b78 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig new file mode 100644 index 00000000000..e9a17045872 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Example-SwaggerClient.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwaggerClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m new file mode 100644 index 00000000000..4b501b10324 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Example_SwaggerClient : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Example_SwaggerClient +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch new file mode 100644 index 00000000000..e597ce6d7a5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h new file mode 100644 index 00000000000..c06b45cd7d2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h @@ -0,0 +1,24 @@ +#import + +#import "JSONValueTransformer+ISO8601.h" +#import "SWGApiClient.h" +#import "SWGCategory.h" +#import "SWGConfiguration.h" +#import "SWGFile.h" +#import "SWGJSONRequestSerializer.h" +#import "SWGJSONResponseSerializer.h" +#import "SWGMyresult.h" +#import "SWGMythingApi.h" +#import "SWGObject.h" +#import "SWGOrder.h" +#import "SWGPet.h" +#import "SWGPetApi.h" +#import "SWGQueryParamCollection.h" +#import "SWGStoreApi.h" +#import "SWGTag.h" +#import "SWGUser.h" +#import "SWGUserApi.h" + +FOUNDATION_EXPORT double SwaggerClientVersionNumber; +FOUNDATION_EXPORT const unsigned char SwaggerClientVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap new file mode 100644 index 00000000000..7abc3afbdc0 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap @@ -0,0 +1,6 @@ +framework module SwaggerClient { + umbrella header "Pods-SwaggerClient_Example-SwaggerClient-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.xcconfig new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist new file mode 100644 index 00000000000..69745425863 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown new file mode 100644 index 00000000000..3d56e061c3f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown @@ -0,0 +1,100 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## AFNetworking + +Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## ISO8601 + +Copyright (c) 2014 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +## JSONModel + +JSONModel + +Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +This code is distributed under the terms and conditions of the MIT license. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + + +## SwaggerClient + +Copyright (c) 2015 geekerzp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Generated by CocoaPods - http://cocoapods.org diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist new file mode 100644 index 00000000000..14fcac8bb22 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist @@ -0,0 +1,142 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Title + AFNetworking + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Title + ISO8601 + Type + PSGroupSpecifier + + + FooterText + JSONModel + +Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +This code is distributed under the terms and conditions of the MIT license. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + + Title + JSONModel + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2015 geekerzp <geekerzp@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Title + SwaggerClient + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m new file mode 100644 index 00000000000..8cff8be0250 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Example : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Example +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h new file mode 100644 index 00000000000..577f1da7e4c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h @@ -0,0 +1,68 @@ + +// To check if a library is compiled with CocoaPods you +// can use the `COCOAPODS` macro definition which is +// defined in the xcconfigs so it is available in +// headers also when they are imported in the client +// project. + + +// AFNetworking +#define COCOAPODS_POD_AVAILABLE_AFNetworking +#define COCOAPODS_VERSION_MAJOR_AFNetworking 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking 4 + +// AFNetworking/NSURLConnection +#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLConnection +#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLConnection 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLConnection 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLConnection 4 + +// AFNetworking/NSURLSession +#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLSession +#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLSession 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLSession 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLSession 4 + +// AFNetworking/Reachability +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Reachability +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Reachability 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Reachability 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Reachability 4 + +// AFNetworking/Security +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Security +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Security 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Security 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Security 4 + +// AFNetworking/Serialization +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Serialization +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Serialization 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Serialization 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Serialization 4 + +// AFNetworking/UIKit +#define COCOAPODS_POD_AVAILABLE_AFNetworking_UIKit +#define COCOAPODS_VERSION_MAJOR_AFNetworking_UIKit 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_UIKit 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_UIKit 4 + +// ISO8601 +#define COCOAPODS_POD_AVAILABLE_ISO8601 +#define COCOAPODS_VERSION_MAJOR_ISO8601 0 +#define COCOAPODS_VERSION_MINOR_ISO8601 3 +#define COCOAPODS_VERSION_PATCH_ISO8601 0 + +// JSONModel +#define COCOAPODS_POD_AVAILABLE_JSONModel +#define COCOAPODS_VERSION_MAJOR_JSONModel 1 +#define COCOAPODS_VERSION_MINOR_JSONModel 1 +#define COCOAPODS_VERSION_PATCH_JSONModel 0 + +// SwaggerClient +#define COCOAPODS_POD_AVAILABLE_SwaggerClient +#define COCOAPODS_VERSION_MAJOR_SwaggerClient 0 +#define COCOAPODS_VERSION_MINOR_SwaggerClient 1 +#define COCOAPODS_VERSION_PATCH_SwaggerClient 0 + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh new file mode 100755 index 00000000000..5000ed902ca --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh @@ -0,0 +1,61 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + local source="${BUILT_PRODUCTS_DIR}/Pods-SwaggerClient_Example/$1" + local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source=$(readlink "${source}") + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" ${source} ${destination}" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" "${source}" "${destination}" + # Resign the code if required by the build settings to avoid unstable apps + if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then + code_sign "${destination}/$1" + fi + + # Embed linked Swift runtime libraries + local basename + basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then + code_sign "${destination}/${lib}" + fi + done +} + +# Signs a framework with the provided identity +code_sign() { + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework 'AFNetworking.framework' + install_framework 'ISO8601.framework' + install_framework 'JSONModel.framework' + install_framework 'SwaggerClient.framework' +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework 'AFNetworking.framework' + install_framework 'ISO8601.framework' + install_framework 'JSONModel.framework' + install_framework 'SwaggerClient.framework' +fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh new file mode 100755 index 00000000000..43f08523e1c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh @@ -0,0 +1,93 @@ +#!/bin/sh +set -e + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +realpath() { + DIRECTORY=$(cd "${1%/*}" && pwd) + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + case $1 in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" + xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]]; then + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; + esac + + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h new file mode 100644 index 00000000000..ae48c113af8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_SwaggerClient_ExampleVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_SwaggerClient_ExampleVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig new file mode 100644 index 00000000000..decd9a900fe --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig @@ -0,0 +1,8 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "ISO8601" -framework "JSONModel" -framework "SwaggerClient" +OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap new file mode 100644 index 00000000000..14d347684cb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap @@ -0,0 +1,6 @@ +framework module Pods_SwaggerClient_Example { + umbrella header "Pods-SwaggerClient_Example-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig new file mode 100644 index 00000000000..decd9a900fe --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig @@ -0,0 +1,8 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "ISO8601" -framework "JSONModel" -framework "SwaggerClient" +OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist new file mode 100644 index 00000000000..45fdab38185 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.5.4 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig new file mode 100644 index 00000000000..c0dfe5e1977 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Tests-AFNetworking.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_AFNETWORKING_OTHER_LDFLAGS} -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m new file mode 100644 index 00000000000..d0c911293c3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests_AFNetworking : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests_AFNetworking +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch new file mode 100644 index 00000000000..a0fd887ec64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h new file mode 100644 index 00000000000..c0674fea370 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h @@ -0,0 +1,34 @@ +#import + +#import "AFHTTPRequestOperation.h" +#import "AFHTTPRequestOperationManager.h" +#import "AFHTTPSessionManager.h" +#import "AFNetworking.h" +#import "AFNetworkReachabilityManager.h" +#import "AFSecurityPolicy.h" +#import "AFURLConnectionOperation.h" +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFURLSessionManager.h" +#import "AFURLConnectionOperation.h" +#import "AFHTTPRequestOperation.h" +#import "AFHTTPRequestOperationManager.h" +#import "AFURLSessionManager.h" +#import "AFHTTPSessionManager.h" +#import "AFNetworkReachabilityManager.h" +#import "AFSecurityPolicy.h" +#import "AFURLRequestSerialization.h" +#import "AFURLResponseSerialization.h" +#import "AFNetworkActivityIndicatorManager.h" +#import "UIActivityIndicatorView+AFNetworking.h" +#import "UIAlertView+AFNetworking.h" +#import "UIButton+AFNetworking.h" +#import "UIImageView+AFNetworking.h" +#import "UIKit+AFNetworking.h" +#import "UIProgressView+AFNetworking.h" +#import "UIRefreshControl+AFNetworking.h" +#import "UIWebView+AFNetworking.h" + +FOUNDATION_EXPORT double AFNetworkingVersionNumber; +FOUNDATION_EXPORT const unsigned char AFNetworkingVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap new file mode 100644 index 00000000000..6000a4918ad --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap @@ -0,0 +1,6 @@ +framework module AFNetworking { + umbrella header "Pods-SwaggerClient_Tests-AFNetworking-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig new file mode 100644 index 00000000000..4ce4ab2de66 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig @@ -0,0 +1 @@ +PODS_SWAGGERCLIENT_TESTS_AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist new file mode 100644 index 00000000000..69745425863 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig new file mode 100644 index 00000000000..e18db53277d --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Tests-Expecta.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" ${PODS_SWAGGERCLIENT_TESTS_EXPECTA_FRAMEWORK_SEARCH_PATHS} +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Expecta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_EXPECTA_OTHER_LDFLAGS} -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m new file mode 100644 index 00000000000..482295da5cb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests_Expecta : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests_Expecta +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch new file mode 100644 index 00000000000..a0fd887ec64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h new file mode 100644 index 00000000000..79e13088a46 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h @@ -0,0 +1,45 @@ +#import + +#import "EXPBlockDefinedMatcher.h" +#import "EXPDefines.h" +#import "EXPDoubleTuple.h" +#import "Expecta.h" +#import "ExpectaObject.h" +#import "ExpectaSupport.h" +#import "EXPExpect.h" +#import "EXPFloatTuple.h" +#import "EXPMatcher.h" +#import "EXPUnsupportedObject.h" +#import "EXPMatcherHelpers.h" +#import "EXPMatchers+beCloseTo.h" +#import "EXPMatchers+beFalsy.h" +#import "EXPMatchers+beginWith.h" +#import "EXPMatchers+beGreaterThan.h" +#import "EXPMatchers+beGreaterThanOrEqualTo.h" +#import "EXPMatchers+beIdenticalTo.h" +#import "EXPMatchers+beInstanceOf.h" +#import "EXPMatchers+beInTheRangeOf.h" +#import "EXPMatchers+beKindOf.h" +#import "EXPMatchers+beLessThan.h" +#import "EXPMatchers+beLessThanOrEqualTo.h" +#import "EXPMatchers+beNil.h" +#import "EXPMatchers+beSubclassOf.h" +#import "EXPMatchers+beSupersetOf.h" +#import "EXPMatchers+beTruthy.h" +#import "EXPMatchers+conformTo.h" +#import "EXPMatchers+contain.h" +#import "EXPMatchers+endWith.h" +#import "EXPMatchers+equal.h" +#import "EXPMatchers+haveCountOf.h" +#import "EXPMatchers+match.h" +#import "EXPMatchers+postNotification.h" +#import "EXPMatchers+raise.h" +#import "EXPMatchers+raiseWithReason.h" +#import "EXPMatchers+respondTo.h" +#import "EXPMatchers.h" +#import "NSObject+Expecta.h" +#import "NSValue+Expecta.h" + +FOUNDATION_EXPORT double ExpectaVersionNumber; +FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap new file mode 100644 index 00000000000..6c1abefa610 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap @@ -0,0 +1,6 @@ +framework module Expecta { + umbrella header "Pods-SwaggerClient_Tests-Expecta-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig new file mode 100644 index 00000000000..2aa144b52d8 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig @@ -0,0 +1,2 @@ +PODS_SWAGGERCLIENT_TESTS_EXPECTA_FRAMEWORK_SEARCH_PATHS = $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" "$(SDKROOT)/Developer/Library/Frameworks" +PODS_SWAGGERCLIENT_TESTS_EXPECTA_OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist new file mode 100644 index 00000000000..08376429b62 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.3.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig new file mode 100644 index 00000000000..ed2be536d46 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Tests-ISO8601.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_ISO_____OTHER_LDFLAGS} -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m new file mode 100644 index 00000000000..11ef219610c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests_ISO8601 : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests_ISO8601 +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch new file mode 100644 index 00000000000..a0fd887ec64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h new file mode 100644 index 00000000000..cb8c2f8c323 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h @@ -0,0 +1,9 @@ +#import + +#import "ISO8601.h" +#import "ISO8601Serialization.h" +#import "NSDate+ISO8601.h" + +FOUNDATION_EXPORT double ISO8601VersionNumber; +FOUNDATION_EXPORT const unsigned char ISO8601VersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap new file mode 100644 index 00000000000..9b57225fa7b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap @@ -0,0 +1,6 @@ +framework module ISO8601 { + umbrella header "Pods-SwaggerClient_Tests-ISO8601-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig new file mode 100644 index 00000000000..d9702176287 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig @@ -0,0 +1 @@ +PODS_SWAGGERCLIENT_TESTS_ISO_____OTHER_LDFLAGS = -framework "Foundation" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist new file mode 100644 index 00000000000..01903d77110 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig new file mode 100644 index 00000000000..ba2e6833224 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Tests-JSONModel.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/JSONModel" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m new file mode 100644 index 00000000000..448bc3508f5 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests_JSONModel : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests_JSONModel +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch new file mode 100644 index 00000000000..a0fd887ec64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h new file mode 100644 index 00000000000..a976352169b --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h @@ -0,0 +1,17 @@ +#import + +#import "JSONModel.h" +#import "JSONModelArray.h" +#import "JSONModelClassProperty.h" +#import "JSONModelError.h" +#import "NSArray+JSONModel.h" +#import "JSONModelLib.h" +#import "JSONAPI.h" +#import "JSONHTTPClient.h" +#import "JSONModel+networking.h" +#import "JSONKeyMapper.h" +#import "JSONValueTransformer.h" + +FOUNDATION_EXPORT double JSONModelVersionNumber; +FOUNDATION_EXPORT const unsigned char JSONModelVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap new file mode 100644 index 00000000000..fe2c58e963a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap @@ -0,0 +1,6 @@ +framework module JSONModel { + umbrella header "Pods-SwaggerClient_Tests-JSONModel-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist new file mode 100644 index 00000000000..98bb3e157b3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.2 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig new file mode 100644 index 00000000000..d5415cec587 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Tests-Specta.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" ${PODS_SWAGGERCLIENT_TESTS_SPECTA_FRAMEWORK_SEARCH_PATHS} +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Specta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_SPECTA_OTHER_LDFLAGS} -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m new file mode 100644 index 00000000000..45689da3374 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests_Specta : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests_Specta +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch new file mode 100644 index 00000000000..a0fd887ec64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h new file mode 100644 index 00000000000..c6cc903818a --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h @@ -0,0 +1,21 @@ +#import + +#import "Specta.h" +#import "SpectaDSL.h" +#import "SpectaTypes.h" +#import "SpectaUtility.h" +#import "SPTCallSite.h" +#import "SPTCompiledExample.h" +#import "SPTExample.h" +#import "SPTExampleGroup.h" +#import "SPTExcludeGlobalBeforeAfterEach.h" +#import "SPTGlobalBeforeAfterEach.h" +#import "SPTSharedExampleGroups.h" +#import "SPTSpec.h" +#import "SPTTestSuite.h" +#import "XCTest+Private.h" +#import "XCTestCase+Specta.h" + +FOUNDATION_EXPORT double SpectaVersionNumber; +FOUNDATION_EXPORT const unsigned char SpectaVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap new file mode 100644 index 00000000000..3c36f0e1733 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap @@ -0,0 +1,6 @@ +framework module Specta { + umbrella header "Pods-SwaggerClient_Tests-Specta-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig new file mode 100644 index 00000000000..23ae7b74d46 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig @@ -0,0 +1,2 @@ +PODS_SWAGGERCLIENT_TESTS_SPECTA_FRAMEWORK_SEARCH_PATHS = $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" "$(SDKROOT)/Developer/Library/Frameworks" +PODS_SWAGGERCLIENT_TESTS_SPECTA_OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist new file mode 100644 index 00000000000..4ba5fa28b78 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig new file mode 100644 index 00000000000..1a0bff64c1f --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig @@ -0,0 +1,9 @@ +#include "Pods-SwaggerClient_Tests-SwaggerClient.xcconfig" +CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH +FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwaggerClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" +OTHER_LDFLAGS = -ObjC +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT} +SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m new file mode 100644 index 00000000000..2ffbcb3c277 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests_SwaggerClient : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests_SwaggerClient +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch new file mode 100644 index 00000000000..a0fd887ec64 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch @@ -0,0 +1,5 @@ +#ifdef __OBJC__ +#import +#endif + +#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h new file mode 100644 index 00000000000..c06b45cd7d2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h @@ -0,0 +1,24 @@ +#import + +#import "JSONValueTransformer+ISO8601.h" +#import "SWGApiClient.h" +#import "SWGCategory.h" +#import "SWGConfiguration.h" +#import "SWGFile.h" +#import "SWGJSONRequestSerializer.h" +#import "SWGJSONResponseSerializer.h" +#import "SWGMyresult.h" +#import "SWGMythingApi.h" +#import "SWGObject.h" +#import "SWGOrder.h" +#import "SWGPet.h" +#import "SWGPetApi.h" +#import "SWGQueryParamCollection.h" +#import "SWGStoreApi.h" +#import "SWGTag.h" +#import "SWGUser.h" +#import "SWGUserApi.h" + +FOUNDATION_EXPORT double SwaggerClientVersionNumber; +FOUNDATION_EXPORT const unsigned char SwaggerClientVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap new file mode 100644 index 00000000000..8f68ac79d83 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap @@ -0,0 +1,6 @@ +framework module SwaggerClient { + umbrella header "Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig new file mode 100644 index 00000000000..e69de29bb2d diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist new file mode 100644 index 00000000000..69745425863 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + org.cocoapods.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown new file mode 100644 index 00000000000..cfedc7b5ebb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown @@ -0,0 +1,147 @@ +# Acknowledgements +This application makes use of the following third party libraries: + +## AFNetworking + +Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## Expecta + +Copyright (c) 2011-2015 Specta Team - https://github.com/specta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## ISO8601 + +Copyright (c) 2014 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + +## JSONModel + +JSONModel + +Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +This code is distributed under the terms and conditions of the MIT license. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + + +## Specta + +Copyright (c) 2012-2014 Specta Team. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + +## SwaggerClient + +Copyright (c) 2015 geekerzp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +Generated by CocoaPods - http://cocoapods.org diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist new file mode 100644 index 00000000000..33f0788f6e2 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist @@ -0,0 +1,197 @@ + + + + + PreferenceSpecifiers + + + FooterText + This application makes use of the following third party libraries: + Title + Acknowledgements + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Title + AFNetworking + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2011-2015 Specta Team - https://github.com/specta + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Title + Expecta + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2014 Sam Soffes, http://soff.es + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + Title + ISO8601 + Type + PSGroupSpecifier + + + FooterText + JSONModel + +Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. +This code is distributed under the terms and conditions of the MIT license. + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in the +Software without restriction, including without limitation the rights to use, copy, +modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, +and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A +PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF +CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE +OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense + + Title + JSONModel + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2012-2014 Specta Team. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + + Title + Specta + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2015 geekerzp <geekerzp@gmail.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + Title + SwaggerClient + Type + PSGroupSpecifier + + + FooterText + Generated by CocoaPods - http://cocoapods.org + Title + + Type + PSGroupSpecifier + + + StringsTable + Acknowledgements + Title + Acknowledgements + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m new file mode 100644 index 00000000000..3070d921688 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_Pods_SwaggerClient_Tests : NSObject +@end +@implementation PodsDummy_Pods_SwaggerClient_Tests +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h new file mode 100644 index 00000000000..3705e69c6fb --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h @@ -0,0 +1,80 @@ + +// To check if a library is compiled with CocoaPods you +// can use the `COCOAPODS` macro definition which is +// defined in the xcconfigs so it is available in +// headers also when they are imported in the client +// project. + + +// AFNetworking +#define COCOAPODS_POD_AVAILABLE_AFNetworking +#define COCOAPODS_VERSION_MAJOR_AFNetworking 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking 4 + +// AFNetworking/NSURLConnection +#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLConnection +#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLConnection 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLConnection 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLConnection 4 + +// AFNetworking/NSURLSession +#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLSession +#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLSession 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLSession 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLSession 4 + +// AFNetworking/Reachability +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Reachability +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Reachability 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Reachability 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Reachability 4 + +// AFNetworking/Security +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Security +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Security 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Security 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Security 4 + +// AFNetworking/Serialization +#define COCOAPODS_POD_AVAILABLE_AFNetworking_Serialization +#define COCOAPODS_VERSION_MAJOR_AFNetworking_Serialization 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_Serialization 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_Serialization 4 + +// AFNetworking/UIKit +#define COCOAPODS_POD_AVAILABLE_AFNetworking_UIKit +#define COCOAPODS_VERSION_MAJOR_AFNetworking_UIKit 2 +#define COCOAPODS_VERSION_MINOR_AFNetworking_UIKit 5 +#define COCOAPODS_VERSION_PATCH_AFNetworking_UIKit 4 + +// Expecta +#define COCOAPODS_POD_AVAILABLE_Expecta +#define COCOAPODS_VERSION_MAJOR_Expecta 1 +#define COCOAPODS_VERSION_MINOR_Expecta 0 +#define COCOAPODS_VERSION_PATCH_Expecta 0 + +// ISO8601 +#define COCOAPODS_POD_AVAILABLE_ISO8601 +#define COCOAPODS_VERSION_MAJOR_ISO8601 0 +#define COCOAPODS_VERSION_MINOR_ISO8601 3 +#define COCOAPODS_VERSION_PATCH_ISO8601 0 + +// JSONModel +#define COCOAPODS_POD_AVAILABLE_JSONModel +#define COCOAPODS_VERSION_MAJOR_JSONModel 1 +#define COCOAPODS_VERSION_MINOR_JSONModel 1 +#define COCOAPODS_VERSION_PATCH_JSONModel 0 + +// Specta +#define COCOAPODS_POD_AVAILABLE_Specta +#define COCOAPODS_VERSION_MAJOR_Specta 1 +#define COCOAPODS_VERSION_MINOR_Specta 0 +#define COCOAPODS_VERSION_PATCH_Specta 2 + +// SwaggerClient +#define COCOAPODS_POD_AVAILABLE_SwaggerClient +#define COCOAPODS_VERSION_MAJOR_SwaggerClient 0 +#define COCOAPODS_VERSION_MINOR_SwaggerClient 1 +#define COCOAPODS_VERSION_PATCH_SwaggerClient 0 + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh new file mode 100755 index 00000000000..12a617f5427 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh @@ -0,0 +1,65 @@ +#!/bin/sh +set -e + +echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" +mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + +SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" + +install_framework() +{ + local source="${BUILT_PRODUCTS_DIR}/Pods-SwaggerClient_Tests/$1" + local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + + if [ -L "${source}" ]; then + echo "Symlinked..." + source=$(readlink "${source}") + fi + + # use filter instead of exclude so missing patterns dont' throw errors + echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" ${source} ${destination}" + rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" "${source}" "${destination}" + # Resign the code if required by the build settings to avoid unstable apps + if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then + code_sign "${destination}/$1" + fi + + # Embed linked Swift runtime libraries + local basename + basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) + local swift_runtime_libs + swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) + for lib in $swift_runtime_libs; do + echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" + rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" + if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then + code_sign "${destination}/${lib}" + fi + done +} + +# Signs a framework with the provided identity +code_sign() { + # Use the current code_sign_identitiy + echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" + echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" + /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" +} + + +if [[ "$CONFIGURATION" == "Debug" ]]; then + install_framework 'AFNetworking.framework' + install_framework 'Expecta.framework' + install_framework 'ISO8601.framework' + install_framework 'JSONModel.framework' + install_framework 'Specta.framework' + install_framework 'SwaggerClient.framework' +fi +if [[ "$CONFIGURATION" == "Release" ]]; then + install_framework 'AFNetworking.framework' + install_framework 'Expecta.framework' + install_framework 'ISO8601.framework' + install_framework 'JSONModel.framework' + install_framework 'Specta.framework' + install_framework 'SwaggerClient.framework' +fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh new file mode 100755 index 00000000000..43f08523e1c --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh @@ -0,0 +1,93 @@ +#!/bin/sh +set -e + +mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" + +RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt +> "$RESOURCES_TO_COPY" + +XCASSET_FILES=() + +realpath() { + DIRECTORY=$(cd "${1%/*}" && pwd) + FILENAME="${1##*/}" + echo "$DIRECTORY/$FILENAME" +} + +install_resource() +{ + case $1 in + *.storyboard) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.xib) + echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" + ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" + ;; + *.framework) + echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" + ;; + *.xcdatamodel) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" + ;; + *.xcdatamodeld) + echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" + xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" + ;; + *.xcmappingmodel) + echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" + xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" + ;; + *.xcassets) + ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") + XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") + ;; + /*) + echo "$1" + echo "$1" >> "$RESOURCES_TO_COPY" + ;; + *) + echo "${PODS_ROOT}/$1" + echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" + ;; + esac +} + +rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +if [[ "${ACTION}" == "install" ]]; then + rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi +rm -f "$RESOURCES_TO_COPY" + +if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] +then + case "${TARGETED_DEVICE_FAMILY}" in + 1,2) + TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" + ;; + 1) + TARGET_DEVICE_ARGS="--target-device iphone" + ;; + 2) + TARGET_DEVICE_ARGS="--target-device ipad" + ;; + *) + TARGET_DEVICE_ARGS="--target-device mac" + ;; + esac + + # Find all other xcassets (this unfortunately includes those of path pods and other targets). + OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) + while read line; do + if [[ $line != "`realpath $PODS_ROOT`*" ]]; then + XCASSET_FILES+=("$line") + fi + done <<<"$OTHER_XCASSETS" + + printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" +fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h new file mode 100644 index 00000000000..a7d41120961 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h @@ -0,0 +1,6 @@ +#import + + +FOUNDATION_EXPORT double Pods_SwaggerClient_TestsVersionNumber; +FOUNDATION_EXPORT const unsigned char Pods_SwaggerClient_TestsVersionString[]; + diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig new file mode 100644 index 00000000000..fe70161b278 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig @@ -0,0 +1,8 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Expecta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Specta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "Expecta" -framework "ISO8601" -framework "JSONModel" -framework "Specta" -framework "SwaggerClient" +OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap new file mode 100644 index 00000000000..9701f82c7d4 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap @@ -0,0 +1,6 @@ +framework module Pods_SwaggerClient_Tests { + umbrella header "Pods-SwaggerClient_Tests-umbrella.h" + + export * + module * { export * } +} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig new file mode 100644 index 00000000000..fe70161b278 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig @@ -0,0 +1,8 @@ +FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' +OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Expecta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Specta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" +OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "Expecta" -framework "ISO8601" -framework "JSONModel" -framework "Specta" -framework "SwaggerClient" +OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) +PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests +PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj new file mode 100644 index 00000000000..5e768ade5c6 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -0,0 +1,630 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 32FA3CA96E7FC5D792D203F8 /* Pods_SwaggerClient_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; + 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; + 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; + 6003F598195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F596195388D20070C39A /* InfoPlist.strings */; }; + 6003F59A195388D20070C39A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F599195388D20070C39A /* main.m */; }; + 6003F59E195388D20070C39A /* SWGAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F59D195388D20070C39A /* SWGAppDelegate.m */; }; + 6003F5A7195388D20070C39A /* SWGViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5A6195388D20070C39A /* SWGViewController.m */; }; + 6003F5A9195388D20070C39A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5A8195388D20070C39A /* Images.xcassets */; }; + 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F5AF195388D20070C39A /* XCTest.framework */; }; + 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; + 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; + 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; }; + 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; }; + 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; + 9A44FA36F7AE066E0FA82C4E /* Pods_SwaggerClient_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1D1ECCC8D1A8BE115A67138 /* Pods_SwaggerClient_Tests.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + CFDFB4121B3CFFA8009739C5 /* UserApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */; }; + CFDFB4131B3CFFDD009739C5 /* PetApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */; }; + CFDFB4141B3CFFF6009739C5 /* StoreApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */; }; + CFDFB4151B3D000B009739C5 /* SWGApiClientTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40C1B3CFEC3009739C5 /* SWGApiClientTest.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 6003F5B3195388D20070C39A /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6003F582195388D10070C39A /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6003F589195388D20070C39A; + remoteInfo = SwaggerClient; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 06B47F8BDBE73A9C03BFBEA2 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; + 1A81C3BE3E54961CD827EAE3 /* Pods-SwaggerClient_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig"; sourceTree = ""; }; + 4CCE21315897B7D544C83242 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; + 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 6003F58A195388D20070C39A /* SwaggerClient_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 6003F591195388D20070C39A /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 6003F595195388D20070C39A /* SwaggerClient-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "SwaggerClient-Info.plist"; sourceTree = ""; }; + 6003F597195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 6003F599195388D20070C39A /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 6003F59B195388D20070C39A /* SwaggerClient-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwaggerClient-Prefix.pch"; sourceTree = ""; }; + 6003F59C195388D20070C39A /* SWGAppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SWGAppDelegate.h; sourceTree = ""; }; + 6003F59D195388D20070C39A /* SWGAppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SWGAppDelegate.m; sourceTree = ""; }; + 6003F5A5195388D20070C39A /* SWGViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SWGViewController.h; sourceTree = ""; }; + 6003F5A6195388D20070C39A /* SWGViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SWGViewController.m; sourceTree = ""; }; + 6003F5A8195388D20070C39A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 6003F5AE195388D20070C39A /* SwaggerClient_Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClient_Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 6003F5AF195388D20070C39A /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; + 6003F5B7195388D20070C39A /* Tests-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Tests-Info.plist"; sourceTree = ""; }; + 6003F5B9195388D20070C39A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 6003F5BB195388D20070C39A /* Tests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Tests.m; sourceTree = ""; }; + 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = ""; }; + 73CCD82196AABD64F2807C7B /* Pods-SwaggerClient_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig"; sourceTree = ""; }; + 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; + B1D1ECCC8D1A8BE115A67138 /* Pods_SwaggerClient_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + BFB4BE760737508B3CFC23B2 /* Pods-SwaggerClient_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig"; sourceTree = ""; }; + CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PetApiTest.m; sourceTree = ""; }; + CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreApiTest.m; sourceTree = ""; }; + CFDFB40C1B3CFEC3009739C5 /* SWGApiClientTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SWGApiClientTest.m; sourceTree = ""; }; + CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserApiTest.m; sourceTree = ""; }; + E445A633FA767F207D7EE6CE /* Pods-SwaggerClient_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig"; sourceTree = ""; }; + E9675D953C6DCDE71A1BDFD4 /* SwaggerClient.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SwaggerClient.podspec; path = ../SwaggerClient.podspec; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6003F587195388D20070C39A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, + 6003F592195388D20070C39A /* UIKit.framework in Frameworks */, + 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, + 32FA3CA96E7FC5D792D203F8 /* Pods_SwaggerClient_Example.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6003F5AB195388D20070C39A /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */, + 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */, + 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */, + 9A44FA36F7AE066E0FA82C4E /* Pods_SwaggerClient_Tests.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 6003F581195388D10070C39A = { + isa = PBXGroup; + children = ( + 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */, + 6003F593195388D20070C39A /* Example for SwaggerClient */, + 6003F5B5195388D20070C39A /* Tests */, + 6003F58C195388D20070C39A /* Frameworks */, + 6003F58B195388D20070C39A /* Products */, + CCE77F10C6D41F74B075ECD0 /* Pods */, + ); + sourceTree = ""; + }; + 6003F58B195388D20070C39A /* Products */ = { + isa = PBXGroup; + children = ( + 6003F58A195388D20070C39A /* SwaggerClient_Example.app */, + 6003F5AE195388D20070C39A /* SwaggerClient_Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 6003F58C195388D20070C39A /* Frameworks */ = { + isa = PBXGroup; + children = ( + 6003F58D195388D20070C39A /* Foundation.framework */, + 6003F58F195388D20070C39A /* CoreGraphics.framework */, + 6003F591195388D20070C39A /* UIKit.framework */, + 6003F5AF195388D20070C39A /* XCTest.framework */, + 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */, + B1D1ECCC8D1A8BE115A67138 /* Pods_SwaggerClient_Tests.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 6003F593195388D20070C39A /* Example for SwaggerClient */ = { + isa = PBXGroup; + children = ( + 6003F59C195388D20070C39A /* SWGAppDelegate.h */, + 6003F59D195388D20070C39A /* SWGAppDelegate.m */, + 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */, + 6003F5A5195388D20070C39A /* SWGViewController.h */, + 6003F5A6195388D20070C39A /* SWGViewController.m */, + 6003F5A8195388D20070C39A /* Images.xcassets */, + 6003F594195388D20070C39A /* Supporting Files */, + ); + name = "Example for SwaggerClient"; + path = SwaggerClient; + sourceTree = ""; + }; + 6003F594195388D20070C39A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 6003F595195388D20070C39A /* SwaggerClient-Info.plist */, + 6003F596195388D20070C39A /* InfoPlist.strings */, + 6003F599195388D20070C39A /* main.m */, + 6003F59B195388D20070C39A /* SwaggerClient-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 6003F5B5195388D20070C39A /* Tests */ = { + isa = PBXGroup; + children = ( + CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */, + CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */, + CFDFB40C1B3CFEC3009739C5 /* SWGApiClientTest.m */, + CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */, + 6003F5BB195388D20070C39A /* Tests.m */, + 6003F5B6195388D20070C39A /* Supporting Files */, + ); + path = Tests; + sourceTree = ""; + }; + 6003F5B6195388D20070C39A /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 6003F5B7195388D20070C39A /* Tests-Info.plist */, + 6003F5B8195388D20070C39A /* InfoPlist.strings */, + 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + 60FF7A9C1954A5C5007DD14C /* Podspec Metadata */ = { + isa = PBXGroup; + children = ( + E9675D953C6DCDE71A1BDFD4 /* SwaggerClient.podspec */, + 4CCE21315897B7D544C83242 /* README.md */, + 06B47F8BDBE73A9C03BFBEA2 /* LICENSE */, + ); + name = "Podspec Metadata"; + sourceTree = ""; + }; + CCE77F10C6D41F74B075ECD0 /* Pods */ = { + isa = PBXGroup; + children = ( + E445A633FA767F207D7EE6CE /* Pods-SwaggerClient_Example.debug.xcconfig */, + BFB4BE760737508B3CFC23B2 /* Pods-SwaggerClient_Example.release.xcconfig */, + 73CCD82196AABD64F2807C7B /* Pods-SwaggerClient_Tests.debug.xcconfig */, + 1A81C3BE3E54961CD827EAE3 /* Pods-SwaggerClient_Tests.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6003F589195388D20070C39A /* SwaggerClient_Example */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "SwaggerClient_Example" */; + buildPhases = ( + 799E7E29D924C30424DFBA28 /* Check Pods Manifest.lock */, + 6003F586195388D20070C39A /* Sources */, + 6003F587195388D20070C39A /* Frameworks */, + 6003F588195388D20070C39A /* Resources */, + CFCA721F9D6FBA792A2E917F /* Embed Pods Frameworks */, + 429AF5C69E165ED75311B4B0 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = SwaggerClient_Example; + productName = SwaggerClient; + productReference = 6003F58A195388D20070C39A /* SwaggerClient_Example.app */; + productType = "com.apple.product-type.application"; + }; + 6003F5AD195388D20070C39A /* SwaggerClient_Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "SwaggerClient_Tests" */; + buildPhases = ( + 7B069562A9F91E498732474F /* Check Pods Manifest.lock */, + 6003F5AA195388D20070C39A /* Sources */, + 6003F5AB195388D20070C39A /* Frameworks */, + 6003F5AC195388D20070C39A /* Resources */, + 373B17801C82424AA96FEEFA /* Embed Pods Frameworks */, + E337D7E459CCFFDF27046FFC /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + 6003F5B4195388D20070C39A /* PBXTargetDependency */, + ); + name = SwaggerClient_Tests; + productName = SwaggerClientTests; + productReference = 6003F5AE195388D20070C39A /* SwaggerClient_Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6003F582195388D10070C39A /* Project object */ = { + isa = PBXProject; + attributes = { + CLASSPREFIX = SWG; + LastUpgradeCheck = 0510; + ORGANIZATIONNAME = geekerzp; + TargetAttributes = { + 6003F5AD195388D20070C39A = { + TestTargetID = 6003F589195388D20070C39A; + }; + }; + }; + buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "SwaggerClient" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 6003F581195388D10070C39A; + productRefGroup = 6003F58B195388D20070C39A /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 6003F589195388D20070C39A /* SwaggerClient_Example */, + 6003F5AD195388D20070C39A /* SwaggerClient_Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 6003F588195388D20070C39A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */, + 6003F5A9195388D20070C39A /* Images.xcassets in Resources */, + 6003F598195388D20070C39A /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6003F5AC195388D20070C39A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 373B17801C82424AA96FEEFA /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 429AF5C69E165ED75311B4B0 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 799E7E29D924C30424DFBA28 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 7B069562A9F91E498732474F /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + CFCA721F9D6FBA792A2E917F /* Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Embed Pods Frameworks"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + E337D7E459CCFFDF27046FFC /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6003F586195388D20070C39A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6003F59E195388D20070C39A /* SWGAppDelegate.m in Sources */, + 6003F5A7195388D20070C39A /* SWGViewController.m in Sources */, + 6003F59A195388D20070C39A /* main.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6003F5AA195388D20070C39A /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CFDFB4141B3CFFF6009739C5 /* StoreApiTest.m in Sources */, + CFDFB4131B3CFFDD009739C5 /* PetApiTest.m in Sources */, + 6003F5BC195388D20070C39A /* Tests.m in Sources */, + CFDFB4151B3D000B009739C5 /* SWGApiClientTest.m in Sources */, + CFDFB4121B3CFFA8009739C5 /* UserApiTest.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 6003F5B4195388D20070C39A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6003F589195388D20070C39A /* SwaggerClient_Example */; + targetProxy = 6003F5B3195388D20070C39A /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 6003F596195388D20070C39A /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 6003F597195388D20070C39A /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 6003F5B8195388D20070C39A /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 6003F5B9195388D20070C39A /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 6003F5BD195388D20070C39A /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 6003F5BE195388D20070C39A /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 7.1; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 6003F5C0195388D20070C39A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E445A633FA767F207D7EE6CE /* Pods-SwaggerClient_Example.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SwaggerClient/SwaggerClient-Prefix.pch"; + INFOPLIST_FILE = "SwaggerClient/SwaggerClient-Info.plist"; + MODULE_NAME = ExampleApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 6003F5C1195388D20070C39A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = BFB4BE760737508B3CFC23B2 /* Pods-SwaggerClient_Example.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SwaggerClient/SwaggerClient-Prefix.pch"; + INFOPLIST_FILE = "SwaggerClient/SwaggerClient-Info.plist"; + MODULE_NAME = ExampleApp; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; + 6003F5C3195388D20070C39A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 73CCD82196AABD64F2807C7B /* Pods-SwaggerClient_Tests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = "Tests/Tests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient_Example.app/SwaggerClient_Example"; + WRAPPER_EXTENSION = xctest; + }; + name = Debug; + }; + 6003F5C4195388D20070C39A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 1A81C3BE3E54961CD827EAE3 /* Pods-SwaggerClient_Tests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + "$(DEVELOPER_FRAMEWORKS_DIR)", + ); + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; + INFOPLIST_FILE = "Tests/Tests-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient_Example.app/SwaggerClient_Example"; + WRAPPER_EXTENSION = xctest; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6003F585195388D10070C39A /* Build configuration list for PBXProject "SwaggerClient" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6003F5BD195388D20070C39A /* Debug */, + 6003F5BE195388D20070C39A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6003F5BF195388D20070C39A /* Build configuration list for PBXNativeTarget "SwaggerClient_Example" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6003F5C0195388D20070C39A /* Debug */, + 6003F5C1195388D20070C39A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6003F5C2195388D20070C39A /* Build configuration list for PBXNativeTarget "SwaggerClient_Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6003F5C3195388D20070C39A /* Debug */, + 6003F5C4195388D20070C39A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6003F582195388D10070C39A /* Project object */; +} diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 68% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata index 59618cad9c0..13bdd8ab8b7 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -2,6 +2,6 @@ + location = "self:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient-Example.xcscheme similarity index 66% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient-Example.xcscheme index f79c2dc99ab..d34e508f438 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient.xcscheme +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/xcshareddata/xcschemes/SwaggerClient-Example.xcscheme @@ -1,6 +1,6 @@ - - - - @@ -46,9 +32,9 @@ skipped = "NO"> @@ -56,9 +42,9 @@ @@ -76,9 +62,9 @@ runnableDebuggingMode = "0"> @@ -95,9 +81,9 @@ runnableDebuggingMode = "0"> diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist similarity index 60% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist index 163c84ef64d..adfa137d3e3 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient.xcodeproj/xcuserdata/tony.xcuserdatad/xcschemes/xcschememanagement.plist +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist @@ -2,22 +2,14 @@ - SchemeUserState - - PetstoreClient.xcscheme - - orderHint - 0 - - SuppressBuildableAutocreation - EA6699951811D2FA00A70D03 + 6003F589195388D20070C39A primary - EA6699B91811D2FB00A70D03 + 6003F5AD195388D20070C39A primary diff --git a/samples/client/petstore/objc/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata similarity index 73% rename from samples/client/petstore/objc/SwaggerClient.xcworkspace/contents.xcworkspacedata rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata index 4fa5c7f565b..9b3fa18954f 100644 --- a/samples/client/petstore/objc/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata @@ -2,7 +2,7 @@ + location = "group:SwaggerClient.xcodeproj"> diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..ddc6d5bd9aac719d8834d040581a3436a73792c8 GIT binary patch literal 16390 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 + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.h b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.h new file mode 100644 index 00000000000..eb867594fde --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.h @@ -0,0 +1,15 @@ +// +// SWGAppDelegate.h +// SwaggerClient +// +// Created by CocoaPods on 06/26/2015. +// Copyright (c) 2014 geekerzp. All rights reserved. +// + +@import UIKit; + +@interface SWGAppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.m b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.m similarity index 90% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.m rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.m index a63c7d1ad89..492c6026d6b 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/AppDelegate.m +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGAppDelegate.m @@ -1,14 +1,14 @@ // -// AppDelegate.m -// PetstoreClient +// SWGAppDelegate.m +// SwaggerClient // -// Created by Tony Tam on 10/18/13. -// Copyright (c) 2015 SmartBear Software. All rights reserved. +// Created by CocoaPods on 06/26/2015. +// Copyright (c) 2014 geekerzp. All rights reserved. // -#import "AppDelegate.h" +#import "SWGAppDelegate.h" -@implementation AppDelegate +@implementation SWGAppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.h b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.h new file mode 100644 index 00000000000..7847f2d05b1 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.h @@ -0,0 +1,13 @@ +// +// SWGViewController.h +// SwaggerClient +// +// Created by geekerzp on 06/26/2015. +// Copyright (c) 2014 geekerzp. All rights reserved. +// + +@import UIKit; + +@interface SWGViewController : UIViewController + +@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m new file mode 100644 index 00000000000..a56f31408aa --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SWGViewController.m @@ -0,0 +1,29 @@ +// +// SWGViewController.m +// SwaggerClient +// +// Created by geekerzp on 06/26/2015. +// Copyright (c) 2014 geekerzp. All rights reserved. +// + +#import "SWGViewController.h" + +@interface SWGViewController () + +@end + +@implementation SWGViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/SwaggerClient-Info.plist b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SwaggerClient-Info.plist similarity index 89% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient/SwaggerClient-Info.plist rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SwaggerClient-Info.plist index 7296c17fbf8..d2cd320c27d 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/SwaggerClient-Info.plist +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SwaggerClient-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.reverb.${PRODUCT_NAME:rfc1034identifier} + org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -25,9 +25,7 @@ LSRequiresIPhoneOS UIMainStoryboardFile - Main_iPhone - UIMainStoryboardFile~ipad - Main_iPad + Main UIRequiredDeviceCapabilities armv7 diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/SwaggerClient-Prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SwaggerClient-Prefix.pch similarity index 69% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient/SwaggerClient-Prefix.pch rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SwaggerClient-Prefix.pch index 80b02fc3cad..7825372cbdd 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/SwaggerClient-Prefix.pch +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/SwaggerClient-Prefix.pch @@ -11,7 +11,6 @@ #endif #ifdef __OBJC__ - #import - #import - #import + @import UIKit; + @import Foundation; #endif diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClient/en.lproj/InfoPlist.strings b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/en.lproj/InfoPlist.strings similarity index 100% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClient/en.lproj/InfoPlist.strings rename to samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/en.lproj/InfoPlist.strings diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/main.m b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/main.m new file mode 100644 index 00000000000..4a47f1fd69e --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient/main.m @@ -0,0 +1,17 @@ +// +// main.m +// SwaggerClient +// +// Created by geekerzp on 06/26/2015. +// Copyright (c) 2014 geekerzp. All rights reserved. +// + +@import UIKit; +#import "SWGAppDelegate.h" + +int main(int argc, char * argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([SWGAppDelegate class])); + } +} diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m similarity index 97% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.m rename to samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m index 5b5f145cc12..64527d1abcb 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/PetApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m @@ -1,5 +1,14 @@ -#import "PetApiTest.h" -#import "SWGFile.h" +#import +#import +#import +#import + +@interface PetApiTest : XCTestCase { +@private + SWGPetApi * api; +} + +@end @implementation PetApiTest diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/SWGApiClientTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m similarity index 98% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/SWGApiClientTest.m rename to samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m index c68b3e2a42e..00c6bf70da6 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/SWGApiClientTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/SWGApiClientTest.m @@ -1,7 +1,7 @@ #import #import -#import "SWGApiClient.h" -#import "SWGConfiguration.h" +#import +#import @interface SWGApiClientTest : XCTestCase diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/StoreApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/StoreApiTest.m similarity index 95% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/StoreApiTest.m rename to samples/client/petstore/objc/SwaggerClientTests/Tests/StoreApiTest.m index d2864afe51d..9a250e1cb3a 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/StoreApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/StoreApiTest.m @@ -1,6 +1,6 @@ #import #import -#import "SWGStoreApi.h" +#import @interface StoreApiTest : XCTestCase diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/SwaggerClientTests-Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Info.plist similarity index 89% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/SwaggerClientTests-Info.plist rename to samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Info.plist index f445ddd474d..41520eda89e 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/SwaggerClientTests-Info.plist +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - com.reverb.${PRODUCT_NAME:rfc1034identifier} + org.cocoapods.demo.${PRODUCT_NAME:rfc1034identifier} CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch new file mode 100644 index 00000000000..b84cd591234 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch @@ -0,0 +1,8 @@ +// The contents of this file are implicitly included at the beginning of every test case source file. + +#ifdef __OBJC__ + + @import Specta; + @import Expecta; + +#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests.m new file mode 100644 index 00000000000..527c8abd348 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests.m @@ -0,0 +1,52 @@ +// +// SwaggerClientTests.m +// SwaggerClientTests +// +// Created by geekerzp on 06/26/2015. +// Copyright (c) 2015 geekerzp. All rights reserved. +// + +// https://github.com/Specta/Specta + +/** + * show cases for Specta + ** + +SpecBegin(InitialSpecs) + +describe(@"these will fail", ^{ + + it(@"can do maths", ^{ + expect(1).to.equal(2); + }); + + it(@"can read", ^{ + expect(@"number").to.equal(@"string"); + }); + + it(@"will wait for 10 seconds and fail", ^{ + waitUntil(^(DoneCallback done) { + + }); + }); +}); + +describe(@"these will pass", ^{ + + it(@"can do maths", ^{ + expect(1).beLessThan(23); + }); + + it(@"can read", ^{ + expect(@"team").toNot.contain(@"I"); + }); + + it(@"will wait and succeed", ^{ + waitUntil(^(DoneCallback done) { + done(); + }); + }); +}); + +SpecEnd +*/ diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/UserApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/UserApiTest.m similarity index 97% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/UserApiTest.m rename to samples/client/petstore/objc/SwaggerClientTests/Tests/UserApiTest.m index b703797a280..620a6922e9f 100644 --- a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/UserApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/UserApiTest.m @@ -1,6 +1,6 @@ #import #import -#import "SWGUserApi.h" +#import @interface UserApiTest : XCTestCase diff --git a/samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/en.lproj/InfoPlist.strings b/samples/client/petstore/objc/SwaggerClientTests/Tests/en.lproj/InfoPlist.strings similarity index 100% rename from samples/client/petstore/objc/SwaggerClient/SwaggerClientTests/en.lproj/InfoPlist.strings rename to samples/client/petstore/objc/SwaggerClientTests/Tests/en.lproj/InfoPlist.strings From e244d201522d1b6f9e0a8967d6105e3c3c14ecbd Mon Sep 17 00:00:00 2001 From: geekerzp Date: Sat, 27 Jun 2015 12:07:34 +0800 Subject: [PATCH 11/22] Remove lib files. --- .gitignore | 6 +- .../codegen/languages/ObjcClientCodegen.java | 53 +- ...-body.mustache => ApiClient-body.mustache} | 0 ...der.mustache => ApiClient-header.mustache} | 0 ...y.mustache => Configuration-body.mustache} | 0 ...mustache => Configuration-header.mustache} | 0 .../objc/{SWGFile.m => File-body.mustache} | 0 .../objc/{SWGFile.h => File-header.mustache} | 0 ...he => JSONRequestSerializer-body.mustache} | 0 ... => JSONRequestSerializer-header.mustache} | 0 ...e => JSONResponseSerializer-body.mustache} | 0 ...=> JSONResponseSerializer-header.mustache} | 0 .../{SWGObject.m => Object-body.mustache} | 0 .../{SWGObject.h => Object-header.mustache} | 0 ...n.m => QueryParamCollection-body.mustache} | 0 ...h => QueryParamCollection-header.mustache} | 0 .../src/main/resources/objc/api-body.mustache | 10 +- .../petstore/objc/SwaggerClient.podspec | 39 +- .../objc/SwaggerClient/SWGApiClient.h | 2 +- .../petstore/objc/SwaggerClient/SWGPet.h | 4 +- .../petstore/objc/SwaggerClient/SWGPetApi.h | 4 +- .../petstore/objc/SwaggerClient/SWGPetApi.m | 4 +- .../petstore/objc/SwaggerClient/SWGStoreApi.h | 2 +- .../petstore/objc/SwaggerClient/SWGStoreApi.m | 2 +- .../petstore/objc/SwaggerClient/SWGUserApi.h | 2 +- .../petstore/objc/SwaggerClient/SWGUserApi.m | 2 +- .../objc/SwaggerClientTests/Podfile.lock | 49 - .../AFNetworking/AFHTTPRequestOperation.h | 66 - .../AFNetworking/AFHTTPRequestOperation.m | 206 - .../AFHTTPRequestOperationManager.h | 323 -- .../AFHTTPRequestOperationManager.m | 284 -- .../AFNetworking/AFHTTPSessionManager.h | 247 -- .../AFNetworking/AFHTTPSessionManager.m | 321 -- .../AFNetworkReachabilityManager.h | 200 - .../AFNetworkReachabilityManager.m | 259 -- .../AFNetworking/AFNetworking/AFNetworking.h | 44 - .../AFNetworking/AFSecurityPolicy.h | 142 - .../AFNetworking/AFSecurityPolicy.m | 308 -- .../AFNetworking/AFURLConnectionOperation.h | 343 -- .../AFNetworking/AFURLConnectionOperation.m | 788 ---- .../AFNetworking/AFURLRequestSerialization.h | 467 --- .../AFNetworking/AFURLRequestSerialization.m | 1384 ------- .../AFNetworking/AFURLResponseSerialization.h | 309 -- .../AFNetworking/AFURLResponseSerialization.m | 797 ---- .../AFNetworking/AFURLSessionManager.h | 546 --- .../AFNetworking/AFURLSessionManager.m | 1156 ------ .../Pods/AFNetworking/LICENSE | 19 - .../Pods/AFNetworking/README.md | 385 -- .../AFNetworkActivityIndicatorManager.h | 75 - .../AFNetworkActivityIndicatorManager.m | 172 - .../UIActivityIndicatorView+AFNetworking.h | 63 - .../UIActivityIndicatorView+AFNetworking.m | 96 - .../UIAlertView+AFNetworking.h | 95 - .../UIAlertView+AFNetworking.m | 141 - .../UIButton+AFNetworking.h | 180 - .../UIButton+AFNetworking.m | 293 -- .../UIImageView+AFNetworking.h | 142 - .../UIImageView+AFNetworking.m | 215 -- .../UIKit+AFNetworking/UIKit+AFNetworking.h | 38 - .../UIProgressView+AFNetworking.h | 87 - .../UIProgressView+AFNetworking.m | 182 - .../UIRefreshControl+AFNetworking.h | 64 - .../UIRefreshControl+AFNetworking.m | 93 - .../UIWebView+AFNetworking.h | 82 - .../UIWebView+AFNetworking.m | 159 - .../Expecta/Expecta/EXPBlockDefinedMatcher.h | 25 - .../Expecta/Expecta/EXPBlockDefinedMatcher.m | 60 - .../Pods/Expecta/Expecta/EXPDefines.h | 17 - .../Pods/Expecta/Expecta/EXPDoubleTuple.h | 13 - .../Pods/Expecta/Expecta/EXPDoubleTuple.m | 42 - .../Pods/Expecta/Expecta/EXPExpect.h | 45 - .../Pods/Expecta/Expecta/EXPExpect.m | 214 -- .../Pods/Expecta/Expecta/EXPFloatTuple.h | 13 - .../Pods/Expecta/Expecta/EXPFloatTuple.m | 52 - .../Pods/Expecta/Expecta/EXPMatcher.h | 20 - .../Expecta/Expecta/EXPUnsupportedObject.h | 11 - .../Expecta/Expecta/EXPUnsupportedObject.m | 20 - .../Pods/Expecta/Expecta/Expecta.h | 15 - .../Pods/Expecta/Expecta/ExpectaObject.h | 18 - .../Pods/Expecta/Expecta/ExpectaObject.m | 15 - .../Pods/Expecta/Expecta/ExpectaSupport.h | 73 - .../Pods/Expecta/Expecta/ExpectaSupport.m | 176 - .../Expecta/Matchers/EXPMatcherHelpers.h | 4 - .../Expecta/Matchers/EXPMatcherHelpers.m | 9 - .../Expecta/Matchers/EXPMatchers+beCloseTo.h | 7 - .../Expecta/Matchers/EXPMatchers+beCloseTo.m | 49 - .../Expecta/Matchers/EXPMatchers+beFalsy.h | 3 - .../Expecta/Matchers/EXPMatchers+beFalsy.m | 24 - .../Matchers/EXPMatchers+beGreaterThan.h | 6 - .../Matchers/EXPMatchers+beGreaterThan.m | 20 - .../EXPMatchers+beGreaterThanOrEqualTo.h | 6 - .../EXPMatchers+beGreaterThanOrEqualTo.m | 20 - .../Matchers/EXPMatchers+beIdenticalTo.h | 10 - .../Matchers/EXPMatchers+beIdenticalTo.m | 24 - .../Matchers/EXPMatchers+beInTheRangeOf.h | 6 - .../Matchers/EXPMatchers+beInTheRangeOf.m | 30 - .../Matchers/EXPMatchers+beInstanceOf.h | 6 - .../Matchers/EXPMatchers+beInstanceOf.m | 31 - .../Expecta/Matchers/EXPMatchers+beKindOf.h | 4 - .../Expecta/Matchers/EXPMatchers+beKindOf.m | 29 - .../Expecta/Matchers/EXPMatchers+beLessThan.h | 6 - .../Expecta/Matchers/EXPMatchers+beLessThan.m | 20 - .../EXPMatchers+beLessThanOrEqualTo.h | 6 - .../EXPMatchers+beLessThanOrEqualTo.m | 20 - .../Expecta/Matchers/EXPMatchers+beNil.h | 4 - .../Expecta/Matchers/EXPMatchers+beNil.m | 18 - .../Matchers/EXPMatchers+beSubclassOf.h | 4 - .../Matchers/EXPMatchers+beSubclassOf.m | 29 - .../Matchers/EXPMatchers+beSupersetOf.h | 4 - .../Matchers/EXPMatchers+beSupersetOf.m | 62 - .../Expecta/Matchers/EXPMatchers+beTruthy.h | 3 - .../Expecta/Matchers/EXPMatchers+beTruthy.m | 24 - .../Expecta/Matchers/EXPMatchers+beginWith.h | 4 - .../Expecta/Matchers/EXPMatchers+beginWith.m | 51 - .../Expecta/Matchers/EXPMatchers+conformTo.h | 3 - .../Expecta/Matchers/EXPMatchers+conformTo.m | 33 - .../Expecta/Matchers/EXPMatchers+contain.h | 5 - .../Expecta/Matchers/EXPMatchers+contain.m | 38 - .../Expecta/Matchers/EXPMatchers+endWith.h | 3 - .../Expecta/Matchers/EXPMatchers+endWith.m | 49 - .../Expecta/Matchers/EXPMatchers+equal.h | 5 - .../Expecta/Matchers/EXPMatchers+equal.m | 31 - .../Matchers/EXPMatchers+haveCountOf.h | 10 - .../Matchers/EXPMatchers+haveCountOf.m | 42 - .../Expecta/Matchers/EXPMatchers+match.h | 3 - .../Expecta/Matchers/EXPMatchers+match.m | 38 - .../Matchers/EXPMatchers+postNotification.h | 4 - .../Matchers/EXPMatchers+postNotification.m | 88 - .../Expecta/Matchers/EXPMatchers+raise.h | 4 - .../Expecta/Matchers/EXPMatchers+raise.m | 30 - .../Matchers/EXPMatchers+raiseWithReason.h | 3 - .../Matchers/EXPMatchers+raiseWithReason.m | 35 - .../Expecta/Matchers/EXPMatchers+respondTo.h | 3 - .../Expecta/Matchers/EXPMatchers+respondTo.m | 28 - .../Expecta/Expecta/Matchers/EXPMatchers.h | 25 - .../Pods/Expecta/Expecta/NSObject+Expecta.h | 10 - .../Pods/Expecta/Expecta/NSValue+Expecta.h | 7 - .../Pods/Expecta/Expecta/NSValue+Expecta.m | 21 - .../SwaggerClientTests/Pods/Expecta/LICENSE | 19 - .../SwaggerClientTests/Pods/Expecta/README.md | 293 -- .../AFNetworking/AFHTTPRequestOperation.h | 1 - .../AFHTTPRequestOperationManager.h | 1 - .../AFNetworking/AFHTTPSessionManager.h | 1 - .../AFNetworkActivityIndicatorManager.h | 1 - .../AFNetworkReachabilityManager.h | 1 - .../Private/AFNetworking/AFNetworking.h | 1 - .../Private/AFNetworking/AFSecurityPolicy.h | 1 - .../AFNetworking/AFURLConnectionOperation.h | 1 - .../AFNetworking/AFURLRequestSerialization.h | 1 - .../AFNetworking/AFURLResponseSerialization.h | 1 - .../AFNetworking/AFURLSessionManager.h | 1 - .../UIActivityIndicatorView+AFNetworking.h | 1 - .../AFNetworking/UIAlertView+AFNetworking.h | 1 - .../AFNetworking/UIButton+AFNetworking.h | 1 - .../AFNetworking/UIImageView+AFNetworking.h | 1 - .../Private/AFNetworking/UIKit+AFNetworking.h | 1 - .../UIProgressView+AFNetworking.h | 1 - .../UIRefreshControl+AFNetworking.h | 1 - .../AFNetworking/UIWebView+AFNetworking.h | 1 - .../Private/Expecta/EXPBlockDefinedMatcher.h | 1 - .../Pods/Headers/Private/Expecta/EXPDefines.h | 1 - .../Headers/Private/Expecta/EXPDoubleTuple.h | 1 - .../Pods/Headers/Private/Expecta/EXPExpect.h | 1 - .../Headers/Private/Expecta/EXPFloatTuple.h | 1 - .../Pods/Headers/Private/Expecta/EXPMatcher.h | 1 - .../Private/Expecta/EXPMatcherHelpers.h | 1 - .../Private/Expecta/EXPMatchers+beCloseTo.h | 1 - .../Private/Expecta/EXPMatchers+beFalsy.h | 1 - .../Expecta/EXPMatchers+beGreaterThan.h | 1 - .../EXPMatchers+beGreaterThanOrEqualTo.h | 1 - .../Expecta/EXPMatchers+beIdenticalTo.h | 1 - .../Expecta/EXPMatchers+beInTheRangeOf.h | 1 - .../Expecta/EXPMatchers+beInstanceOf.h | 1 - .../Private/Expecta/EXPMatchers+beKindOf.h | 1 - .../Private/Expecta/EXPMatchers+beLessThan.h | 1 - .../Expecta/EXPMatchers+beLessThanOrEqualTo.h | 1 - .../Private/Expecta/EXPMatchers+beNil.h | 1 - .../Expecta/EXPMatchers+beSubclassOf.h | 1 - .../Expecta/EXPMatchers+beSupersetOf.h | 1 - .../Private/Expecta/EXPMatchers+beTruthy.h | 1 - .../Private/Expecta/EXPMatchers+beginWith.h | 1 - .../Private/Expecta/EXPMatchers+conformTo.h | 1 - .../Private/Expecta/EXPMatchers+contain.h | 1 - .../Private/Expecta/EXPMatchers+endWith.h | 1 - .../Private/Expecta/EXPMatchers+equal.h | 1 - .../Private/Expecta/EXPMatchers+haveCountOf.h | 1 - .../Private/Expecta/EXPMatchers+match.h | 1 - .../Expecta/EXPMatchers+postNotification.h | 1 - .../Private/Expecta/EXPMatchers+raise.h | 1 - .../Expecta/EXPMatchers+raiseWithReason.h | 1 - .../Private/Expecta/EXPMatchers+respondTo.h | 1 - .../Headers/Private/Expecta/EXPMatchers.h | 1 - .../Private/Expecta/EXPUnsupportedObject.h | 1 - .../Pods/Headers/Private/Expecta/Expecta.h | 1 - .../Headers/Private/Expecta/ExpectaObject.h | 1 - .../Headers/Private/Expecta/ExpectaSupport.h | 1 - .../Private/Expecta/NSObject+Expecta.h | 1 - .../Headers/Private/Expecta/NSValue+Expecta.h | 1 - .../Pods/Headers/Private/ISO8601/ISO8601.h | 1 - .../Private/ISO8601/ISO8601Serialization.h | 1 - .../Headers/Private/ISO8601/NSDate+ISO8601.h | 1 - .../Pods/Headers/Private/JSONModel/JSONAPI.h | 1 - .../Private/JSONModel/JSONHTTPClient.h | 1 - .../Headers/Private/JSONModel/JSONKeyMapper.h | 1 - .../Private/JSONModel/JSONModel+networking.h | 1 - .../Headers/Private/JSONModel/JSONModel.h | 1 - .../Private/JSONModel/JSONModelArray.h | 1 - .../JSONModel/JSONModelClassProperty.h | 1 - .../Private/JSONModel/JSONModelError.h | 1 - .../Headers/Private/JSONModel/JSONModelLib.h | 1 - .../Private/JSONModel/JSONValueTransformer.h | 1 - .../Private/JSONModel/NSArray+JSONModel.h | 1 - .../Pods/Headers/Private/Specta/SPTCallSite.h | 1 - .../Private/Specta/SPTCompiledExample.h | 1 - .../Pods/Headers/Private/Specta/SPTExample.h | 1 - .../Headers/Private/Specta/SPTExampleGroup.h | 1 - .../Specta/SPTExcludeGlobalBeforeAfterEach.h | 1 - .../Private/Specta/SPTGlobalBeforeAfterEach.h | 1 - .../Private/Specta/SPTSharedExampleGroups.h | 1 - .../Pods/Headers/Private/Specta/SPTSpec.h | 1 - .../Headers/Private/Specta/SPTTestSuite.h | 1 - .../Pods/Headers/Private/Specta/Specta.h | 1 - .../Pods/Headers/Private/Specta/SpectaDSL.h | 1 - .../Pods/Headers/Private/Specta/SpectaTypes.h | 1 - .../Headers/Private/Specta/SpectaUtility.h | 1 - .../Headers/Private/Specta/XCTest+Private.h | 1 - .../Private/Specta/XCTestCase+Specta.h | 1 - .../JSONValueTransformer+ISO8601.h | 1 - .../Private/SwaggerClient/SWGApiClient.h | 1 - .../Private/SwaggerClient/SWGCategory.h | 1 - .../Private/SwaggerClient/SWGConfiguration.h | 1 - .../Headers/Private/SwaggerClient/SWGFile.h | 1 - .../SwaggerClient/SWGJSONRequestSerializer.h | 1 - .../SwaggerClient/SWGJSONResponseSerializer.h | 1 - .../Private/SwaggerClient/SWGMyresult.h | 1 - .../Private/SwaggerClient/SWGMythingApi.h | 1 - .../Headers/Private/SwaggerClient/SWGObject.h | 1 - .../Headers/Private/SwaggerClient/SWGOrder.h | 1 - .../Headers/Private/SwaggerClient/SWGPet.h | 1 - .../Headers/Private/SwaggerClient/SWGPetApi.h | 1 - .../SwaggerClient/SWGQueryParamCollection.h | 1 - .../Private/SwaggerClient/SWGStoreApi.h | 1 - .../Headers/Private/SwaggerClient/SWGTag.h | 1 - .../Headers/Private/SwaggerClient/SWGUser.h | 1 - .../Private/SwaggerClient/SWGUserApi.h | 1 - .../AFNetworking/AFHTTPRequestOperation.h | 1 - .../AFHTTPRequestOperationManager.h | 1 - .../AFNetworking/AFHTTPSessionManager.h | 1 - .../AFNetworkActivityIndicatorManager.h | 1 - .../AFNetworkReachabilityManager.h | 1 - .../Public/AFNetworking/AFNetworking.h | 1 - .../Public/AFNetworking/AFSecurityPolicy.h | 1 - .../AFNetworking/AFURLConnectionOperation.h | 1 - .../AFNetworking/AFURLRequestSerialization.h | 1 - .../AFNetworking/AFURLResponseSerialization.h | 1 - .../Public/AFNetworking/AFURLSessionManager.h | 1 - .../UIActivityIndicatorView+AFNetworking.h | 1 - .../AFNetworking/UIAlertView+AFNetworking.h | 1 - .../AFNetworking/UIButton+AFNetworking.h | 1 - .../AFNetworking/UIImageView+AFNetworking.h | 1 - .../Public/AFNetworking/UIKit+AFNetworking.h | 1 - .../UIProgressView+AFNetworking.h | 1 - .../UIRefreshControl+AFNetworking.h | 1 - .../AFNetworking/UIWebView+AFNetworking.h | 1 - .../Public/Expecta/EXPBlockDefinedMatcher.h | 1 - .../Pods/Headers/Public/Expecta/EXPDefines.h | 1 - .../Headers/Public/Expecta/EXPDoubleTuple.h | 1 - .../Pods/Headers/Public/Expecta/EXPExpect.h | 1 - .../Headers/Public/Expecta/EXPFloatTuple.h | 1 - .../Pods/Headers/Public/Expecta/EXPMatcher.h | 1 - .../Public/Expecta/EXPMatcherHelpers.h | 1 - .../Public/Expecta/EXPMatchers+beCloseTo.h | 1 - .../Public/Expecta/EXPMatchers+beFalsy.h | 1 - .../Expecta/EXPMatchers+beGreaterThan.h | 1 - .../EXPMatchers+beGreaterThanOrEqualTo.h | 1 - .../Expecta/EXPMatchers+beIdenticalTo.h | 1 - .../Expecta/EXPMatchers+beInTheRangeOf.h | 1 - .../Public/Expecta/EXPMatchers+beInstanceOf.h | 1 - .../Public/Expecta/EXPMatchers+beKindOf.h | 1 - .../Public/Expecta/EXPMatchers+beLessThan.h | 1 - .../Expecta/EXPMatchers+beLessThanOrEqualTo.h | 1 - .../Public/Expecta/EXPMatchers+beNil.h | 1 - .../Public/Expecta/EXPMatchers+beSubclassOf.h | 1 - .../Public/Expecta/EXPMatchers+beSupersetOf.h | 1 - .../Public/Expecta/EXPMatchers+beTruthy.h | 1 - .../Public/Expecta/EXPMatchers+beginWith.h | 1 - .../Public/Expecta/EXPMatchers+conformTo.h | 1 - .../Public/Expecta/EXPMatchers+contain.h | 1 - .../Public/Expecta/EXPMatchers+endWith.h | 1 - .../Public/Expecta/EXPMatchers+equal.h | 1 - .../Public/Expecta/EXPMatchers+haveCountOf.h | 1 - .../Public/Expecta/EXPMatchers+match.h | 1 - .../Expecta/EXPMatchers+postNotification.h | 1 - .../Public/Expecta/EXPMatchers+raise.h | 1 - .../Expecta/EXPMatchers+raiseWithReason.h | 1 - .../Public/Expecta/EXPMatchers+respondTo.h | 1 - .../Pods/Headers/Public/Expecta/EXPMatchers.h | 1 - .../Public/Expecta/EXPUnsupportedObject.h | 1 - .../Pods/Headers/Public/Expecta/Expecta.h | 1 - .../Headers/Public/Expecta/ExpectaObject.h | 1 - .../Headers/Public/Expecta/ExpectaSupport.h | 1 - .../Headers/Public/Expecta/NSObject+Expecta.h | 1 - .../Headers/Public/Expecta/NSValue+Expecta.h | 1 - .../Pods/Headers/Public/ISO8601/ISO8601.h | 1 - .../Public/ISO8601/ISO8601Serialization.h | 1 - .../Headers/Public/ISO8601/NSDate+ISO8601.h | 1 - .../Pods/Headers/Public/JSONModel/JSONAPI.h | 1 - .../Headers/Public/JSONModel/JSONHTTPClient.h | 1 - .../Headers/Public/JSONModel/JSONKeyMapper.h | 1 - .../Public/JSONModel/JSONModel+networking.h | 1 - .../Pods/Headers/Public/JSONModel/JSONModel.h | 1 - .../Headers/Public/JSONModel/JSONModelArray.h | 1 - .../Public/JSONModel/JSONModelClassProperty.h | 1 - .../Headers/Public/JSONModel/JSONModelError.h | 1 - .../Headers/Public/JSONModel/JSONModelLib.h | 1 - .../Public/JSONModel/JSONValueTransformer.h | 1 - .../Public/JSONModel/NSArray+JSONModel.h | 1 - .../Pods/Headers/Public/Specta/SPTCallSite.h | 1 - .../Public/Specta/SPTCompiledExample.h | 1 - .../Pods/Headers/Public/Specta/SPTExample.h | 1 - .../Headers/Public/Specta/SPTExampleGroup.h | 1 - .../Specta/SPTExcludeGlobalBeforeAfterEach.h | 1 - .../Public/Specta/SPTGlobalBeforeAfterEach.h | 1 - .../Public/Specta/SPTSharedExampleGroups.h | 1 - .../Pods/Headers/Public/Specta/SPTSpec.h | 1 - .../Pods/Headers/Public/Specta/SPTTestSuite.h | 1 - .../Pods/Headers/Public/Specta/Specta.h | 1 - .../Pods/Headers/Public/Specta/SpectaDSL.h | 1 - .../Pods/Headers/Public/Specta/SpectaTypes.h | 1 - .../Headers/Public/Specta/SpectaUtility.h | 1 - .../Headers/Public/Specta/XCTest+Private.h | 1 - .../Headers/Public/Specta/XCTestCase+Specta.h | 1 - .../JSONValueTransformer+ISO8601.h | 1 - .../Public/SwaggerClient/SWGApiClient.h | 1 - .../Public/SwaggerClient/SWGCategory.h | 1 - .../Public/SwaggerClient/SWGConfiguration.h | 1 - .../Headers/Public/SwaggerClient/SWGFile.h | 1 - .../SwaggerClient/SWGJSONRequestSerializer.h | 1 - .../SwaggerClient/SWGJSONResponseSerializer.h | 1 - .../Public/SwaggerClient/SWGMyresult.h | 1 - .../Public/SwaggerClient/SWGMythingApi.h | 1 - .../Headers/Public/SwaggerClient/SWGObject.h | 1 - .../Headers/Public/SwaggerClient/SWGOrder.h | 1 - .../Headers/Public/SwaggerClient/SWGPet.h | 1 - .../Headers/Public/SwaggerClient/SWGPetApi.h | 1 - .../SwaggerClient/SWGQueryParamCollection.h | 1 - .../Public/SwaggerClient/SWGStoreApi.h | 1 - .../Headers/Public/SwaggerClient/SWGTag.h | 1 - .../Headers/Public/SwaggerClient/SWGUser.h | 1 - .../Headers/Public/SwaggerClient/SWGUserApi.h | 1 - .../Pods/ISO8601/ISO8601/ISO8601.h | 22 - .../ISO8601/ISO8601/ISO8601Serialization.h | 40 - .../ISO8601/ISO8601/ISO8601Serialization.m | 152 - .../Pods/ISO8601/ISO8601/NSDate+ISO8601.h | 65 - .../Pods/ISO8601/ISO8601/NSDate+ISO8601.m | 69 - .../SwaggerClientTests/Pods/ISO8601/LICENSE | 20 - .../Pods/ISO8601/Readme.markdown | 73 - .../JSONModel/JSONModel/JSONModel/JSONModel.h | 334 -- .../JSONModel/JSONModel/JSONModel/JSONModel.m | 1309 ------- .../JSONModel/JSONModel/JSONModelArray.h | 60 - .../JSONModel/JSONModel/JSONModelArray.m | 145 - .../JSONModel/JSONModelClassProperty.h | 77 - .../JSONModel/JSONModelClassProperty.m | 48 - .../JSONModel/JSONModel/JSONModelError.h | 112 - .../JSONModel/JSONModel/JSONModelError.m | 93 - .../JSONModelCategories/NSArray+JSONModel.h | 40 - .../JSONModelCategories/NSArray+JSONModel.m | 28 - .../Pods/JSONModel/JSONModel/JSONModelLib.h | 35 - .../JSONModel/JSONModelNetworking/JSONAPI.h | 90 - .../JSONModel/JSONModelNetworking/JSONAPI.m | 152 - .../JSONModelNetworking/JSONHTTPClient.h | 175 - .../JSONModelNetworking/JSONHTTPClient.m | 374 -- .../JSONModel+networking.h | 66 - .../JSONModel+networking.m | 109 - .../JSONModelTransformations/JSONKeyMapper.h | 95 - .../JSONModelTransformations/JSONKeyMapper.m | 174 - .../JSONValueTransformer.h | 230 -- .../JSONValueTransformer.m | 272 -- .../Pods/JSONModel/LICENSE_jsonmodel.txt | 23 - .../Pods/JSONModel/README.md | 527 --- .../Local Podspecs/SwaggerClient.podspec.json | 37 - .../SwaggerClientTests/Pods/Manifest.lock | 49 - .../Pods/Pods.xcodeproj/project.pbxproj | 3349 ----------------- ...waggerClient_Example-AFNetworking.xcscheme | 59 - ...ods-SwaggerClient_Example-ISO8601.xcscheme | 59 - ...s-SwaggerClient_Example-JSONModel.xcscheme | 59 - ...ample-SwaggerClient-SwaggerClient.xcscheme | 59 - ...aggerClient_Example-SwaggerClient.xcscheme | 59 - .../Pods-SwaggerClient_Example.xcscheme | 59 - ...-SwaggerClient_Tests-AFNetworking.xcscheme | 59 - .../Pods-SwaggerClient_Tests-Expecta.xcscheme | 59 - .../Pods-SwaggerClient_Tests-ISO8601.xcscheme | 59 - ...ods-SwaggerClient_Tests-JSONModel.xcscheme | 59 - .../Pods-SwaggerClient_Tests-Specta.xcscheme | 59 - ...Tests-SwaggerClient-SwaggerClient.xcscheme | 59 - ...SwaggerClient_Tests-SwaggerClient.xcscheme | 59 - .../Pods-SwaggerClient_Tests.xcscheme | 59 - .../xcschemes/xcschememanagement.plist | 152 - .../SwaggerClientTests/Pods/Specta/LICENSE | 20 - .../SwaggerClientTests/Pods/Specta/README.md | 176 - .../Pods/Specta/Specta/Specta/SPTCallSite.h | 12 - .../Pods/Specta/Specta/Specta/SPTCallSite.m | 18 - .../Specta/Specta/Specta/SPTCompiledExample.h | 17 - .../Specta/Specta/Specta/SPTCompiledExample.m | 17 - .../Pods/Specta/Specta/Specta/SPTExample.h | 17 - .../Pods/Specta/Specta/Specta/SPTExample.m | 17 - .../Specta/Specta/Specta/SPTExampleGroup.h | 36 - .../Specta/Specta/Specta/SPTExampleGroup.m | 335 -- .../Specta/SPTExcludeGlobalBeforeAfterEach.h | 10 - .../Specta/Specta/SPTGlobalBeforeAfterEach.h | 15 - .../Specta/Specta/SPTSharedExampleGroups.h | 17 - .../Specta/Specta/SPTSharedExampleGroups.m | 74 - .../Pods/Specta/Specta/Specta/SPTSpec.h | 28 - .../Pods/Specta/Specta/Specta/SPTSpec.m | 209 - .../Pods/Specta/Specta/Specta/SPTTestSuite.h | 21 - .../Pods/Specta/Specta/Specta/SPTTestSuite.m | 31 - .../Pods/Specta/Specta/Specta/Specta.h | 14 - .../Pods/Specta/Specta/Specta/SpectaDSL.h | 90 - .../Pods/Specta/Specta/Specta/SpectaDSL.m | 189 - .../Pods/Specta/Specta/Specta/SpectaTypes.h | 5 - .../Pods/Specta/Specta/Specta/SpectaUtility.h | 18 - .../Pods/Specta/Specta/Specta/SpectaUtility.m | 79 - .../Specta/Specta/Specta/XCTest+Private.h | 40 - .../Specta/Specta/Specta/XCTestCase+Specta.h | 7 - .../Specta/Specta/Specta/XCTestCase+Specta.m | 65 - .../Info.plist | 26 - ...ient_Example-AFNetworking-Private.xcconfig | 9 - ...SwaggerClient_Example-AFNetworking-dummy.m | 5 - ...ggerClient_Example-AFNetworking-prefix.pch | 5 - ...ggerClient_Example-AFNetworking-umbrella.h | 34 - ...aggerClient_Example-AFNetworking.modulemap | 6 - ...waggerClient_Example-AFNetworking.xcconfig | 1 - .../Info.plist | 26 - ...gerClient_Example-ISO8601-Private.xcconfig | 9 - ...Pods-SwaggerClient_Example-ISO8601-dummy.m | 5 - ...s-SwaggerClient_Example-ISO8601-prefix.pch | 5 - ...s-SwaggerClient_Example-ISO8601-umbrella.h | 9 - ...ds-SwaggerClient_Example-ISO8601.modulemap | 6 - ...ods-SwaggerClient_Example-ISO8601.xcconfig | 1 - .../Info.plist | 26 - ...rClient_Example-JSONModel-Private.xcconfig | 9 - ...ds-SwaggerClient_Example-JSONModel-dummy.m | 5 - ...SwaggerClient_Example-JSONModel-prefix.pch | 5 - ...SwaggerClient_Example-JSONModel-umbrella.h | 17 - ...-SwaggerClient_Example-JSONModel.modulemap | 6 - ...s-SwaggerClient_Example-JSONModel.xcconfig | 0 .../Info.plist | 26 - ...ent_Example-SwaggerClient-Private.xcconfig | 9 - ...waggerClient_Example-SwaggerClient-dummy.m | 5 - ...gerClient_Example-SwaggerClient-prefix.pch | 5 - ...gerClient_Example-SwaggerClient-umbrella.h | 24 - ...ggerClient_Example-SwaggerClient.modulemap | 6 - ...aggerClient_Example-SwaggerClient.xcconfig | 0 .../Pods-SwaggerClient_Example/Info.plist | 26 - ...erClient_Example-acknowledgements.markdown | 100 - ...aggerClient_Example-acknowledgements.plist | 142 - .../Pods-SwaggerClient_Example-dummy.m | 5 - .../Pods-SwaggerClient_Example-environment.h | 68 - .../Pods-SwaggerClient_Example-frameworks.sh | 61 - .../Pods-SwaggerClient_Example-resources.sh | 93 - .../Pods-SwaggerClient_Example-umbrella.h | 6 - .../Pods-SwaggerClient_Example.debug.xcconfig | 8 - .../Pods-SwaggerClient_Example.modulemap | 6 - ...ods-SwaggerClient_Example.release.xcconfig | 8 - .../Info.plist | 26 - ...Client_Tests-AFNetworking-Private.xcconfig | 9 - ...s-SwaggerClient_Tests-AFNetworking-dummy.m | 5 - ...waggerClient_Tests-AFNetworking-prefix.pch | 5 - ...waggerClient_Tests-AFNetworking-umbrella.h | 34 - ...SwaggerClient_Tests-AFNetworking.modulemap | 6 - ...-SwaggerClient_Tests-AFNetworking.xcconfig | 1 - .../Info.plist | 26 - ...aggerClient_Tests-Expecta-Private.xcconfig | 9 - .../Pods-SwaggerClient_Tests-Expecta-dummy.m | 5 - ...ods-SwaggerClient_Tests-Expecta-prefix.pch | 5 - ...ods-SwaggerClient_Tests-Expecta-umbrella.h | 45 - ...Pods-SwaggerClient_Tests-Expecta.modulemap | 6 - .../Pods-SwaggerClient_Tests-Expecta.xcconfig | 2 - .../Info.plist | 26 - ...aggerClient_Tests-ISO8601-Private.xcconfig | 9 - .../Pods-SwaggerClient_Tests-ISO8601-dummy.m | 5 - ...ods-SwaggerClient_Tests-ISO8601-prefix.pch | 5 - ...ods-SwaggerClient_Tests-ISO8601-umbrella.h | 9 - ...Pods-SwaggerClient_Tests-ISO8601.modulemap | 6 - .../Pods-SwaggerClient_Tests-ISO8601.xcconfig | 1 - .../Info.plist | 26 - ...gerClient_Tests-JSONModel-Private.xcconfig | 9 - ...Pods-SwaggerClient_Tests-JSONModel-dummy.m | 5 - ...s-SwaggerClient_Tests-JSONModel-prefix.pch | 5 - ...s-SwaggerClient_Tests-JSONModel-umbrella.h | 17 - ...ds-SwaggerClient_Tests-JSONModel.modulemap | 6 - ...ods-SwaggerClient_Tests-JSONModel.xcconfig | 0 .../Info.plist | 26 - ...waggerClient_Tests-Specta-Private.xcconfig | 9 - .../Pods-SwaggerClient_Tests-Specta-dummy.m | 5 - ...Pods-SwaggerClient_Tests-Specta-prefix.pch | 5 - ...Pods-SwaggerClient_Tests-Specta-umbrella.h | 21 - .../Pods-SwaggerClient_Tests-Specta.modulemap | 6 - .../Pods-SwaggerClient_Tests-Specta.xcconfig | 2 - .../Info.plist | 26 - ...lient_Tests-SwaggerClient-Private.xcconfig | 9 - ...-SwaggerClient_Tests-SwaggerClient-dummy.m | 5 - ...aggerClient_Tests-SwaggerClient-prefix.pch | 5 - ...aggerClient_Tests-SwaggerClient-umbrella.h | 24 - ...waggerClient_Tests-SwaggerClient.modulemap | 6 - ...SwaggerClient_Tests-SwaggerClient.xcconfig | 0 .../Pods-SwaggerClient_Tests/Info.plist | 26 - ...ggerClient_Tests-acknowledgements.markdown | 147 - ...SwaggerClient_Tests-acknowledgements.plist | 197 - .../Pods-SwaggerClient_Tests-dummy.m | 5 - .../Pods-SwaggerClient_Tests-environment.h | 80 - .../Pods-SwaggerClient_Tests-frameworks.sh | 65 - .../Pods-SwaggerClient_Tests-resources.sh | 93 - .../Pods-SwaggerClient_Tests-umbrella.h | 6 - .../Pods-SwaggerClient_Tests.debug.xcconfig | 8 - .../Pods-SwaggerClient_Tests.modulemap | 6 - .../Pods-SwaggerClient_Tests.release.xcconfig | 8 - .../contents.xcworkspacedata | 10 - .../UserInterfaceState.xcuserstate | Bin 16390 -> 0 bytes 519 files changed, 55 insertions(+), 26232 deletions(-) rename modules/swagger-codegen/src/main/resources/objc/{SWGApiClient-body.mustache => ApiClient-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGApiClient-header.mustache => ApiClient-header.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGConfiguration-body.mustache => Configuration-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGConfiguration-header.mustache => Configuration-header.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGFile.m => File-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGFile.h => File-header.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGJSONRequestSerializer-body.mustache => JSONRequestSerializer-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGJSONRequestSerializer-header.mustache => JSONRequestSerializer-header.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGJSONResponseSerializer-body.mustache => JSONResponseSerializer-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGJSONResponseSerializer-header.mustache => JSONResponseSerializer-header.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGObject.m => Object-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGObject.h => Object-header.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGQueryParamCollection.m => QueryParamCollection-body.mustache} (100%) rename modules/swagger-codegen/src/main/resources/objc/{SWGQueryParamCollection.h => QueryParamCollection-header.mustache} (100%) delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Podfile.lock delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPMatcher.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h delete mode 120000 samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h delete mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh delete mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h delete mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh delete mode 100755 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata delete mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/.gitignore b/.gitignore index ab6b7da7269..b4d421e3c55 100644 --- a/.gitignore +++ b/.gitignore @@ -31,8 +31,10 @@ samples/client/petstore/qt5cpp/PetStore/PetStore samples/client/petstore/qt5cpp/PetStore/Makefile samples/client/petstore/java/hello.txt samples/client/petstore/android-java/hello.txt -samples/client/petstore/objc/Build -samples/client/petstore/objc/Pods +samples/client/petstore/objc/SwaggerClientTests/Build +samples/client/petstore/objc/SwaggerClientTests/Pods +samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace +samples/client/petstore/objc/SwaggerClientTests/Podfile.lock samples/server/petstore/nodejs/node_modules target .idea diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index d282997107a..6859ba56ea6 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -18,9 +18,9 @@ import java.util.Set; public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { protected Set foundationClasses = new HashSet(); - protected String podName = null; - protected String podVersion = null; - protected String classPrefix = null; + protected String podName = "SwaggerClient"; + protected String podVersion = "1.0.0"; + protected String classPrefix = "SWG"; public ObjcClientCodegen() { super(); @@ -127,23 +127,14 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { if (additionalProperties.containsKey("podName")) { setPodName((String) additionalProperties.get("podName")); } - else { - setPodName("SwaggerClient"); - } if (additionalProperties.containsKey("podVersion")) { setPodVersion((String) additionalProperties.get("podVersion")); } - else { - setPodVersion("1.0.0"); - } if (additionalProperties.containsKey("classPrefix")) { setClassPrefix((String) additionalProperties.get("classPrefix")); } - else { - setClassPrefix("SWG"); - } additionalProperties.put("podName", podName); additionalProperties.put("podVersion", podVersion); @@ -153,22 +144,22 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { modelPackage = swaggerFolder; apiPackage = swaggerFolder; - supportingFiles.add(new SupportingFile("SWGObject.h", swaggerFolder, classPrefix + "Object.h")); - supportingFiles.add(new SupportingFile("SWGObject.m", swaggerFolder, classPrefix + "Object.m")); - supportingFiles.add(new SupportingFile("SWGQueryParamCollection.h", swaggerFolder, classPrefix + "QueryParamCollection.h")); - supportingFiles.add(new SupportingFile("SWGQueryParamCollection.m", swaggerFolder, classPrefix + "QueryParamCollection.m")); - supportingFiles.add(new SupportingFile("SWGApiClient-header.mustache", swaggerFolder, classPrefix + "ApiClient.h")); - supportingFiles.add(new SupportingFile("SWGApiClient-body.mustache", swaggerFolder, classPrefix + "ApiClient.m")); - supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-header.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.h")); - supportingFiles.add(new SupportingFile("SWGJSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m")); - supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m")); - supportingFiles.add(new SupportingFile("SWGJSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h")); - supportingFiles.add(new SupportingFile("SWGFile.h", swaggerFolder, classPrefix + "File.h")); - supportingFiles.add(new SupportingFile("SWGFile.m", swaggerFolder, classPrefix + "File.m")); + supportingFiles.add(new SupportingFile("Object-header.mustache", swaggerFolder, classPrefix + "Object.h")); + supportingFiles.add(new SupportingFile("Object-body.mustache", swaggerFolder, classPrefix + "Object.m")); + supportingFiles.add(new SupportingFile("QueryParamCollection-header.mustache", swaggerFolder, classPrefix + "QueryParamCollection.h")); + supportingFiles.add(new SupportingFile("QueryParamCollection-body.mustache", swaggerFolder, classPrefix + "QueryParamCollection.m")); + supportingFiles.add(new SupportingFile("ApiClient-header.mustache", swaggerFolder, classPrefix + "ApiClient.h")); + supportingFiles.add(new SupportingFile("ApiClient-body.mustache", swaggerFolder, classPrefix + "ApiClient.m")); + supportingFiles.add(new SupportingFile("JSONResponseSerializer-header.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.h")); + supportingFiles.add(new SupportingFile("JSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m")); + supportingFiles.add(new SupportingFile("JSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m")); + supportingFiles.add(new SupportingFile("JSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h")); + supportingFiles.add(new SupportingFile("File-header.mustache", swaggerFolder, classPrefix + "File.h")); + supportingFiles.add(new SupportingFile("File-body.mustache", swaggerFolder, classPrefix + "File.m")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", swaggerFolder, "JSONValueTransformer+ISO8601.m")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", swaggerFolder, "JSONValueTransformer+ISO8601.h")); - supportingFiles.add(new SupportingFile("SWGConfiguration-body.mustache", swaggerFolder, classPrefix + "Configuration.m")); - supportingFiles.add(new SupportingFile("SWGConfiguration-header.mustache", swaggerFolder, classPrefix + "Configuration.h")); + supportingFiles.add(new SupportingFile("Configuration-body.mustache", swaggerFolder, classPrefix + "Configuration.m")); + supportingFiles.add(new SupportingFile("Configuration-header.mustache", swaggerFolder, classPrefix + "Configuration.h")); supportingFiles.add(new SupportingFile("podspec.mustache", "", podName + ".podspec")); } @@ -301,11 +292,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String toModelImport(String name) { - if ("".equals(modelPackage())) { - return name; - } else { - return modelPackage() + "." + name; - } + return name; } @Override @@ -315,12 +302,12 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { @Override public String apiFileFolder() { - return outputFolder + File.separator + sourceFolder; + return outputFolder + File.separatorChar + apiPackage(); } @Override public String modelFileFolder() { - return outputFolder + File.separator + sourceFolder; + return outputFolder + File.separatorChar + modelPackage(); } @Override diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGApiClient-body.mustache rename to modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGApiClient-header.mustache rename to modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGConfiguration-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGConfiguration-body.mustache rename to modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGConfiguration-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGConfiguration-header.mustache rename to modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGFile.m b/modules/swagger-codegen/src/main/resources/objc/File-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGFile.m rename to modules/swagger-codegen/src/main/resources/objc/File-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGFile.h b/modules/swagger-codegen/src/main/resources/objc/File-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGFile.h rename to modules/swagger-codegen/src/main/resources/objc/File-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-body.mustache rename to modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGJSONRequestSerializer-header.mustache rename to modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGJSONResponseSerializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGJSONResponseSerializer-body.mustache rename to modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGJSONResponseSerializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGJSONResponseSerializer-header.mustache rename to modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGObject.m b/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGObject.m rename to modules/swagger-codegen/src/main/resources/objc/Object-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGObject.h b/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGObject.h rename to modules/swagger-codegen/src/main/resources/objc/Object-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGQueryParamCollection.m b/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-body.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGQueryParamCollection.m rename to modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-body.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/SWGQueryParamCollection.h b/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-header.mustache similarity index 100% rename from modules/swagger-codegen/src/main/resources/objc/SWGQueryParamCollection.h rename to modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-header.mustache diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 5bebfa063c2..473f3684243 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -1,7 +1,7 @@ {{#operations}} #import "{{classname}}.h" -#import "SWGFile.h" -#import "SWGQueryParamCollection.h" +#import "{{classPrefix}}File.h" +#import "{{classPrefix}}QueryParamCollection.h" {{#imports}}#import "{{import}}.h" {{/imports}} {{newline}} @@ -19,20 +19,20 @@ static NSString * basePath = @"{{basePath}}"; - (id) init { self = [super init]; if (self) { - self.apiClient = [SWGApiClient sharedClientFromPool:basePath]; + self.apiClient = [{{classPrefix}}ApiClient sharedClientFromPool:basePath]; self.defaultHeaders = [NSMutableDictionary dictionary]; } return self; } -- (id) initWithApiClient:(SWGApiClient *)apiClient { +- (id) initWithApiClient:({{classPrefix}}ApiClient *)apiClient { self = [super init]; if (self) { if (apiClient) { self.apiClient = apiClient; } else { - self.apiClient = [SWGApiClient sharedClientFromPool:basePath]; + self.apiClient = [{{classPrefix}}ApiClient sharedClientFromPool:basePath]; } self.defaultHeaders = [NSMutableDictionary dictionary]; } diff --git a/samples/client/petstore/objc/SwaggerClient.podspec b/samples/client/petstore/objc/SwaggerClient.podspec index a55dac01d60..aeeda8fbdfe 100644 --- a/samples/client/petstore/objc/SwaggerClient.podspec +++ b/samples/client/petstore/objc/SwaggerClient.podspec @@ -8,33 +8,24 @@ # Pod::Spec.new do |s| - s.name = "SwaggerClient" - s.version = "0.1.0" - s.summary = "A short description of SwaggerClient." - s.description = <<-DESC - An optional longer description of SwaggerClient + s.name = "SwaggerClient" + s.version = "1.0.0" - * Markdown format. - * Don't worry about the indent, we strip it! - DESC - s.homepage = "https://github.com//SwaggerClient" - # s.screenshots = "www.example.com/screenshots_1", "www.example.com/screenshots_2" - s.license = 'MIT' - s.author = { "geekerzp" => "geekerzp@gmail.com" } - s.source = { :git => "https://github.com//SwaggerClient.git", :tag => s.version.to_s } - # s.social_media_url = 'https://twitter.com/' + s.summary = "Swagger Petstore" + s.description = <<-DESC + This is a sample server Petstore server. You can find out more about Swagger at <a href=\"http://swagger.io\">http://swagger.io</a> or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters + DESC - s.platform = :ios, '7.0' - s.requires_arc = true + s.license = 'MIT' - s.source_files = 'SwaggerClient/**/*' - s.public_header_files = 'SwaggerClient/**/*.h' + s.platform = :ios, '7.0' + s.requires_arc = true - s.resource_bundles = { - 'SwaggerClient' => ['Pod/Assets/*.png'] - } + s.source_files = 'SwaggerClient/**/*' + s.public_header_files = '1.0.0/**/*.h' - s.dependency 'AFNetworking', '~> 2.3' - s.dependency 'JSONModel' - s.dependency 'ISO8601' + s.dependency 'AFNetworking', '~> 2.3' + s.dependency 'JSONModel', '~> 1.1' + s.dependency 'ISO8601', '~> 0.3' end + diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index d8aad6ba6f0..34722ed3ad9 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -1,6 +1,6 @@ #import #import -#import +#import "AFHTTPRequestOperationManager.h" #import "SWGJSONResponseSerializer.h" #import "SWGJSONRequestSerializer.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPet.h b/samples/client/petstore/objc/SwaggerClient/SWGPet.h index edd54e9f31a..9b8a274d20b 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPet.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGPet.h @@ -1,7 +1,7 @@ #import #import "SWGObject.h" -#import "SWGTag.h" -#import "SWGCategory.h" +#import "SwaggerClient.SWGTag.h" +#import "SwaggerClient.SWGCategory.h" @protocol SWGPet diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h index 257a7d1453e..ef8e4d1f271 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h @@ -1,6 +1,6 @@ #import -#import "SWGPet.h" -#import "SWGFile.h" +#import "SwaggerClient.SWGPet.h" +#import "SwaggerClient.SWGFile.h" #import "SWGObject.h" #import "SWGApiClient.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 01d127bc283..88fda7755b0 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -1,8 +1,8 @@ #import "SWGPetApi.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" -#import "SWGPet.h" -#import "SWGFile.h" +#import "SwaggerClient.SWGPet.h" +#import "SwaggerClient.SWGFile.h" @interface SWGPetApi () diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h index 7488c1baa70..d155f275d1e 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h @@ -1,5 +1,5 @@ #import -#import "SWGOrder.h" +#import "SwaggerClient.SWGOrder.h" #import "SWGObject.h" #import "SWGApiClient.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m index 71b5af87744..8248b043431 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m @@ -1,7 +1,7 @@ #import "SWGStoreApi.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" -#import "SWGOrder.h" +#import "SwaggerClient.SWGOrder.h" @interface SWGStoreApi () diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h index 6fda87cca70..481ce8c9c4d 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h @@ -1,5 +1,5 @@ #import -#import "SWGUser.h" +#import "SwaggerClient.SWGUser.h" #import "SWGObject.h" #import "SWGApiClient.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m index 06b6d2ce666..52f3fed4133 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m @@ -1,7 +1,7 @@ #import "SWGUserApi.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" -#import "SWGUser.h" +#import "SwaggerClient.SWGUser.h" @interface SWGUserApi () diff --git a/samples/client/petstore/objc/SwaggerClientTests/Podfile.lock b/samples/client/petstore/objc/SwaggerClientTests/Podfile.lock deleted file mode 100644 index d1ab2cdf9eb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Podfile.lock +++ /dev/null @@ -1,49 +0,0 @@ -PODS: - - AFNetworking (2.5.4): - - AFNetworking/NSURLConnection (= 2.5.4) - - AFNetworking/NSURLSession (= 2.5.4) - - AFNetworking/Reachability (= 2.5.4) - - AFNetworking/Security (= 2.5.4) - - AFNetworking/Serialization (= 2.5.4) - - AFNetworking/UIKit (= 2.5.4) - - AFNetworking/NSURLConnection (2.5.4): - - AFNetworking/Reachability - - AFNetworking/Security - - AFNetworking/Serialization - - AFNetworking/NSURLSession (2.5.4): - - AFNetworking/Reachability - - AFNetworking/Security - - AFNetworking/Serialization - - AFNetworking/Reachability (2.5.4) - - AFNetworking/Security (2.5.4) - - AFNetworking/Serialization (2.5.4) - - AFNetworking/UIKit (2.5.4): - - AFNetworking/NSURLConnection - - AFNetworking/NSURLSession - - Expecta (1.0.0) - - ISO8601 (0.3.0) - - JSONModel (1.1.0) - - Specta (1.0.2) - - SwaggerClient (0.1.0): - - AFNetworking (~> 2.3) - - ISO8601 - - JSONModel - -DEPENDENCIES: - - Expecta - - Specta - - SwaggerClient (from `../`) - -EXTERNAL SOURCES: - SwaggerClient: - :path: "../" - -SPEC CHECKSUMS: - AFNetworking: 05edc0ac4c4c8cf57bcf4b84be5b0744b6d8e71e - Expecta: 32604574add2c46a36f8d2f716b6c5736eb75024 - ISO8601: 8d8a22d5edf0554a1cf75bac028c76c1dc0ffaef - JSONModel: ec77e9865236a7a09d9cf7668df6b4b328d9ec1d - Specta: 9cec98310dca411f7c7ffd6943552b501622abfe - SwaggerClient: 579729c54e8e2e34566e5b5572adc959518663ea - -COCOAPODS: 0.37.1 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h deleted file mode 100644 index 321d4e76e8c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.h +++ /dev/null @@ -1,66 +0,0 @@ -// AFHTTPRequestOperation.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import "AFURLConnectionOperation.h" - -/** - `AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. - */ -@interface AFHTTPRequestOperation : AFURLConnectionOperation - -///------------------------------------------------ -/// @name Getting HTTP URL Connection Information -///------------------------------------------------ - -/** - The last HTTP response received by the operation's connection. - */ -@property (readonly, nonatomic, strong) NSHTTPURLResponse *response; - -/** - Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an AFHTTPResponse serializer, which uses the raw data as its response object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. - - @warning `responseSerializer` must not be `nil`. Setting a response serializer will clear out any cached value - */ -@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; - -/** - An object constructed by the `responseSerializer` from the response and response data. Returns `nil` unless the operation `isFinished`, has a `response`, and has `responseData` with non-zero content length. If an error occurs during serialization, `nil` will be returned, and the `error` property will be populated with the serialization error. - */ -@property (readonly, nonatomic, strong) id responseObject; - -///----------------------------------------------------------- -/// @name Setting Completion Block Success / Failure Callbacks -///----------------------------------------------------------- - -/** - Sets the `completionBlock` property with a block that executes either the specified success or failure block, depending on the state of the request on completion. If `error` returns a value, which can be caused by an unacceptable status code or content type, then `failure` is executed. Otherwise, `success` is executed. - - This method should be overridden in subclasses in order to specify the response object passed into the success block. - - @param success The block to be executed on the completion of a successful request. This block has no return value and takes two arguments: the receiver operation and the object constructed from the response data of the request. - @param failure The block to be executed on the completion of an unsuccessful request. This block has no return value and takes two arguments: the receiver operation and the error that occurred during the request. - */ -- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m deleted file mode 100644 index b8deda839a4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperation.m +++ /dev/null @@ -1,206 +0,0 @@ -// AFHTTPRequestOperation.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFHTTPRequestOperation.h" - -static dispatch_queue_t http_request_operation_processing_queue() { - static dispatch_queue_t af_http_request_operation_processing_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_http_request_operation_processing_queue = dispatch_queue_create("com.alamofire.networking.http-request.processing", DISPATCH_QUEUE_CONCURRENT); - }); - - return af_http_request_operation_processing_queue; -} - -static dispatch_group_t http_request_operation_completion_group() { - static dispatch_group_t af_http_request_operation_completion_group; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_http_request_operation_completion_group = dispatch_group_create(); - }); - - return af_http_request_operation_completion_group; -} - -#pragma mark - - -@interface AFURLConnectionOperation () -@property (readwrite, nonatomic, strong) NSURLRequest *request; -@property (readwrite, nonatomic, strong) NSURLResponse *response; -@end - -@interface AFHTTPRequestOperation () -@property (readwrite, nonatomic, strong) NSHTTPURLResponse *response; -@property (readwrite, nonatomic, strong) id responseObject; -@property (readwrite, nonatomic, strong) NSError *responseSerializationError; -@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; -@end - -@implementation AFHTTPRequestOperation -@dynamic response; -@dynamic lock; - -- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { - self = [super initWithRequest:urlRequest]; - if (!self) { - return nil; - } - - self.responseSerializer = [AFHTTPResponseSerializer serializer]; - - return self; -} - -- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { - NSParameterAssert(responseSerializer); - - [self.lock lock]; - _responseSerializer = responseSerializer; - self.responseObject = nil; - self.responseSerializationError = nil; - [self.lock unlock]; -} - -- (id)responseObject { - [self.lock lock]; - if (!_responseObject && [self isFinished] && !self.error) { - NSError *error = nil; - self.responseObject = [self.responseSerializer responseObjectForResponse:self.response data:self.responseData error:&error]; - if (error) { - self.responseSerializationError = error; - } - } - [self.lock unlock]; - - return _responseObject; -} - -- (NSError *)error { - if (_responseSerializationError) { - return _responseSerializationError; - } else { - return [super error]; - } -} - -#pragma mark - AFHTTPRequestOperation - -- (void)setCompletionBlockWithSuccess:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - // completionBlock is manually nilled out in AFURLConnectionOperation to break the retain cycle. -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-retain-cycles" -#pragma clang diagnostic ignored "-Wgnu" - self.completionBlock = ^{ - if (self.completionGroup) { - dispatch_group_enter(self.completionGroup); - } - - dispatch_async(http_request_operation_processing_queue(), ^{ - if (self.error) { - if (failure) { - dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - id responseObject = self.responseObject; - if (self.error) { - if (failure) { - dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ - failure(self, self.error); - }); - } - } else { - if (success) { - dispatch_group_async(self.completionGroup ?: http_request_operation_completion_group(), self.completionQueue ?: dispatch_get_main_queue(), ^{ - success(self, responseObject); - }); - } - } - } - - if (self.completionGroup) { - dispatch_group_leave(self.completionGroup); - } - }); - }; -#pragma clang diagnostic pop -} - -#pragma mark - AFURLRequestOperation - -- (void)pause { - [super pause]; - - u_int64_t offset = 0; - if ([self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey]) { - offset = [(NSNumber *)[self.outputStream propertyForKey:NSStreamFileCurrentOffsetKey] unsignedLongLongValue]; - } else { - offset = [(NSData *)[self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey] length]; - } - - NSMutableURLRequest *mutableURLRequest = [self.request mutableCopy]; - if ([self.response respondsToSelector:@selector(allHeaderFields)] && [[self.response allHeaderFields] valueForKey:@"ETag"]) { - [mutableURLRequest setValue:[[self.response allHeaderFields] valueForKey:@"ETag"] forHTTPHeaderField:@"If-Range"]; - } - [mutableURLRequest setValue:[NSString stringWithFormat:@"bytes=%llu-", offset] forHTTPHeaderField:@"Range"]; - self.request = mutableURLRequest; -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPRequestOperation *operation = [super copyWithZone:zone]; - - operation.responseSerializer = [self.responseSerializer copyWithZone:zone]; - operation.completionQueue = self.completionQueue; - operation.completionGroup = self.completionGroup; - - return operation; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h deleted file mode 100644 index 17caa78b884..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h +++ /dev/null @@ -1,323 +0,0 @@ -// AFHTTPRequestOperationManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import -#import - -#if __IPHONE_OS_VERSION_MIN_REQUIRED -#import -#else -#import -#endif - -#import "AFHTTPRequestOperation.h" -#import "AFURLResponseSerialization.h" -#import "AFURLRequestSerialization.h" -#import "AFSecurityPolicy.h" -#import "AFNetworkReachabilityManager.h" - -#ifndef NS_DESIGNATED_INITIALIZER -#if __has_attribute(objc_designated_initializer) -#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -#else -#define NS_DESIGNATED_INITIALIZER -#endif -#endif - -/** - `AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. - - ## Subclassing Notes - - Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. - - For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. - - ## Methods to Override - - To change the behavior of all request operation construction for an `AFHTTPRequestOperationManager` subclass, override `HTTPRequestOperationWithRequest:success:failure`. - - ## Serialization - - Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to ``. - - Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `` - - ## URL Construction Using Relative Paths - - For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. - - Below are a few examples of how `baseURL` and relative paths interact: - - NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; - [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo - [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz - [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo - [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo - [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ - [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ - - Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. - - ## Network Reachability Monitoring - - Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. - - ## NSSecureCoding & NSCopying Caveats - - `AFHTTPRequestOperationManager` conforms to the `NSSecureCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. There are a few minor caveats to keep in mind, however: - - - Archives and copies of HTTP clients will be initialized with an empty operation queue. - - NSSecureCoding cannot serialize / deserialize block properties, so an archive of an HTTP client will not include any reachability callback block that may be set. - */ -@interface AFHTTPRequestOperationManager : NSObject - -/** - The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. - */ -@property (readonly, nonatomic, strong) NSURL *baseURL; - -/** - Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. - - @warning `requestSerializer` must not be `nil`. - */ -@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; - -/** - Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to a JSON serializer, which serializes data from responses with a `application/json` MIME type, and falls back to the raw data object. The serializer validates the status code to be in the `2XX` range, denoting success. If the response serializer generates an error in `-responseObjectForResponse:data:error:`, the `failure` callback of the session task or request operation will be executed; otherwise, the `success` callback will be executed. - - @warning `responseSerializer` must not be `nil`. - */ -@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; - -/** - The operation queue on which request operations are scheduled and run. - */ -@property (nonatomic, strong) NSOperationQueue *operationQueue; - -///------------------------------- -/// @name Managing URL Credentials -///------------------------------- - -/** - Whether request operations should consult the credential storage for authenticating the connection. `YES` by default. - - @see AFURLConnectionOperation -shouldUseCredentialStorage - */ -@property (nonatomic, assign) BOOL shouldUseCredentialStorage; - -/** - The credential used by request operations for authentication challenges. - - @see AFURLConnectionOperation -credential - */ -@property (nonatomic, strong) NSURLCredential *credential; - -///------------------------------- -/// @name Managing Security Policy -///------------------------------- - -/** - The security policy used by created request operations to evaluate server trust for secure connections. `AFHTTPRequestOperationManager` uses the `defaultPolicy` unless otherwise specified. - */ -@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; - -///------------------------------------ -/// @name Managing Network Reachability -///------------------------------------ - -/** - The network reachability manager. `AFHTTPRequestOperationManager` uses the `sharedManager` by default. - */ -@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; - -///------------------------------- -/// @name Managing Callback Queues -///------------------------------- - -/** - The dispatch queue for the `completionBlock` of request operations. If `NULL` (default), the main queue is used. - */ -#if OS_OBJECT_HAVE_OBJC_SUPPORT -@property (nonatomic, strong) dispatch_queue_t completionQueue; -#else -@property (nonatomic, assign) dispatch_queue_t completionQueue; -#endif - -/** - The dispatch group for the `completionBlock` of request operations. If `NULL` (default), a private dispatch group is used. - */ -#if OS_OBJECT_HAVE_OBJC_SUPPORT -@property (nonatomic, strong) dispatch_group_t completionGroup; -#else -@property (nonatomic, assign) dispatch_group_t completionGroup; -#endif - -///--------------------------------------------- -/// @name Creating and Initializing HTTP Clients -///--------------------------------------------- - -/** - Creates and returns an `AFHTTPRequestOperationManager` object. - */ -+ (instancetype)manager; - -/** - Initializes an `AFHTTPRequestOperationManager` object with the specified base URL. - - This is the designated initializer. - - @param url The base URL for the HTTP client. - - @return The newly-initialized HTTP client - */ -- (instancetype)initWithBaseURL:(NSURL *)url NS_DESIGNATED_INITIALIZER; - -///--------------------------------------- -/// @name Managing HTTP Request Operations -///--------------------------------------- - -/** - Creates an `AFHTTPRequestOperation`, and sets the response serializers to that of the HTTP client. - - @param request The request object to be loaded asynchronously during execution of the operation. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the created request operation and the object created from the response data of request. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes two arguments:, the created request operation and the `NSError` object describing the network or parsing error that occurred. - */ -- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -///--------------------------- -/// @name Making HTTP Requests -///--------------------------- - -/** - Creates and runs an `AFHTTPRequestOperation` with a `GET` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)GET:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates and runs an `AFHTTPRequestOperation` with a `HEAD` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes a single arguments: the request operation. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)HEAD:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates and runs an `AFHTTPRequestOperation` with a `POST` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)POST:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates and runs an `AFHTTPRequestOperation` with a multipart `POST` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)POST:(NSString *)URLString - parameters:(id)parameters - constructingBodyWithBlock:(void (^)(id formData))block - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates and runs an `AFHTTPRequestOperation` with a `PUT` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)PUT:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates and runs an `AFHTTPRequestOperation` with a `PATCH` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)PATCH:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -/** - Creates and runs an `AFHTTPRequestOperation` with a `DELETE` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the request operation finishes successfully. This block has no return value and takes two arguments: the request operation, and the response object created by the client response serializer. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the request operation and the error describing the network or parsing error that occurred. - - @see -HTTPRequestOperationWithRequest:success:failure: - */ -- (AFHTTPRequestOperation *)DELETE:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure; - -@end - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m deleted file mode 100644 index 60739e5f0de..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPRequestOperationManager.m +++ /dev/null @@ -1,284 +0,0 @@ -// AFHTTPRequestOperationManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import "AFHTTPRequestOperationManager.h" -#import "AFHTTPRequestOperation.h" - -#import -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#endif - -@interface AFHTTPRequestOperationManager () -@property (readwrite, nonatomic, strong) NSURL *baseURL; -@end - -@implementation AFHTTPRequestOperationManager - -+ (instancetype)manager { - return [[self alloc] initWithBaseURL:nil]; -} - -- (instancetype)init { - return [self initWithBaseURL:nil]; -} - -- (instancetype)initWithBaseURL:(NSURL *)url { - self = [super init]; - if (!self) { - return nil; - } - - // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected - if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { - url = [url URLByAppendingPathComponent:@""]; - } - - self.baseURL = url; - - self.requestSerializer = [AFHTTPRequestSerializer serializer]; - self.responseSerializer = [AFJSONResponseSerializer serializer]; - - self.securityPolicy = [AFSecurityPolicy defaultPolicy]; - - self.reachabilityManager = [AFNetworkReachabilityManager sharedManager]; - - self.operationQueue = [[NSOperationQueue alloc] init]; - - self.shouldUseCredentialStorage = YES; - - return self; -} - -#pragma mark - - -#ifdef _SYSTEMCONFIGURATION_H -#endif - -- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { - NSParameterAssert(requestSerializer); - - _requestSerializer = requestSerializer; -} - -- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { - NSParameterAssert(responseSerializer); - - _responseSerializer = responseSerializer; -} - -#pragma mark - - -- (AFHTTPRequestOperation *)HTTPRequestOperationWithHTTPMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSError *serializationError = nil; - NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; - if (serializationError) { - if (failure) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ - failure(nil, serializationError); - }); -#pragma clang diagnostic pop - } - - return nil; - } - - return [self HTTPRequestOperationWithRequest:request success:success failure:failure]; -} - -- (AFHTTPRequestOperation *)HTTPRequestOperationWithRequest:(NSURLRequest *)request - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; - operation.responseSerializer = self.responseSerializer; - operation.shouldUseCredentialStorage = self.shouldUseCredentialStorage; - operation.credential = self.credential; - operation.securityPolicy = self.securityPolicy; - - [operation setCompletionBlockWithSuccess:success failure:failure]; - operation.completionQueue = self.completionQueue; - operation.completionGroup = self.completionGroup; - - return operation; -} - -#pragma mark - - -- (AFHTTPRequestOperation *)GET:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"GET" URLString:URLString parameters:parameters success:success failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -- (AFHTTPRequestOperation *)HEAD:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters success:^(AFHTTPRequestOperation *requestOperation, __unused id responseObject) { - if (success) { - success(requestOperation); - } - } failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -- (AFHTTPRequestOperation *)POST:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -- (AFHTTPRequestOperation *)POST:(NSString *)URLString - parameters:(id)parameters - constructingBodyWithBlock:(void (^)(id formData))block - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - NSError *serializationError = nil; - NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; - if (serializationError) { - if (failure) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ - failure(nil, serializationError); - }); -#pragma clang diagnostic pop - } - - return nil; - } - - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithRequest:request success:success failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -- (AFHTTPRequestOperation *)PUT:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters success:success failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -- (AFHTTPRequestOperation *)PATCH:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters success:success failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -- (AFHTTPRequestOperation *)DELETE:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success - failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure -{ - AFHTTPRequestOperation *operation = [self HTTPRequestOperationWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters success:success failure:failure]; - - [self.operationQueue addOperation:operation]; - - return operation; -} - -#pragma mark - NSObject - -- (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.operationQueue]; -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - NSURL *baseURL = [decoder decodeObjectForKey:NSStringFromSelector(@selector(baseURL))]; - - self = [self initWithBaseURL:baseURL]; - if (!self) { - return nil; - } - - self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))]; - self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))]; - [coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))]; - [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPRequestOperationManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL]; - - HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone]; - HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone]; - - return HTTPClient; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h deleted file mode 100644 index cc98bab043b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.h +++ /dev/null @@ -1,247 +0,0 @@ -// AFHTTPSessionManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import -#import - -#if __IPHONE_OS_VERSION_MIN_REQUIRED -#import -#else -#import -#endif - -#import "AFURLSessionManager.h" - -#ifndef NS_DESIGNATED_INITIALIZER -#if __has_attribute(objc_designated_initializer) -#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -#else -#define NS_DESIGNATED_INITIALIZER -#endif -#endif - -/** - `AFHTTPSessionManager` is a subclass of `AFURLSessionManager` with convenience methods for making HTTP requests. When a `baseURL` is provided, requests made with the `GET` / `POST` / et al. convenience methods can be made with relative paths. - - ## Subclassing Notes - - Developers targeting iOS 7 or Mac OS X 10.9 or later that deal extensively with a web service are encouraged to subclass `AFHTTPSessionManager`, providing a class method that returns a shared singleton object on which authentication and other configuration can be shared across the application. - - For developers targeting iOS 6 or Mac OS X 10.8 or earlier, `AFHTTPRequestOperationManager` may be used to similar effect. - - ## Methods to Override - - To change the behavior of all data task operation construction, which is also used in the `GET` / `POST` / et al. convenience methods, override `dataTaskWithRequest:completionHandler:`. - - ## Serialization - - Requests created by an HTTP client will contain default headers and encode parameters according to the `requestSerializer` property, which is an object conforming to ``. - - Responses received from the server are automatically validated and serialized by the `responseSerializers` property, which is an object conforming to `` - - ## URL Construction Using Relative Paths - - For HTTP convenience methods, the request serializer constructs URLs from the path relative to the `-baseURL`, using `NSURL +URLWithString:relativeToURL:`, when provided. If `baseURL` is `nil`, `path` needs to resolve to a valid `NSURL` object using `NSURL +URLWithString:`. - - Below are a few examples of how `baseURL` and relative paths interact: - - NSURL *baseURL = [NSURL URLWithString:@"http://example.com/v1/"]; - [NSURL URLWithString:@"foo" relativeToURL:baseURL]; // http://example.com/v1/foo - [NSURL URLWithString:@"foo?bar=baz" relativeToURL:baseURL]; // http://example.com/v1/foo?bar=baz - [NSURL URLWithString:@"/foo" relativeToURL:baseURL]; // http://example.com/foo - [NSURL URLWithString:@"foo/" relativeToURL:baseURL]; // http://example.com/v1/foo - [NSURL URLWithString:@"/foo/" relativeToURL:baseURL]; // http://example.com/foo/ - [NSURL URLWithString:@"http://example2.com/" relativeToURL:baseURL]; // http://example2.com/ - - Also important to note is that a trailing slash will be added to any `baseURL` without one. This would otherwise cause unexpected behavior when constructing URLs using paths without a leading slash. - - @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. - */ - -#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) - -@interface AFHTTPSessionManager : AFURLSessionManager - -/** - The URL used to monitor reachability, and construct requests from relative paths in methods like `requestWithMethod:URLString:parameters:`, and the `GET` / `POST` / et al. convenience methods. - */ -@property (readonly, nonatomic, strong) NSURL *baseURL; - -/** - Requests created with `requestWithMethod:URLString:parameters:` & `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:` are constructed with a set of default headers using a parameter serialization specified by this property. By default, this is set to an instance of `AFHTTPRequestSerializer`, which serializes query string parameters for `GET`, `HEAD`, and `DELETE` requests, or otherwise URL-form-encodes HTTP message bodies. - - @warning `requestSerializer` must not be `nil`. - */ -@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; - -/** - Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. - - @warning `responseSerializer` must not be `nil`. - */ -@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; - -///--------------------- -/// @name Initialization -///--------------------- - -/** - Creates and returns an `AFHTTPSessionManager` object. - */ -+ (instancetype)manager; - -/** - Initializes an `AFHTTPSessionManager` object with the specified base URL. - - @param url The base URL for the HTTP client. - - @return The newly-initialized HTTP client - */ -- (instancetype)initWithBaseURL:(NSURL *)url; - -/** - Initializes an `AFHTTPSessionManager` object with the specified base URL. - - This is the designated initializer. - - @param url The base URL for the HTTP client. - @param configuration The configuration used to create the managed session. - - @return The newly-initialized HTTP client - */ -- (instancetype)initWithBaseURL:(NSURL *)url - sessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; - -///--------------------------- -/// @name Making HTTP Requests -///--------------------------- - -/** - Creates and runs an `NSURLSessionDataTask` with a `GET` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)GET:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a `HEAD` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes a single arguments: the data task. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)HEAD:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a `POST` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a multipart `POST` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - constructingBodyWithBlock:(void (^)(id formData))block - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a `PUT` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)PUT:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a `PATCH` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)PATCH:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -/** - Creates and runs an `NSURLSessionDataTask` with a `DELETE` request. - - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded according to the client request serializer. - @param success A block object to be executed when the task finishes successfully. This block has no return value and takes two arguments: the data task, and the response object created by the client response serializer. - @param failure A block object to be executed when the task finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a two arguments: the data task and the error describing the network or parsing error that occurred. - - @see -dataTaskWithRequest:completionHandler: - */ -- (NSURLSessionDataTask *)DELETE:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m deleted file mode 100644 index 2b8352e74c9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFHTTPSessionManager.m +++ /dev/null @@ -1,321 +0,0 @@ -// AFHTTPSessionManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFHTTPSessionManager.h" - -#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) - -#import "AFURLRequestSerialization.h" -#import "AFURLResponseSerialization.h" - -#import -#import - -#ifdef _SYSTEMCONFIGURATION_H -#import -#import -#import -#import -#import -#endif - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#endif - -@interface AFHTTPSessionManager () -@property (readwrite, nonatomic, strong) NSURL *baseURL; -@end - -@implementation AFHTTPSessionManager -@dynamic responseSerializer; - -+ (instancetype)manager { - return [[[self class] alloc] initWithBaseURL:nil]; -} - -- (instancetype)init { - return [self initWithBaseURL:nil]; -} - -- (instancetype)initWithBaseURL:(NSURL *)url { - return [self initWithBaseURL:url sessionConfiguration:nil]; -} - -- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration { - return [self initWithBaseURL:nil sessionConfiguration:configuration]; -} - -- (instancetype)initWithBaseURL:(NSURL *)url - sessionConfiguration:(NSURLSessionConfiguration *)configuration -{ - self = [super initWithSessionConfiguration:configuration]; - if (!self) { - return nil; - } - - // Ensure terminal slash for baseURL path, so that NSURL +URLWithString:relativeToURL: works as expected - if ([[url path] length] > 0 && ![[url absoluteString] hasSuffix:@"/"]) { - url = [url URLByAppendingPathComponent:@""]; - } - - self.baseURL = url; - - self.requestSerializer = [AFHTTPRequestSerializer serializer]; - self.responseSerializer = [AFJSONResponseSerializer serializer]; - - return self; -} - -#pragma mark - - -#ifdef _SYSTEMCONFIGURATION_H -#endif - -- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { - NSParameterAssert(requestSerializer); - - _requestSerializer = requestSerializer; -} - -- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { - NSParameterAssert(responseSerializer); - - [super setResponseSerializer:responseSerializer]; -} - -#pragma mark - - -- (NSURLSessionDataTask *)GET:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"GET" URLString:URLString parameters:parameters success:success failure:failure]; - - [dataTask resume]; - - return dataTask; -} - -- (NSURLSessionDataTask *)HEAD:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters success:^(NSURLSessionDataTask *task, __unused id responseObject) { - if (success) { - success(task); - } - } failure:failure]; - - [dataTask resume]; - - return dataTask; -} - -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"POST" URLString:URLString parameters:parameters success:success failure:failure]; - - [dataTask resume]; - - return dataTask; -} - -- (NSURLSessionDataTask *)POST:(NSString *)URLString - parameters:(id)parameters - constructingBodyWithBlock:(void (^)(id formData))block - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSError *serializationError = nil; - NSMutableURLRequest *request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters constructingBodyWithBlock:block error:&serializationError]; - if (serializationError) { - if (failure) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ - failure(nil, serializationError); - }); -#pragma clang diagnostic pop - } - - return nil; - } - - __block NSURLSessionDataTask *task = [self uploadTaskWithStreamedRequest:request progress:nil completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { - if (error) { - if (failure) { - failure(task, error); - } - } else { - if (success) { - success(task, responseObject); - } - } - }]; - - [task resume]; - - return task; -} - -- (NSURLSessionDataTask *)PUT:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PUT" URLString:URLString parameters:parameters success:success failure:failure]; - - [dataTask resume]; - - return dataTask; -} - -- (NSURLSessionDataTask *)PATCH:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"PATCH" URLString:URLString parameters:parameters success:success failure:failure]; - - [dataTask resume]; - - return dataTask; -} - -- (NSURLSessionDataTask *)DELETE:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *task, id responseObject))success - failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure -{ - NSURLSessionDataTask *dataTask = [self dataTaskWithHTTPMethod:@"DELETE" URLString:URLString parameters:parameters success:success failure:failure]; - - [dataTask resume]; - - return dataTask; -} - -- (NSURLSessionDataTask *)dataTaskWithHTTPMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(id)parameters - success:(void (^)(NSURLSessionDataTask *, id))success - failure:(void (^)(NSURLSessionDataTask *, NSError *))failure -{ - NSError *serializationError = nil; - NSMutableURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:URLString relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&serializationError]; - if (serializationError) { - if (failure) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_async(self.completionQueue ?: dispatch_get_main_queue(), ^{ - failure(nil, serializationError); - }); -#pragma clang diagnostic pop - } - - return nil; - } - - __block NSURLSessionDataTask *dataTask = nil; - dataTask = [self dataTaskWithRequest:request completionHandler:^(NSURLResponse * __unused response, id responseObject, NSError *error) { - if (error) { - if (failure) { - failure(dataTask, error); - } - } else { - if (success) { - success(dataTask, responseObject); - } - } - }]; - - return dataTask; -} - -#pragma mark - NSObject - -- (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p, baseURL: %@, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, [self.baseURL absoluteString], self.session, self.operationQueue]; -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - NSURL *baseURL = [decoder decodeObjectOfClass:[NSURL class] forKey:NSStringFromSelector(@selector(baseURL))]; - NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"]; - if (!configuration) { - NSString *configurationIdentifier = [decoder decodeObjectOfClass:[NSString class] forKey:@"identifier"]; - if (configurationIdentifier) { -#if (defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1100) - configuration = [NSURLSessionConfiguration backgroundSessionConfigurationWithIdentifier:configurationIdentifier]; -#else - configuration = [NSURLSessionConfiguration backgroundSessionConfiguration:configurationIdentifier]; -#endif - } - } - - self = [self initWithBaseURL:baseURL sessionConfiguration:configuration]; - if (!self) { - return nil; - } - - self.requestSerializer = [decoder decodeObjectOfClass:[AFHTTPRequestSerializer class] forKey:NSStringFromSelector(@selector(requestSerializer))]; - self.responseSerializer = [decoder decodeObjectOfClass:[AFHTTPResponseSerializer class] forKey:NSStringFromSelector(@selector(responseSerializer))]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeObject:self.baseURL forKey:NSStringFromSelector(@selector(baseURL))]; - if ([self.session.configuration conformsToProtocol:@protocol(NSCoding)]) { - [coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"]; - } else { - [coder encodeObject:self.session.configuration.identifier forKey:@"identifier"]; - } - [coder encodeObject:self.requestSerializer forKey:NSStringFromSelector(@selector(requestSerializer))]; - [coder encodeObject:self.responseSerializer forKey:NSStringFromSelector(@selector(responseSerializer))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPSessionManager *HTTPClient = [[[self class] allocWithZone:zone] initWithBaseURL:self.baseURL sessionConfiguration:self.session.configuration]; - - HTTPClient.requestSerializer = [self.requestSerializer copyWithZone:zone]; - HTTPClient.responseSerializer = [self.responseSerializer copyWithZone:zone]; - - return HTTPClient; -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h deleted file mode 100644 index 4ce2a36b202..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.h +++ /dev/null @@ -1,200 +0,0 @@ -// AFNetworkReachabilityManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import - -#ifndef NS_DESIGNATED_INITIALIZER -#if __has_attribute(objc_designated_initializer) -#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -#else -#define NS_DESIGNATED_INITIALIZER -#endif -#endif - -typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { - AFNetworkReachabilityStatusUnknown = -1, - AFNetworkReachabilityStatusNotReachable = 0, - AFNetworkReachabilityStatusReachableViaWWAN = 1, - AFNetworkReachabilityStatusReachableViaWiFi = 2, -}; - -/** - `AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. - - Reachability can be used to determine background information about why a network operation failed, or to trigger a network operation retrying when a connection is established. It should not be used to prevent a user from initiating a network request, as it's possible that an initial request may be required to establish reachability. - - See Apple's Reachability Sample Code (https://developer.apple.com/library/ios/samplecode/reachability/) - - @warning Instances of `AFNetworkReachabilityManager` must be started with `-startMonitoring` before reachability status can be determined. - */ -@interface AFNetworkReachabilityManager : NSObject - -/** - The current network reachability status. - */ -@property (readonly, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; - -/** - Whether or not the network is currently reachable. - */ -@property (readonly, nonatomic, assign, getter = isReachable) BOOL reachable; - -/** - Whether or not the network is currently reachable via WWAN. - */ -@property (readonly, nonatomic, assign, getter = isReachableViaWWAN) BOOL reachableViaWWAN; - -/** - Whether or not the network is currently reachable via WiFi. - */ -@property (readonly, nonatomic, assign, getter = isReachableViaWiFi) BOOL reachableViaWiFi; - -///--------------------- -/// @name Initialization -///--------------------- - -/** - Returns the shared network reachability manager. - */ -+ (instancetype)sharedManager; - -/** - Creates and returns a network reachability manager for the specified domain. - - @param domain The domain used to evaluate network reachability. - - @return An initialized network reachability manager, actively monitoring the specified domain. - */ -+ (instancetype)managerForDomain:(NSString *)domain; - -/** - Creates and returns a network reachability manager for the socket address. - - @param address The socket address (`sockaddr_in`) used to evaluate network reachability. - - @return An initialized network reachability manager, actively monitoring the specified socket address. - */ -+ (instancetype)managerForAddress:(const void *)address; - -/** - Initializes an instance of a network reachability manager from the specified reachability object. - - @param reachability The reachability object to monitor. - - @return An initialized network reachability manager, actively monitoring the specified reachability. - */ -- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability NS_DESIGNATED_INITIALIZER; - -///-------------------------------------------------- -/// @name Starting & Stopping Reachability Monitoring -///-------------------------------------------------- - -/** - Starts monitoring for changes in network reachability status. - */ -- (void)startMonitoring; - -/** - Stops monitoring for changes in network reachability status. - */ -- (void)stopMonitoring; - -///------------------------------------------------- -/// @name Getting Localized Reachability Description -///------------------------------------------------- - -/** - Returns a localized string representation of the current network reachability status. - */ -- (NSString *)localizedNetworkReachabilityStatusString; - -///--------------------------------------------------- -/// @name Setting Network Reachability Change Callback -///--------------------------------------------------- - -/** - Sets a callback to be executed when the network availability of the `baseURL` host changes. - - @param block A block object to be executed when the network availability of the `baseURL` host changes.. This block has no return value and takes a single argument which represents the various reachability states from the device to the `baseURL`. - */ -- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block; - -@end - -///---------------- -/// @name Constants -///---------------- - -/** - ## Network Reachability - - The following constants are provided by `AFNetworkReachabilityManager` as possible network reachability statuses. - - enum { - AFNetworkReachabilityStatusUnknown, - AFNetworkReachabilityStatusNotReachable, - AFNetworkReachabilityStatusReachableViaWWAN, - AFNetworkReachabilityStatusReachableViaWiFi, - } - - `AFNetworkReachabilityStatusUnknown` - The `baseURL` host reachability is not known. - - `AFNetworkReachabilityStatusNotReachable` - The `baseURL` host cannot be reached. - - `AFNetworkReachabilityStatusReachableViaWWAN` - The `baseURL` host can be reached via a cellular connection, such as EDGE or GPRS. - - `AFNetworkReachabilityStatusReachableViaWiFi` - The `baseURL` host can be reached via a Wi-Fi connection. - - ### Keys for Notification UserInfo Dictionary - - Strings that are used as keys in a `userInfo` dictionary in a network reachability status change notification. - - `AFNetworkingReachabilityNotificationStatusItem` - A key in the userInfo dictionary in a `AFNetworkingReachabilityDidChangeNotification` notification. - The corresponding value is an `NSNumber` object representing the `AFNetworkReachabilityStatus` value for the current reachability status. - */ - -///-------------------- -/// @name Notifications -///-------------------- - -/** - Posted when network reachability changes. - This notification assigns no notification object. The `userInfo` dictionary contains an `NSNumber` object under the `AFNetworkingReachabilityNotificationStatusItem` key, representing the `AFNetworkReachabilityStatus` value for the current network reachability. - - @warning In order for network reachability to be monitored, include the `SystemConfiguration` framework in the active target's "Link Binary With Library" build phase, and add `#import ` to the header prefix of the project (`Prefix.pch`). - */ -extern NSString * const AFNetworkingReachabilityDidChangeNotification; -extern NSString * const AFNetworkingReachabilityNotificationStatusItem; - -///-------------------- -/// @name Functions -///-------------------- - -/** - Returns a localized string representation of an `AFNetworkReachabilityStatus` value. - */ -extern NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m deleted file mode 100644 index 25e9581e4d8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworkReachabilityManager.m +++ /dev/null @@ -1,259 +0,0 @@ -// AFNetworkReachabilityManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFNetworkReachabilityManager.h" - -#import -#import -#import -#import -#import - -NSString * const AFNetworkingReachabilityDidChangeNotification = @"com.alamofire.networking.reachability.change"; -NSString * const AFNetworkingReachabilityNotificationStatusItem = @"AFNetworkingReachabilityNotificationStatusItem"; - -typedef void (^AFNetworkReachabilityStatusBlock)(AFNetworkReachabilityStatus status); - -typedef NS_ENUM(NSUInteger, AFNetworkReachabilityAssociation) { - AFNetworkReachabilityForAddress = 1, - AFNetworkReachabilityForAddressPair = 2, - AFNetworkReachabilityForName = 3, -}; - -NSString * AFStringFromNetworkReachabilityStatus(AFNetworkReachabilityStatus status) { - switch (status) { - case AFNetworkReachabilityStatusNotReachable: - return NSLocalizedStringFromTable(@"Not Reachable", @"AFNetworking", nil); - case AFNetworkReachabilityStatusReachableViaWWAN: - return NSLocalizedStringFromTable(@"Reachable via WWAN", @"AFNetworking", nil); - case AFNetworkReachabilityStatusReachableViaWiFi: - return NSLocalizedStringFromTable(@"Reachable via WiFi", @"AFNetworking", nil); - case AFNetworkReachabilityStatusUnknown: - default: - return NSLocalizedStringFromTable(@"Unknown", @"AFNetworking", nil); - } -} - -static AFNetworkReachabilityStatus AFNetworkReachabilityStatusForFlags(SCNetworkReachabilityFlags flags) { - BOOL isReachable = ((flags & kSCNetworkReachabilityFlagsReachable) != 0); - BOOL needsConnection = ((flags & kSCNetworkReachabilityFlagsConnectionRequired) != 0); - BOOL canConnectionAutomatically = (((flags & kSCNetworkReachabilityFlagsConnectionOnDemand ) != 0) || ((flags & kSCNetworkReachabilityFlagsConnectionOnTraffic) != 0)); - BOOL canConnectWithoutUserInteraction = (canConnectionAutomatically && (flags & kSCNetworkReachabilityFlagsInterventionRequired) == 0); - BOOL isNetworkReachable = (isReachable && (!needsConnection || canConnectWithoutUserInteraction)); - - AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusUnknown; - if (isNetworkReachable == NO) { - status = AFNetworkReachabilityStatusNotReachable; - } -#if TARGET_OS_IPHONE - else if ((flags & kSCNetworkReachabilityFlagsIsWWAN) != 0) { - status = AFNetworkReachabilityStatusReachableViaWWAN; - } -#endif - else { - status = AFNetworkReachabilityStatusReachableViaWiFi; - } - - return status; -} - -static void AFNetworkReachabilityCallback(SCNetworkReachabilityRef __unused target, SCNetworkReachabilityFlags flags, void *info) { - AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); - AFNetworkReachabilityStatusBlock block = (__bridge AFNetworkReachabilityStatusBlock)info; - if (block) { - block(status); - } - - - dispatch_async(dispatch_get_main_queue(), ^{ - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - NSDictionary *userInfo = @{ AFNetworkingReachabilityNotificationStatusItem: @(status) }; - [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:userInfo]; - }); - -} - -static const void * AFNetworkReachabilityRetainCallback(const void *info) { - return Block_copy(info); -} - -static void AFNetworkReachabilityReleaseCallback(const void *info) { - if (info) { - Block_release(info); - } -} - -@interface AFNetworkReachabilityManager () -@property (readwrite, nonatomic, assign) SCNetworkReachabilityRef networkReachability; -@property (readwrite, nonatomic, assign) AFNetworkReachabilityAssociation networkReachabilityAssociation; -@property (readwrite, nonatomic, assign) AFNetworkReachabilityStatus networkReachabilityStatus; -@property (readwrite, nonatomic, copy) AFNetworkReachabilityStatusBlock networkReachabilityStatusBlock; -@end - -@implementation AFNetworkReachabilityManager - -+ (instancetype)sharedManager { - static AFNetworkReachabilityManager *_sharedManager = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - struct sockaddr_in address; - bzero(&address, sizeof(address)); - address.sin_len = sizeof(address); - address.sin_family = AF_INET; - - _sharedManager = [self managerForAddress:&address]; - }); - - return _sharedManager; -} - -+ (instancetype)managerForDomain:(NSString *)domain { - SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(kCFAllocatorDefault, [domain UTF8String]); - - AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; - manager.networkReachabilityAssociation = AFNetworkReachabilityForName; - - return manager; -} - -+ (instancetype)managerForAddress:(const void *)address { - SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithAddress(kCFAllocatorDefault, (const struct sockaddr *)address); - - AFNetworkReachabilityManager *manager = [[self alloc] initWithReachability:reachability]; - manager.networkReachabilityAssociation = AFNetworkReachabilityForAddress; - - return manager; -} - -- (instancetype)initWithReachability:(SCNetworkReachabilityRef)reachability { - self = [super init]; - if (!self) { - return nil; - } - - self.networkReachability = reachability; - self.networkReachabilityStatus = AFNetworkReachabilityStatusUnknown; - - return self; -} - -- (void)dealloc { - [self stopMonitoring]; - - if (_networkReachability) { - CFRelease(_networkReachability); - _networkReachability = NULL; - } -} - -#pragma mark - - -- (BOOL)isReachable { - return [self isReachableViaWWAN] || [self isReachableViaWiFi]; -} - -- (BOOL)isReachableViaWWAN { - return self.networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWWAN; -} - -- (BOOL)isReachableViaWiFi { - return self.networkReachabilityStatus == AFNetworkReachabilityStatusReachableViaWiFi; -} - -#pragma mark - - -- (void)startMonitoring { - [self stopMonitoring]; - - if (!self.networkReachability) { - return; - } - - __weak __typeof(self)weakSelf = self; - AFNetworkReachabilityStatusBlock callback = ^(AFNetworkReachabilityStatus status) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - - strongSelf.networkReachabilityStatus = status; - if (strongSelf.networkReachabilityStatusBlock) { - strongSelf.networkReachabilityStatusBlock(status); - } - - }; - - SCNetworkReachabilityContext context = {0, (__bridge void *)callback, AFNetworkReachabilityRetainCallback, AFNetworkReachabilityReleaseCallback, NULL}; - SCNetworkReachabilitySetCallback(self.networkReachability, AFNetworkReachabilityCallback, &context); - SCNetworkReachabilityScheduleWithRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); - - switch (self.networkReachabilityAssociation) { - case AFNetworkReachabilityForName: - break; - case AFNetworkReachabilityForAddress: - case AFNetworkReachabilityForAddressPair: - default: { - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0),^{ - SCNetworkReachabilityFlags flags; - SCNetworkReachabilityGetFlags(self.networkReachability, &flags); - AFNetworkReachabilityStatus status = AFNetworkReachabilityStatusForFlags(flags); - dispatch_async(dispatch_get_main_queue(), ^{ - callback(status); - - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - [notificationCenter postNotificationName:AFNetworkingReachabilityDidChangeNotification object:nil userInfo:@{ AFNetworkingReachabilityNotificationStatusItem: @(status) }]; - - - }); - }); - } - break; - } -} - -- (void)stopMonitoring { - if (!self.networkReachability) { - return; - } - - SCNetworkReachabilityUnscheduleFromRunLoop(self.networkReachability, CFRunLoopGetMain(), kCFRunLoopCommonModes); -} - -#pragma mark - - -- (NSString *)localizedNetworkReachabilityStatusString { - return AFStringFromNetworkReachabilityStatus(self.networkReachabilityStatus); -} - -#pragma mark - - -- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block { - self.networkReachabilityStatusBlock = block; -} - -#pragma mark - NSKeyValueObserving - -+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key { - if ([key isEqualToString:@"reachable"] || [key isEqualToString:@"reachableViaWWAN"] || [key isEqualToString:@"reachableViaWiFi"]) { - return [NSSet setWithObject:@"networkReachabilityStatus"]; - } - - return [super keyPathsForValuesAffectingValueForKey:key]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h deleted file mode 100644 index 68273da58e0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFNetworking.h +++ /dev/null @@ -1,44 +0,0 @@ -// AFNetworking.h -// -// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import - -#ifndef _AFNETWORKING_ - #define _AFNETWORKING_ - - #import "AFURLRequestSerialization.h" - #import "AFURLResponseSerialization.h" - #import "AFSecurityPolicy.h" - #import "AFNetworkReachabilityManager.h" - - #import "AFURLConnectionOperation.h" - #import "AFHTTPRequestOperation.h" - #import "AFHTTPRequestOperationManager.h" - -#if ( ( defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) || \ - ( defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 ) ) - #import "AFURLSessionManager.h" - #import "AFHTTPSessionManager.h" -#endif - -#endif /* _AFNETWORKING_ */ diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h deleted file mode 100644 index c6cec831224..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.h +++ /dev/null @@ -1,142 +0,0 @@ -// AFSecurityPolicy.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import - -typedef NS_ENUM(NSUInteger, AFSSLPinningMode) { - AFSSLPinningModeNone, - AFSSLPinningModePublicKey, - AFSSLPinningModeCertificate, -}; - -/** - `AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. - - Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. - */ -@interface AFSecurityPolicy : NSObject - -/** - The criteria by which server trust should be evaluated against the pinned SSL certificates. Defaults to `AFSSLPinningModeNone`. - */ -@property (readonly, nonatomic, assign) AFSSLPinningMode SSLPinningMode; - -/** - Whether to evaluate an entire SSL certificate chain, or just the leaf certificate. Defaults to `YES`. - */ -@property (nonatomic, assign) BOOL validatesCertificateChain; - -/** - The certificates used to evaluate server trust according to the SSL pinning mode. By default, this property is set to any (`.cer`) certificates included in the app bundle. - */ -@property (nonatomic, strong) NSArray *pinnedCertificates; - -/** - Whether or not to trust servers with an invalid or expired SSL certificates. Defaults to `NO`. - */ -@property (nonatomic, assign) BOOL allowInvalidCertificates; - -/** - Whether or not to validate the domain name in the certificate's CN field. Defaults to `YES`. - */ -@property (nonatomic, assign) BOOL validatesDomainName; - -///----------------------------------------- -/// @name Getting Specific Security Policies -///----------------------------------------- - -/** - Returns the shared default security policy, which does not allow invalid certificates, validates domain name, and does not validate against pinned certificates or public keys. - - @return The default security policy. - */ -+ (instancetype)defaultPolicy; - -///--------------------- -/// @name Initialization -///--------------------- - -/** - Creates and returns a security policy with the specified pinning mode. - - @param pinningMode The SSL pinning mode. - - @return A new security policy. - */ -+ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode; - -///------------------------------ -/// @name Evaluating Server Trust -///------------------------------ - -/** - Whether or not the specified server trust should be accepted, based on the security policy. - - This method should be used when responding to an authentication challenge from a server. - - @param serverTrust The X.509 certificate trust of the server. - - @return Whether or not to trust the server. - - @warning This method has been deprecated in favor of `-evaluateServerTrust:forDomain:`. - */ -- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust DEPRECATED_ATTRIBUTE; - -/** - Whether or not the specified server trust should be accepted, based on the security policy. - - This method should be used when responding to an authentication challenge from a server. - - @param serverTrust The X.509 certificate trust of the server. - @param domain The domain of serverTrust. If `nil`, the domain will not be validated. - - @return Whether or not to trust the server. - */ -- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust - forDomain:(NSString *)domain; - -@end - -///---------------- -/// @name Constants -///---------------- - -/** - ## SSL Pinning Modes - - The following constants are provided by `AFSSLPinningMode` as possible SSL pinning modes. - - enum { - AFSSLPinningModeNone, - AFSSLPinningModePublicKey, - AFSSLPinningModeCertificate, - } - - `AFSSLPinningModeNone` - Do not used pinned certificates to validate servers. - - `AFSSLPinningModePublicKey` - Validate host certificates against public keys of pinned certificates. - - `AFSSLPinningModeCertificate` - Validate host certificates against pinned certificates. -*/ diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m deleted file mode 100644 index 2bbff624654..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFSecurityPolicy.m +++ /dev/null @@ -1,308 +0,0 @@ -// AFSecurityPolicy.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFSecurityPolicy.h" - -#import - -#if !defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -static NSData * AFSecKeyGetData(SecKeyRef key) { - CFDataRef data = NULL; - - __Require_noErr_Quiet(SecItemExport(key, kSecFormatUnknown, kSecItemPemArmour, NULL, &data), _out); - - return (__bridge_transfer NSData *)data; - -_out: - if (data) { - CFRelease(data); - } - - return nil; -} -#endif - -static BOOL AFSecKeyIsEqualToKey(SecKeyRef key1, SecKeyRef key2) { -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - return [(__bridge id)key1 isEqual:(__bridge id)key2]; -#else - return [AFSecKeyGetData(key1) isEqual:AFSecKeyGetData(key2)]; -#endif -} - -static id AFPublicKeyForCertificate(NSData *certificate) { - id allowedPublicKey = nil; - SecCertificateRef allowedCertificate; - SecCertificateRef allowedCertificates[1]; - CFArrayRef tempCertificates = nil; - SecPolicyRef policy = nil; - SecTrustRef allowedTrust = nil; - SecTrustResultType result; - - allowedCertificate = SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificate); - __Require_Quiet(allowedCertificate != NULL, _out); - - allowedCertificates[0] = allowedCertificate; - tempCertificates = CFArrayCreate(NULL, (const void **)allowedCertificates, 1, NULL); - - policy = SecPolicyCreateBasicX509(); - __Require_noErr_Quiet(SecTrustCreateWithCertificates(tempCertificates, policy, &allowedTrust), _out); - __Require_noErr_Quiet(SecTrustEvaluate(allowedTrust, &result), _out); - - allowedPublicKey = (__bridge_transfer id)SecTrustCopyPublicKey(allowedTrust); - -_out: - if (allowedTrust) { - CFRelease(allowedTrust); - } - - if (policy) { - CFRelease(policy); - } - - if (tempCertificates) { - CFRelease(tempCertificates); - } - - if (allowedCertificate) { - CFRelease(allowedCertificate); - } - - return allowedPublicKey; -} - -static BOOL AFServerTrustIsValid(SecTrustRef serverTrust) { - BOOL isValid = NO; - SecTrustResultType result; - __Require_noErr_Quiet(SecTrustEvaluate(serverTrust, &result), _out); - - isValid = (result == kSecTrustResultUnspecified || result == kSecTrustResultProceed); - -_out: - return isValid; -} - -static NSArray * AFCertificateTrustChainForServerTrust(SecTrustRef serverTrust) { - CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); - NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:(NSUInteger)certificateCount]; - - for (CFIndex i = 0; i < certificateCount; i++) { - SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); - [trustChain addObject:(__bridge_transfer NSData *)SecCertificateCopyData(certificate)]; - } - - return [NSArray arrayWithArray:trustChain]; -} - -static NSArray * AFPublicKeyTrustChainForServerTrust(SecTrustRef serverTrust) { - SecPolicyRef policy = SecPolicyCreateBasicX509(); - CFIndex certificateCount = SecTrustGetCertificateCount(serverTrust); - NSMutableArray *trustChain = [NSMutableArray arrayWithCapacity:(NSUInteger)certificateCount]; - for (CFIndex i = 0; i < certificateCount; i++) { - SecCertificateRef certificate = SecTrustGetCertificateAtIndex(serverTrust, i); - - SecCertificateRef someCertificates[] = {certificate}; - CFArrayRef certificates = CFArrayCreate(NULL, (const void **)someCertificates, 1, NULL); - - SecTrustRef trust; - __Require_noErr_Quiet(SecTrustCreateWithCertificates(certificates, policy, &trust), _out); - - SecTrustResultType result; - __Require_noErr_Quiet(SecTrustEvaluate(trust, &result), _out); - - [trustChain addObject:(__bridge_transfer id)SecTrustCopyPublicKey(trust)]; - - _out: - if (trust) { - CFRelease(trust); - } - - if (certificates) { - CFRelease(certificates); - } - - continue; - } - CFRelease(policy); - - return [NSArray arrayWithArray:trustChain]; -} - -#pragma mark - - -@interface AFSecurityPolicy() -@property (readwrite, nonatomic, assign) AFSSLPinningMode SSLPinningMode; -@property (readwrite, nonatomic, strong) NSArray *pinnedPublicKeys; -@end - -@implementation AFSecurityPolicy - -+ (NSArray *)defaultPinnedCertificates { - static NSArray *_defaultPinnedCertificates = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; - NSArray *paths = [bundle pathsForResourcesOfType:@"cer" inDirectory:@"."]; - - NSMutableArray *certificates = [NSMutableArray arrayWithCapacity:[paths count]]; - for (NSString *path in paths) { - NSData *certificateData = [NSData dataWithContentsOfFile:path]; - [certificates addObject:certificateData]; - } - - _defaultPinnedCertificates = [[NSArray alloc] initWithArray:certificates]; - }); - - return _defaultPinnedCertificates; -} - -+ (instancetype)defaultPolicy { - AFSecurityPolicy *securityPolicy = [[self alloc] init]; - securityPolicy.SSLPinningMode = AFSSLPinningModeNone; - - return securityPolicy; -} - -+ (instancetype)policyWithPinningMode:(AFSSLPinningMode)pinningMode { - AFSecurityPolicy *securityPolicy = [[self alloc] init]; - securityPolicy.SSLPinningMode = pinningMode; - - [securityPolicy setPinnedCertificates:[self defaultPinnedCertificates]]; - - return securityPolicy; -} - -- (id)init { - self = [super init]; - if (!self) { - return nil; - } - - self.validatesCertificateChain = YES; - self.validatesDomainName = YES; - - return self; -} - -- (void)setPinnedCertificates:(NSArray *)pinnedCertificates { - _pinnedCertificates = pinnedCertificates; - - if (self.pinnedCertificates) { - NSMutableArray *mutablePinnedPublicKeys = [NSMutableArray arrayWithCapacity:[self.pinnedCertificates count]]; - for (NSData *certificate in self.pinnedCertificates) { - id publicKey = AFPublicKeyForCertificate(certificate); - if (!publicKey) { - continue; - } - [mutablePinnedPublicKeys addObject:publicKey]; - } - self.pinnedPublicKeys = [NSArray arrayWithArray:mutablePinnedPublicKeys]; - } else { - self.pinnedPublicKeys = nil; - } -} - -#pragma mark - - -- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust { - return [self evaluateServerTrust:serverTrust forDomain:nil]; -} - -- (BOOL)evaluateServerTrust:(SecTrustRef)serverTrust - forDomain:(NSString *)domain -{ - NSMutableArray *policies = [NSMutableArray array]; - if (self.validatesDomainName) { - [policies addObject:(__bridge_transfer id)SecPolicyCreateSSL(true, (__bridge CFStringRef)domain)]; - } else { - [policies addObject:(__bridge_transfer id)SecPolicyCreateBasicX509()]; - } - - SecTrustSetPolicies(serverTrust, (__bridge CFArrayRef)policies); - - if (self.SSLPinningMode == AFSSLPinningModeNone) { - if (self.allowInvalidCertificates || AFServerTrustIsValid(serverTrust)){ - return YES; - } else { - return NO; - } - } else if (!AFServerTrustIsValid(serverTrust) && !self.allowInvalidCertificates) { - return NO; - } - - NSArray *serverCertificates = AFCertificateTrustChainForServerTrust(serverTrust); - switch (self.SSLPinningMode) { - case AFSSLPinningModeNone: - default: - return NO; - case AFSSLPinningModeCertificate: { - NSMutableArray *pinnedCertificates = [NSMutableArray array]; - for (NSData *certificateData in self.pinnedCertificates) { - [pinnedCertificates addObject:(__bridge_transfer id)SecCertificateCreateWithData(NULL, (__bridge CFDataRef)certificateData)]; - } - SecTrustSetAnchorCertificates(serverTrust, (__bridge CFArrayRef)pinnedCertificates); - - if (!AFServerTrustIsValid(serverTrust)) { - return NO; - } - - if (!self.validatesCertificateChain) { - return YES; - } - - NSUInteger trustedCertificateCount = 0; - for (NSData *trustChainCertificate in serverCertificates) { - if ([self.pinnedCertificates containsObject:trustChainCertificate]) { - trustedCertificateCount++; - } - } - - return trustedCertificateCount == [serverCertificates count]; - } - case AFSSLPinningModePublicKey: { - NSUInteger trustedPublicKeyCount = 0; - NSArray *publicKeys = AFPublicKeyTrustChainForServerTrust(serverTrust); - if (!self.validatesCertificateChain && [publicKeys count] > 0) { - publicKeys = @[[publicKeys firstObject]]; - } - - for (id trustChainPublicKey in publicKeys) { - for (id pinnedPublicKey in self.pinnedPublicKeys) { - if (AFSecKeyIsEqualToKey((__bridge SecKeyRef)trustChainPublicKey, (__bridge SecKeyRef)pinnedPublicKey)) { - trustedPublicKeyCount += 1; - } - } - } - - return trustedPublicKeyCount > 0 && ((self.validatesCertificateChain && trustedPublicKeyCount == [serverCertificates count]) || (!self.validatesCertificateChain && trustedPublicKeyCount >= 1)); - } - } - - return NO; -} - -#pragma mark - NSKeyValueObserving - -+ (NSSet *)keyPathsForValuesAffectingPinnedPublicKeys { - return [NSSet setWithObject:@"pinnedCertificates"]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h deleted file mode 100644 index 0248e6772b5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.h +++ /dev/null @@ -1,343 +0,0 @@ -// AFURLConnectionOperation.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import -#import "AFURLRequestSerialization.h" -#import "AFURLResponseSerialization.h" -#import "AFSecurityPolicy.h" - -#ifndef NS_DESIGNATED_INITIALIZER -#if __has_attribute(objc_designated_initializer) -#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -#else -#define NS_DESIGNATED_INITIALIZER -#endif -#endif - -/** - `AFURLConnectionOperation` is a subclass of `NSOperation` that implements `NSURLConnection` delegate methods. - - ## Subclassing Notes - - This is the base class of all network request operations. You may wish to create your own subclass in order to implement additional `NSURLConnection` delegate methods (see "`NSURLConnection` Delegate Methods" below), or to provide additional properties and/or class constructors. - - If you are creating a subclass that communicates over the HTTP or HTTPS protocols, you may want to consider subclassing `AFHTTPRequestOperation` instead, as it supports specifying acceptable content types or status codes. - - ## NSURLConnection Delegate Methods - - `AFURLConnectionOperation` implements the following `NSURLConnection` delegate methods: - - - `connection:didReceiveResponse:` - - `connection:didReceiveData:` - - `connectionDidFinishLoading:` - - `connection:didFailWithError:` - - `connection:didSendBodyData:totalBytesWritten:totalBytesExpectedToWrite:` - - `connection:willCacheResponse:` - - `connectionShouldUseCredentialStorage:` - - `connection:needNewBodyStream:` - - `connection:willSendRequestForAuthenticationChallenge:` - - If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. - - ## Callbacks and Completion Blocks - - The built-in `completionBlock` provided by `NSOperation` allows for custom behavior to be executed after the request finishes. It is a common pattern for class constructors in subclasses to take callback block parameters, and execute them conditionally in the body of its `completionBlock`. Make sure to handle cancelled operations appropriately when setting a `completionBlock` (i.e. returning early before parsing response data). See the implementation of any of the `AFHTTPRequestOperation` subclasses for an example of this. - - Subclasses are strongly discouraged from overriding `setCompletionBlock:`, as `AFURLConnectionOperation`'s implementation includes a workaround to mitigate retain cycles, and what Apple rather ominously refers to as ["The Deallocation Problem"](http://developer.apple.com/library/ios/#technotes/tn2109/). - - ## SSL Pinning - - Relying on the CA trust model to validate SSL certificates exposes your app to security vulnerabilities, such as man-in-the-middle attacks. For applications that connect to known servers, SSL certificate pinning provides an increased level of security, by checking server certificate validity against those specified in the app bundle. - - SSL with certificate pinning is strongly recommended for any application that transmits sensitive information to an external webservice. - - Connections will be validated on all matching certificates with a `.cer` extension in the bundle root. - - ## App Extensions - - When using AFNetworking in an App Extension, `#define AF_APP_EXTENSIONS` to avoid using unavailable APIs. - - ## NSCoding & NSCopying Conformance - - `AFURLConnectionOperation` conforms to the `NSCoding` and `NSCopying` protocols, allowing operations to be archived to disk, and copied in memory, respectively. However, because of the intrinsic limitations of capturing the exact state of an operation at a particular moment, there are some important caveats to keep in mind: - - ### NSCoding Caveats - - - Encoded operations do not include any block or stream properties. Be sure to set `completionBlock`, `outputStream`, and any callback blocks as necessary when using `-initWithCoder:` or `NSKeyedUnarchiver`. - - Operations are paused on `encodeWithCoder:`. If the operation was encoded while paused or still executing, its archived state will return `YES` for `isReady`. Otherwise, the state of an operation when encoding will remain unchanged. - - ### NSCopying Caveats - - - `-copy` and `-copyWithZone:` return a new operation with the `NSURLRequest` of the original. So rather than an exact copy of the operation at that particular instant, the copying mechanism returns a completely new instance, which can be useful for retrying operations. - - A copy of an operation will not include the `outputStream` of the original. - - Operation copies do not include `completionBlock`, as it often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ operation when copied. - */ - -@interface AFURLConnectionOperation : NSOperation - -///------------------------------- -/// @name Accessing Run Loop Modes -///------------------------------- - -/** - The run loop modes in which the operation will run on the network thread. By default, this is a single-member set containing `NSRunLoopCommonModes`. - */ -@property (nonatomic, strong) NSSet *runLoopModes; - -///----------------------------------------- -/// @name Getting URL Connection Information -///----------------------------------------- - -/** - The request used by the operation's connection. - */ -@property (readonly, nonatomic, strong) NSURLRequest *request; - -/** - The last response received by the operation's connection. - */ -@property (readonly, nonatomic, strong) NSURLResponse *response; - -/** - The error, if any, that occurred in the lifecycle of the request. - */ -@property (readonly, nonatomic, strong) NSError *error; - -///---------------------------- -/// @name Getting Response Data -///---------------------------- - -/** - The data received during the request. - */ -@property (readonly, nonatomic, strong) NSData *responseData; - -/** - The string representation of the response data. - */ -@property (readonly, nonatomic, copy) NSString *responseString; - -/** - The string encoding of the response. - - If the response does not specify a valid string encoding, `responseStringEncoding` will return `NSUTF8StringEncoding`. - */ -@property (readonly, nonatomic, assign) NSStringEncoding responseStringEncoding; - -///------------------------------- -/// @name Managing URL Credentials -///------------------------------- - -/** - Whether the URL connection should consult the credential storage for authenticating the connection. `YES` by default. - - This is the value that is returned in the `NSURLConnectionDelegate` method `-connectionShouldUseCredentialStorage:`. - */ -@property (nonatomic, assign) BOOL shouldUseCredentialStorage; - -/** - The credential used for authentication challenges in `-connection:didReceiveAuthenticationChallenge:`. - - This will be overridden by any shared credentials that exist for the username or password of the request URL, if present. - */ -@property (nonatomic, strong) NSURLCredential *credential; - -///------------------------------- -/// @name Managing Security Policy -///------------------------------- - -/** - The security policy used to evaluate server trust for secure connections. - */ -@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; - -///------------------------ -/// @name Accessing Streams -///------------------------ - -/** - The input stream used to read data to be sent during the request. - - This property acts as a proxy to the `HTTPBodyStream` property of `request`. - */ -@property (nonatomic, strong) NSInputStream *inputStream; - -/** - The output stream that is used to write data received until the request is finished. - - By default, data is accumulated into a buffer that is stored into `responseData` upon completion of the request, with the intermediary `outputStream` property set to `nil`. When `outputStream` is set, the data will not be accumulated into an internal buffer, and as a result, the `responseData` property of the completed request will be `nil`. The output stream will be scheduled in the network thread runloop upon being set. - */ -@property (nonatomic, strong) NSOutputStream *outputStream; - -///--------------------------------- -/// @name Managing Callback Queues -///--------------------------------- - -/** - The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. - */ -#if OS_OBJECT_HAVE_OBJC_SUPPORT -@property (nonatomic, strong) dispatch_queue_t completionQueue; -#else -@property (nonatomic, assign) dispatch_queue_t completionQueue; -#endif - -/** - The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. - */ -#if OS_OBJECT_HAVE_OBJC_SUPPORT -@property (nonatomic, strong) dispatch_group_t completionGroup; -#else -@property (nonatomic, assign) dispatch_group_t completionGroup; -#endif - -///--------------------------------------------- -/// @name Managing Request Operation Information -///--------------------------------------------- - -/** - The user info dictionary for the receiver. - */ -@property (nonatomic, strong) NSDictionary *userInfo; - -///------------------------------------------------------ -/// @name Initializing an AFURLConnectionOperation Object -///------------------------------------------------------ - -/** - Initializes and returns a newly allocated operation object with a url connection configured with the specified url request. - - This is the designated initializer. - - @param urlRequest The request object to be used by the operation connection. - */ -- (instancetype)initWithRequest:(NSURLRequest *)urlRequest NS_DESIGNATED_INITIALIZER; - -///---------------------------------- -/// @name Pausing / Resuming Requests -///---------------------------------- - -/** - Pauses the execution of the request operation. - - A paused operation returns `NO` for `-isReady`, `-isExecuting`, and `-isFinished`. As such, it will remain in an `NSOperationQueue` until it is either cancelled or resumed. Pausing a finished, cancelled, or paused operation has no effect. - */ -- (void)pause; - -/** - Whether the request operation is currently paused. - - @return `YES` if the operation is currently paused, otherwise `NO`. - */ -- (BOOL)isPaused; - -/** - Resumes the execution of the paused request operation. - - Pause/Resume behavior varies depending on the underlying implementation for the operation class. In its base implementation, resuming a paused requests restarts the original request. However, since HTTP defines a specification for how to request a specific content range, `AFHTTPRequestOperation` will resume downloading the request from where it left off, instead of restarting the original request. - */ -- (void)resume; - -///---------------------------------------------- -/// @name Configuring Backgrounding Task Behavior -///---------------------------------------------- - -/** - Specifies that the operation should continue execution after the app has entered the background, and the expiration handler for that background task. - - @param handler A handler to be called shortly before the application’s remaining background time reaches 0. The handler is wrapped in a block that cancels the operation, and cleans up and marks the end of execution, unlike the `handler` parameter in `UIApplication -beginBackgroundTaskWithExpirationHandler:`, which expects this to be done in the handler itself. The handler is called synchronously on the main thread, thus blocking the application’s suspension momentarily while the application is notified. - */ -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) -- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler; -#endif - -///--------------------------------- -/// @name Setting Progress Callbacks -///--------------------------------- - -/** - Sets a callback to be called when an undetermined number of bytes have been uploaded to the server. - - @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes three arguments: the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. - */ -- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block; - -/** - Sets a callback to be called when an undetermined number of bytes have been downloaded from the server. - - @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. - */ -- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block; - -///------------------------------------------------- -/// @name Setting NSURLConnection Delegate Callbacks -///------------------------------------------------- - -/** - Sets a block to be executed when the connection will authenticate a challenge in order to download its request, as handled by the `NSURLConnectionDelegate` method `connection:willSendRequestForAuthenticationChallenge:`. - - @param block A block object to be executed when the connection will authenticate a challenge in order to download its request. The block has no return type and takes two arguments: the URL connection object, and the challenge that must be authenticated. This block must invoke one of the challenge-responder methods (NSURLAuthenticationChallengeSender protocol). - - If `allowsInvalidSSLCertificate` is set to YES, `connection:willSendRequestForAuthenticationChallenge:` will attempt to have the challenge sender use credentials with invalid SSL certificates. - */ -- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block; - -/** - Sets a block to be executed when the server redirects the request from one URL to another URL, or when the request URL changed by the `NSURLProtocol` subclass handling the request in order to standardize its format, as handled by the `NSURLConnectionDataDelegate` method `connection:willSendRequest:redirectResponse:`. - - @param block A block object to be executed when the request URL was changed. The block returns an `NSURLRequest` object, the URL request to redirect, and takes three arguments: the URL connection object, the the proposed redirected request, and the URL response that caused the redirect. - */ -- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block; - - -/** - Sets a block to be executed to modify the response a connection will cache, if any, as handled by the `NSURLConnectionDelegate` method `connection:willCacheResponse:`. - - @param block A block object to be executed to determine what response a connection will cache, if any. The block returns an `NSCachedURLResponse` object, the cached response to store in memory or `nil` to prevent the response from being cached, and takes two arguments: the URL connection object, and the cached response provided for the request. - */ -- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block; - -/// - -/** - - */ -+ (NSArray *)batchOfRequestOperations:(NSArray *)operations - progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock - completionBlock:(void (^)(NSArray *operations))completionBlock; - -@end - -///-------------------- -/// @name Notifications -///-------------------- - -/** - Posted when an operation begins executing. - */ -extern NSString * const AFNetworkingOperationDidStartNotification; - -/** - Posted when an operation finishes. - */ -extern NSString * const AFNetworkingOperationDidFinishNotification; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m deleted file mode 100644 index 8d320924119..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLConnectionOperation.m +++ /dev/null @@ -1,788 +0,0 @@ -// AFURLConnectionOperation.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFURLConnectionOperation.h" - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#endif - -#if !__has_feature(objc_arc) -#error AFNetworking must be built with ARC. -// You can turn on ARC for only AFNetworking files by adding -fobjc-arc to the build phase for each of its files. -#endif - -typedef NS_ENUM(NSInteger, AFOperationState) { - AFOperationPausedState = -1, - AFOperationReadyState = 1, - AFOperationExecutingState = 2, - AFOperationFinishedState = 3, -}; - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) -typedef UIBackgroundTaskIdentifier AFBackgroundTaskIdentifier; -#else -typedef id AFBackgroundTaskIdentifier; -#endif - -static dispatch_group_t url_request_operation_completion_group() { - static dispatch_group_t af_url_request_operation_completion_group; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_url_request_operation_completion_group = dispatch_group_create(); - }); - - return af_url_request_operation_completion_group; -} - -static dispatch_queue_t url_request_operation_completion_queue() { - static dispatch_queue_t af_url_request_operation_completion_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_url_request_operation_completion_queue = dispatch_queue_create("com.alamofire.networking.operation.queue", DISPATCH_QUEUE_CONCURRENT ); - }); - - return af_url_request_operation_completion_queue; -} - -static NSString * const kAFNetworkingLockName = @"com.alamofire.networking.operation.lock"; - -NSString * const AFNetworkingOperationDidStartNotification = @"com.alamofire.networking.operation.start"; -NSString * const AFNetworkingOperationDidFinishNotification = @"com.alamofire.networking.operation.finish"; - -typedef void (^AFURLConnectionOperationProgressBlock)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); -typedef void (^AFURLConnectionOperationAuthenticationChallengeBlock)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge); -typedef NSCachedURLResponse * (^AFURLConnectionOperationCacheResponseBlock)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse); -typedef NSURLRequest * (^AFURLConnectionOperationRedirectResponseBlock)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse); - -static inline NSString * AFKeyPathFromOperationState(AFOperationState state) { - switch (state) { - case AFOperationReadyState: - return @"isReady"; - case AFOperationExecutingState: - return @"isExecuting"; - case AFOperationFinishedState: - return @"isFinished"; - case AFOperationPausedState: - return @"isPaused"; - default: { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunreachable-code" - return @"state"; -#pragma clang diagnostic pop - } - } -} - -static inline BOOL AFStateTransitionIsValid(AFOperationState fromState, AFOperationState toState, BOOL isCancelled) { - switch (fromState) { - case AFOperationReadyState: - switch (toState) { - case AFOperationPausedState: - case AFOperationExecutingState: - return YES; - case AFOperationFinishedState: - return isCancelled; - default: - return NO; - } - case AFOperationExecutingState: - switch (toState) { - case AFOperationPausedState: - case AFOperationFinishedState: - return YES; - default: - return NO; - } - case AFOperationFinishedState: - return NO; - case AFOperationPausedState: - return toState == AFOperationReadyState; - default: { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wunreachable-code" - switch (toState) { - case AFOperationPausedState: - case AFOperationReadyState: - case AFOperationExecutingState: - case AFOperationFinishedState: - return YES; - default: - return NO; - } - } -#pragma clang diagnostic pop - } -} - -@interface AFURLConnectionOperation () -@property (readwrite, nonatomic, assign) AFOperationState state; -@property (readwrite, nonatomic, strong) NSRecursiveLock *lock; -@property (readwrite, nonatomic, strong) NSURLConnection *connection; -@property (readwrite, nonatomic, strong) NSURLRequest *request; -@property (readwrite, nonatomic, strong) NSURLResponse *response; -@property (readwrite, nonatomic, strong) NSError *error; -@property (readwrite, nonatomic, strong) NSData *responseData; -@property (readwrite, nonatomic, copy) NSString *responseString; -@property (readwrite, nonatomic, assign) NSStringEncoding responseStringEncoding; -@property (readwrite, nonatomic, assign) long long totalBytesRead; -@property (readwrite, nonatomic, assign) AFBackgroundTaskIdentifier backgroundTaskIdentifier; -@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock uploadProgress; -@property (readwrite, nonatomic, copy) AFURLConnectionOperationProgressBlock downloadProgress; -@property (readwrite, nonatomic, copy) AFURLConnectionOperationAuthenticationChallengeBlock authenticationChallenge; -@property (readwrite, nonatomic, copy) AFURLConnectionOperationCacheResponseBlock cacheResponse; -@property (readwrite, nonatomic, copy) AFURLConnectionOperationRedirectResponseBlock redirectResponse; - -- (void)operationDidStart; -- (void)finish; -- (void)cancelConnection; -@end - -@implementation AFURLConnectionOperation -@synthesize outputStream = _outputStream; - -+ (void)networkRequestThreadEntryPoint:(id)__unused object { - @autoreleasepool { - [[NSThread currentThread] setName:@"AFNetworking"]; - - NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; - [runLoop addPort:[NSMachPort port] forMode:NSDefaultRunLoopMode]; - [runLoop run]; - } -} - -+ (NSThread *)networkRequestThread { - static NSThread *_networkRequestThread = nil; - static dispatch_once_t oncePredicate; - dispatch_once(&oncePredicate, ^{ - _networkRequestThread = [[NSThread alloc] initWithTarget:self selector:@selector(networkRequestThreadEntryPoint:) object:nil]; - [_networkRequestThread start]; - }); - - return _networkRequestThread; -} - -- (instancetype)initWithRequest:(NSURLRequest *)urlRequest { - NSParameterAssert(urlRequest); - - self = [super init]; - if (!self) { - return nil; - } - - _state = AFOperationReadyState; - - self.lock = [[NSRecursiveLock alloc] init]; - self.lock.name = kAFNetworkingLockName; - - self.runLoopModes = [NSSet setWithObject:NSRunLoopCommonModes]; - - self.request = urlRequest; - - self.shouldUseCredentialStorage = YES; - - self.securityPolicy = [AFSecurityPolicy defaultPolicy]; - - return self; -} - -- (void)dealloc { - if (_outputStream) { - [_outputStream close]; - _outputStream = nil; - } - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) - if (_backgroundTaskIdentifier) { - [[UIApplication sharedApplication] endBackgroundTask:_backgroundTaskIdentifier]; - _backgroundTaskIdentifier = UIBackgroundTaskInvalid; - } -#endif -} - -#pragma mark - - -- (void)setResponseData:(NSData *)responseData { - [self.lock lock]; - if (!responseData) { - _responseData = nil; - } else { - _responseData = [NSData dataWithBytes:responseData.bytes length:responseData.length]; - } - [self.lock unlock]; -} - -- (NSString *)responseString { - [self.lock lock]; - if (!_responseString && self.response && self.responseData) { - self.responseString = [[NSString alloc] initWithData:self.responseData encoding:self.responseStringEncoding]; - } - [self.lock unlock]; - - return _responseString; -} - -- (NSStringEncoding)responseStringEncoding { - [self.lock lock]; - if (!_responseStringEncoding && self.response) { - NSStringEncoding stringEncoding = NSUTF8StringEncoding; - if (self.response.textEncodingName) { - CFStringEncoding IANAEncoding = CFStringConvertIANACharSetNameToEncoding((__bridge CFStringRef)self.response.textEncodingName); - if (IANAEncoding != kCFStringEncodingInvalidId) { - stringEncoding = CFStringConvertEncodingToNSStringEncoding(IANAEncoding); - } - } - - self.responseStringEncoding = stringEncoding; - } - [self.lock unlock]; - - return _responseStringEncoding; -} - -- (NSInputStream *)inputStream { - return self.request.HTTPBodyStream; -} - -- (void)setInputStream:(NSInputStream *)inputStream { - NSMutableURLRequest *mutableRequest = [self.request mutableCopy]; - mutableRequest.HTTPBodyStream = inputStream; - self.request = mutableRequest; -} - -- (NSOutputStream *)outputStream { - if (!_outputStream) { - self.outputStream = [NSOutputStream outputStreamToMemory]; - } - - return _outputStream; -} - -- (void)setOutputStream:(NSOutputStream *)outputStream { - [self.lock lock]; - if (outputStream != _outputStream) { - if (_outputStream) { - [_outputStream close]; - } - - _outputStream = outputStream; - } - [self.lock unlock]; -} - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) -- (void)setShouldExecuteAsBackgroundTaskWithExpirationHandler:(void (^)(void))handler { - [self.lock lock]; - if (!self.backgroundTaskIdentifier) { - UIApplication *application = [UIApplication sharedApplication]; - __weak __typeof(self)weakSelf = self; - self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{ - __strong __typeof(weakSelf)strongSelf = weakSelf; - - if (handler) { - handler(); - } - - if (strongSelf) { - [strongSelf cancel]; - - [application endBackgroundTask:strongSelf.backgroundTaskIdentifier]; - strongSelf.backgroundTaskIdentifier = UIBackgroundTaskInvalid; - } - }]; - } - [self.lock unlock]; -} -#endif - -#pragma mark - - -- (void)setState:(AFOperationState)state { - if (!AFStateTransitionIsValid(self.state, state, [self isCancelled])) { - return; - } - - [self.lock lock]; - NSString *oldStateKey = AFKeyPathFromOperationState(self.state); - NSString *newStateKey = AFKeyPathFromOperationState(state); - - [self willChangeValueForKey:newStateKey]; - [self willChangeValueForKey:oldStateKey]; - _state = state; - [self didChangeValueForKey:oldStateKey]; - [self didChangeValueForKey:newStateKey]; - [self.lock unlock]; -} - -- (void)pause { - if ([self isPaused] || [self isFinished] || [self isCancelled]) { - return; - } - - [self.lock lock]; - if ([self isExecuting]) { - [self performSelector:@selector(operationDidPause) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; - - dispatch_async(dispatch_get_main_queue(), ^{ - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - [notificationCenter postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; - }); - } - - self.state = AFOperationPausedState; - [self.lock unlock]; -} - -- (void)operationDidPause { - [self.lock lock]; - [self.connection cancel]; - [self.lock unlock]; -} - -- (BOOL)isPaused { - return self.state == AFOperationPausedState; -} - -- (void)resume { - if (![self isPaused]) { - return; - } - - [self.lock lock]; - self.state = AFOperationReadyState; - - [self start]; - [self.lock unlock]; -} - -#pragma mark - - -- (void)setUploadProgressBlock:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))block { - self.uploadProgress = block; -} - -- (void)setDownloadProgressBlock:(void (^)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead))block { - self.downloadProgress = block; -} - -- (void)setWillSendRequestForAuthenticationChallengeBlock:(void (^)(NSURLConnection *connection, NSURLAuthenticationChallenge *challenge))block { - self.authenticationChallenge = block; -} - -- (void)setCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLConnection *connection, NSCachedURLResponse *cachedResponse))block { - self.cacheResponse = block; -} - -- (void)setRedirectResponseBlock:(NSURLRequest * (^)(NSURLConnection *connection, NSURLRequest *request, NSURLResponse *redirectResponse))block { - self.redirectResponse = block; -} - -#pragma mark - NSOperation - -- (void)setCompletionBlock:(void (^)(void))block { - [self.lock lock]; - if (!block) { - [super setCompletionBlock:nil]; - } else { - __weak __typeof(self)weakSelf = self; - [super setCompletionBlock:^ { - __strong __typeof(weakSelf)strongSelf = weakSelf; - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_group_t group = strongSelf.completionGroup ?: url_request_operation_completion_group(); - dispatch_queue_t queue = strongSelf.completionQueue ?: dispatch_get_main_queue(); -#pragma clang diagnostic pop - - dispatch_group_async(group, queue, ^{ - block(); - }); - - dispatch_group_notify(group, url_request_operation_completion_queue(), ^{ - [strongSelf setCompletionBlock:nil]; - }); - }]; - } - [self.lock unlock]; -} - -- (BOOL)isReady { - return self.state == AFOperationReadyState && [super isReady]; -} - -- (BOOL)isExecuting { - return self.state == AFOperationExecutingState; -} - -- (BOOL)isFinished { - return self.state == AFOperationFinishedState; -} - -- (BOOL)isConcurrent { - return YES; -} - -- (void)start { - [self.lock lock]; - if ([self isCancelled]) { - [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; - } else if ([self isReady]) { - self.state = AFOperationExecutingState; - - [self performSelector:@selector(operationDidStart) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; - } - [self.lock unlock]; -} - -- (void)operationDidStart { - [self.lock lock]; - if (![self isCancelled]) { - self.connection = [[NSURLConnection alloc] initWithRequest:self.request delegate:self startImmediately:NO]; - - NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; - for (NSString *runLoopMode in self.runLoopModes) { - [self.connection scheduleInRunLoop:runLoop forMode:runLoopMode]; - [self.outputStream scheduleInRunLoop:runLoop forMode:runLoopMode]; - } - - [self.outputStream open]; - [self.connection start]; - } - [self.lock unlock]; - - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidStartNotification object:self]; - }); -} - -- (void)finish { - [self.lock lock]; - self.state = AFOperationFinishedState; - [self.lock unlock]; - - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingOperationDidFinishNotification object:self]; - }); -} - -- (void)cancel { - [self.lock lock]; - if (![self isFinished] && ![self isCancelled]) { - [super cancel]; - - if ([self isExecuting]) { - [self performSelector:@selector(cancelConnection) onThread:[[self class] networkRequestThread] withObject:nil waitUntilDone:NO modes:[self.runLoopModes allObjects]]; - } - } - [self.lock unlock]; -} - -- (void)cancelConnection { - NSDictionary *userInfo = nil; - if ([self.request URL]) { - userInfo = [NSDictionary dictionaryWithObject:[self.request URL] forKey:NSURLErrorFailingURLErrorKey]; - } - NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorCancelled userInfo:userInfo]; - - if (![self isFinished]) { - if (self.connection) { - [self.connection cancel]; - [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:error]; - } else { - // Accomodate race condition where `self.connection` has not yet been set before cancellation - self.error = error; - [self finish]; - } - } -} - -#pragma mark - - -+ (NSArray *)batchOfRequestOperations:(NSArray *)operations - progressBlock:(void (^)(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations))progressBlock - completionBlock:(void (^)(NSArray *operations))completionBlock -{ - if (!operations || [operations count] == 0) { - return @[[NSBlockOperation blockOperationWithBlock:^{ - dispatch_async(dispatch_get_main_queue(), ^{ - if (completionBlock) { - completionBlock(@[]); - } - }); - }]]; - } - - __block dispatch_group_t group = dispatch_group_create(); - NSBlockOperation *batchedOperation = [NSBlockOperation blockOperationWithBlock:^{ - dispatch_group_notify(group, dispatch_get_main_queue(), ^{ - if (completionBlock) { - completionBlock(operations); - } - }); - }]; - - for (AFURLConnectionOperation *operation in operations) { - operation.completionGroup = group; - void (^originalCompletionBlock)(void) = [operation.completionBlock copy]; - __weak __typeof(operation)weakOperation = operation; - operation.completionBlock = ^{ - __strong __typeof(weakOperation)strongOperation = weakOperation; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - dispatch_queue_t queue = strongOperation.completionQueue ?: dispatch_get_main_queue(); -#pragma clang diagnostic pop - dispatch_group_async(group, queue, ^{ - if (originalCompletionBlock) { - originalCompletionBlock(); - } - - NSUInteger numberOfFinishedOperations = [[operations indexesOfObjectsPassingTest:^BOOL(id op, NSUInteger __unused idx, BOOL __unused *stop) { - return [op isFinished]; - }] count]; - - if (progressBlock) { - progressBlock(numberOfFinishedOperations, [operations count]); - } - - dispatch_group_leave(group); - }); - }; - - dispatch_group_enter(group); - [batchedOperation addDependency:operation]; - } - - return [operations arrayByAddingObject:batchedOperation]; -} - -#pragma mark - NSObject - -- (NSString *)description { - [self.lock lock]; - NSString *description = [NSString stringWithFormat:@"<%@: %p, state: %@, cancelled: %@ request: %@, response: %@>", NSStringFromClass([self class]), self, AFKeyPathFromOperationState(self.state), ([self isCancelled] ? @"YES" : @"NO"), self.request, self.response]; - [self.lock unlock]; - return description; -} - -#pragma mark - NSURLConnectionDelegate - -- (void)connection:(NSURLConnection *)connection -willSendRequestForAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge -{ - if (self.authenticationChallenge) { - self.authenticationChallenge(connection, challenge); - return; - } - - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { - NSURLCredential *credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - [[challenge sender] useCredential:credential forAuthenticationChallenge:challenge]; - } else { - [[challenge sender] cancelAuthenticationChallenge:challenge]; - } - } else { - if ([challenge previousFailureCount] == 0) { - if (self.credential) { - [[challenge sender] useCredential:self.credential forAuthenticationChallenge:challenge]; - } else { - [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; - } - } else { - [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge]; - } - } -} - -- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection __unused *)connection { - return self.shouldUseCredentialStorage; -} - -- (NSURLRequest *)connection:(NSURLConnection *)connection - willSendRequest:(NSURLRequest *)request - redirectResponse:(NSURLResponse *)redirectResponse -{ - if (self.redirectResponse) { - return self.redirectResponse(connection, request, redirectResponse); - } else { - return request; - } -} - -- (void)connection:(NSURLConnection __unused *)connection - didSendBodyData:(NSInteger)bytesWritten - totalBytesWritten:(NSInteger)totalBytesWritten -totalBytesExpectedToWrite:(NSInteger)totalBytesExpectedToWrite -{ - dispatch_async(dispatch_get_main_queue(), ^{ - if (self.uploadProgress) { - self.uploadProgress((NSUInteger)bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); - } - }); -} - -- (void)connection:(NSURLConnection __unused *)connection -didReceiveResponse:(NSURLResponse *)response -{ - self.response = response; -} - -- (void)connection:(NSURLConnection __unused *)connection - didReceiveData:(NSData *)data -{ - NSUInteger length = [data length]; - while (YES) { - NSInteger totalNumberOfBytesWritten = 0; - if ([self.outputStream hasSpaceAvailable]) { - const uint8_t *dataBuffer = (uint8_t *)[data bytes]; - - NSInteger numberOfBytesWritten = 0; - while (totalNumberOfBytesWritten < (NSInteger)length) { - numberOfBytesWritten = [self.outputStream write:&dataBuffer[(NSUInteger)totalNumberOfBytesWritten] maxLength:(length - (NSUInteger)totalNumberOfBytesWritten)]; - if (numberOfBytesWritten == -1) { - break; - } - - totalNumberOfBytesWritten += numberOfBytesWritten; - } - - break; - } - - if (self.outputStream.streamError) { - [self.connection cancel]; - [self performSelector:@selector(connection:didFailWithError:) withObject:self.connection withObject:self.outputStream.streamError]; - return; - } - } - - dispatch_async(dispatch_get_main_queue(), ^{ - self.totalBytesRead += (long long)length; - - if (self.downloadProgress) { - self.downloadProgress(length, self.totalBytesRead, self.response.expectedContentLength); - } - }); -} - -- (void)connectionDidFinishLoading:(NSURLConnection __unused *)connection { - self.responseData = [self.outputStream propertyForKey:NSStreamDataWrittenToMemoryStreamKey]; - - [self.outputStream close]; - if (self.responseData) { - self.outputStream = nil; - } - - self.connection = nil; - - [self finish]; -} - -- (void)connection:(NSURLConnection __unused *)connection - didFailWithError:(NSError *)error -{ - self.error = error; - - [self.outputStream close]; - if (self.responseData) { - self.outputStream = nil; - } - - self.connection = nil; - - [self finish]; -} - -- (NSCachedURLResponse *)connection:(NSURLConnection *)connection - willCacheResponse:(NSCachedURLResponse *)cachedResponse -{ - if (self.cacheResponse) { - return self.cacheResponse(connection, cachedResponse); - } else { - if ([self isCancelled]) { - return nil; - } - - return cachedResponse; - } -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - NSURLRequest *request = [decoder decodeObjectOfClass:[NSURLRequest class] forKey:NSStringFromSelector(@selector(request))]; - - self = [self initWithRequest:request]; - if (!self) { - return nil; - } - - self.state = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(state))] integerValue]; - self.response = [decoder decodeObjectOfClass:[NSHTTPURLResponse class] forKey:NSStringFromSelector(@selector(response))]; - self.error = [decoder decodeObjectOfClass:[NSError class] forKey:NSStringFromSelector(@selector(error))]; - self.responseData = [decoder decodeObjectOfClass:[NSData class] forKey:NSStringFromSelector(@selector(responseData))]; - self.totalBytesRead = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(totalBytesRead))] longLongValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [self pause]; - - [coder encodeObject:self.request forKey:NSStringFromSelector(@selector(request))]; - - switch (self.state) { - case AFOperationExecutingState: - case AFOperationPausedState: - [coder encodeInteger:AFOperationReadyState forKey:NSStringFromSelector(@selector(state))]; - break; - default: - [coder encodeInteger:self.state forKey:NSStringFromSelector(@selector(state))]; - break; - } - - [coder encodeObject:self.response forKey:NSStringFromSelector(@selector(response))]; - [coder encodeObject:self.error forKey:NSStringFromSelector(@selector(error))]; - [coder encodeObject:self.responseData forKey:NSStringFromSelector(@selector(responseData))]; - [coder encodeInt64:self.totalBytesRead forKey:NSStringFromSelector(@selector(totalBytesRead))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFURLConnectionOperation *operation = [(AFURLConnectionOperation *)[[self class] allocWithZone:zone] initWithRequest:self.request]; - - operation.uploadProgress = self.uploadProgress; - operation.downloadProgress = self.downloadProgress; - operation.authenticationChallenge = self.authenticationChallenge; - operation.cacheResponse = self.cacheResponse; - operation.redirectResponse = self.redirectResponse; - operation.completionQueue = self.completionQueue; - operation.completionGroup = self.completionGroup; - - return operation; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h deleted file mode 100644 index bb8d444562b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.h +++ /dev/null @@ -1,467 +0,0 @@ -// AFURLRequestSerialization.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#endif - -/** - The `AFURLRequestSerialization` protocol is adopted by an object that encodes parameters for a specified HTTP requests. Request serializers may encode parameters as query strings, HTTP bodies, setting the appropriate HTTP header fields as necessary. - - For example, a JSON request serializer may set the HTTP body of the request to a JSON representation, and set the `Content-Type` HTTP header field value to `application/json`. - */ -@protocol AFURLRequestSerialization - -/** - Returns a request with the specified parameters encoded into a copy of the original request. - - @param request The original request. - @param parameters The parameters to be encoded. - @param error The error that occurred while attempting to encode the request parameters. - - @return A serialized request. - */ -- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request - withParameters:(id)parameters - error:(NSError * __autoreleasing *)error; - -@end - -#pragma mark - - -/** - - */ -typedef NS_ENUM(NSUInteger, AFHTTPRequestQueryStringSerializationStyle) { - AFHTTPRequestQueryStringDefaultStyle = 0, -}; - -@protocol AFMultipartFormData; - -/** - `AFHTTPRequestSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. - - Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPRequestSerializer` in order to ensure consistent default behavior. - */ -@interface AFHTTPRequestSerializer : NSObject - -/** - The string encoding used to serialize parameters. `NSUTF8StringEncoding` by default. - */ -@property (nonatomic, assign) NSStringEncoding stringEncoding; - -/** - Whether created requests can use the device’s cellular radio (if present). `YES` by default. - - @see NSMutableURLRequest -setAllowsCellularAccess: - */ -@property (nonatomic, assign) BOOL allowsCellularAccess; - -/** - The cache policy of created requests. `NSURLRequestUseProtocolCachePolicy` by default. - - @see NSMutableURLRequest -setCachePolicy: - */ -@property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy; - -/** - Whether created requests should use the default cookie handling. `YES` by default. - - @see NSMutableURLRequest -setHTTPShouldHandleCookies: - */ -@property (nonatomic, assign) BOOL HTTPShouldHandleCookies; - -/** - Whether created requests can continue transmitting data before receiving a response from an earlier transmission. `NO` by default - - @see NSMutableURLRequest -setHTTPShouldUsePipelining: - */ -@property (nonatomic, assign) BOOL HTTPShouldUsePipelining; - -/** - The network service type for created requests. `NSURLNetworkServiceTypeDefault` by default. - - @see NSMutableURLRequest -setNetworkServiceType: - */ -@property (nonatomic, assign) NSURLRequestNetworkServiceType networkServiceType; - -/** - The timeout interval, in seconds, for created requests. The default timeout interval is 60 seconds. - - @see NSMutableURLRequest -setTimeoutInterval: - */ -@property (nonatomic, assign) NSTimeInterval timeoutInterval; - -///--------------------------------------- -/// @name Configuring HTTP Request Headers -///--------------------------------------- - -/** - Default HTTP header field values to be applied to serialized requests. By default, these include the following: - - - `Accept-Language` with the contents of `NSLocale +preferredLanguages` - - `User-Agent` with the contents of various bundle identifiers and OS designations - - @discussion To add or remove default request headers, use `setValue:forHTTPHeaderField:`. - */ -@property (readonly, nonatomic, strong) NSDictionary *HTTPRequestHeaders; - -/** - Creates and returns a serializer with default configuration. - */ -+ (instancetype)serializer; - -/** - Sets the value for the HTTP headers set in request objects made by the HTTP client. If `nil`, removes the existing value for that header. - - @param field The HTTP header to set a default value for - @param value The value set as default for the specified header, or `nil` - */ -- (void)setValue:(NSString *)value -forHTTPHeaderField:(NSString *)field; - -/** - Returns the value for the HTTP headers set in the request serializer. - - @param field The HTTP header to retrieve the default value for - - @return The value set as default for the specified header, or `nil` - */ -- (NSString *)valueForHTTPHeaderField:(NSString *)field; - -/** - Sets the "Authorization" HTTP header set in request objects made by the HTTP client to a basic authentication value with Base64-encoded username and password. This overwrites any existing value for this header. - - @param username The HTTP basic auth username - @param password The HTTP basic auth password - */ -- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username - password:(NSString *)password; - -/** - @deprecated This method has been deprecated. Use -setValue:forHTTPHeaderField: instead. - */ -- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token DEPRECATED_ATTRIBUTE; - - -/** - Clears any existing value for the "Authorization" HTTP header. - */ -- (void)clearAuthorizationHeader; - -///------------------------------------------------------- -/// @name Configuring Query String Parameter Serialization -///------------------------------------------------------- - -/** - HTTP methods for which serialized requests will encode parameters as a query string. `GET`, `HEAD`, and `DELETE` by default. - */ -@property (nonatomic, strong) NSSet *HTTPMethodsEncodingParametersInURI; - -/** - Set the method of query string serialization according to one of the pre-defined styles. - - @param style The serialization style. - - @see AFHTTPRequestQueryStringSerializationStyle - */ -- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style; - -/** - Set the a custom method of query string serialization according to the specified block. - - @param block A block that defines a process of encoding parameters into a query string. This block returns the query string and takes three arguments: the request, the parameters to encode, and the error that occurred when attempting to encode parameters for the given request. - */ -- (void)setQueryStringSerializationWithBlock:(NSString * (^)(NSURLRequest *request, id parameters, NSError * __autoreleasing *error))block; - -///------------------------------- -/// @name Creating Request Objects -///------------------------------- - -/** - @deprecated This method has been deprecated. Use -requestWithMethod:URLString:parameters:error: instead. - */ -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(id)parameters DEPRECATED_ATTRIBUTE; - -/** - Creates an `NSMutableURLRequest` object with the specified HTTP method and URL string. - - If the HTTP method is `GET`, `HEAD`, or `DELETE`, the parameters will be used to construct a url-encoded query string that is appended to the request's URL. Otherwise, the parameters will be encoded according to the value of the `parameterEncoding` property, and set as the request body. - - @param method The HTTP method for the request, such as `GET`, `POST`, `PUT`, or `DELETE`. This parameter must not be `nil`. - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be either set as a query string for `GET` requests, or the request HTTP body. - @param error The error that occured while constructing the request. - - @return An `NSMutableURLRequest` object. - */ -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(id)parameters - error:(NSError * __autoreleasing *)error; - -/** - @deprecated This method has been deprecated. Use -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error: instead. - */ -- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(NSDictionary *)parameters - constructingBodyWithBlock:(void (^)(id formData))block DEPRECATED_ATTRIBUTE; - -/** - Creates an `NSMutableURLRequest` object with the specified HTTP method and URLString, and constructs a `multipart/form-data` HTTP body, using the specified parameters and multipart form data block. See http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4.2 - - Multipart form requests are automatically streamed, reading files directly from disk along with in-memory data in a single HTTP body. The resulting `NSMutableURLRequest` object has an `HTTPBodyStream` property, so refrain from setting `HTTPBodyStream` or `HTTPBody` on this request object, as it will clear out the multipart form body stream. - - @param method The HTTP method for the request. This parameter must not be `GET` or `HEAD`, or `nil`. - @param URLString The URL string used to create the request URL. - @param parameters The parameters to be encoded and set in the request HTTP body. - @param block A block that takes a single argument and appends data to the HTTP body. The block argument is an object adopting the `AFMultipartFormData` protocol. - @param error The error that occured while constructing the request. - - @return An `NSMutableURLRequest` object - */ -- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(NSDictionary *)parameters - constructingBodyWithBlock:(void (^)(id formData))block - error:(NSError * __autoreleasing *)error; - -/** - Creates an `NSMutableURLRequest` by removing the `HTTPBodyStream` from a request, and asynchronously writing its contents into the specified file, invoking the completion handler when finished. - - @param request The multipart form request. The `HTTPBodyStream` property of `request` must not be `nil`. - @param fileURL The file URL to write multipart form contents to. - @param handler A handler block to execute. - - @discussion There is a bug in `NSURLSessionTask` that causes requests to not send a `Content-Length` header when streaming contents from an HTTP body, which is notably problematic when interacting with the Amazon S3 webservice. As a workaround, this method takes a request constructed with `multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:error:`, or any other request with an `HTTPBodyStream`, writes the contents to the specified file and returns a copy of the original request with the `HTTPBodyStream` property set to `nil`. From here, the file can either be passed to `AFURLSessionManager -uploadTaskWithRequest:fromFile:progress:completionHandler:`, or have its contents read into an `NSData` that's assigned to the `HTTPBody` property of the request. - - @see https://github.com/AFNetworking/AFNetworking/issues/1398 - */ -- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request - writingStreamContentsToFile:(NSURL *)fileURL - completionHandler:(void (^)(NSError *error))handler; - -@end - -#pragma mark - - -/** - The `AFMultipartFormData` protocol defines the methods supported by the parameter in the block argument of `AFHTTPRequestSerializer -multipartFormRequestWithMethod:URLString:parameters:constructingBodyWithBlock:`. - */ -@protocol AFMultipartFormData - -/** - Appends the HTTP header `Content-Disposition: file; filename=#{generated filename}; name=#{name}"` and `Content-Type: #{generated mimeType}`, followed by the encoded file data and the multipart form boundary. - - The filename and MIME type for this data in the form will be automatically generated, using the last path component of the `fileURL` and system associated MIME type for the `fileURL` extension, respectively. - - @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. - @param name The name to be associated with the specified data. This parameter must not be `nil`. - @param error If an error occurs, upon return contains an `NSError` object that describes the problem. - - @return `YES` if the file data was successfully appended, otherwise `NO`. - */ -- (BOOL)appendPartWithFileURL:(NSURL *)fileURL - name:(NSString *)name - error:(NSError * __autoreleasing *)error; - -/** - Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. - - @param fileURL The URL corresponding to the file whose content will be appended to the form. This parameter must not be `nil`. - @param name The name to be associated with the specified data. This parameter must not be `nil`. - @param fileName The file name to be used in the `Content-Disposition` header. This parameter must not be `nil`. - @param mimeType The declared MIME type of the file data. This parameter must not be `nil`. - @param error If an error occurs, upon return contains an `NSError` object that describes the problem. - - @return `YES` if the file data was successfully appended otherwise `NO`. - */ -- (BOOL)appendPartWithFileURL:(NSURL *)fileURL - name:(NSString *)name - fileName:(NSString *)fileName - mimeType:(NSString *)mimeType - error:(NSError * __autoreleasing *)error; - -/** - Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the data from the input stream and the multipart form boundary. - - @param inputStream The input stream to be appended to the form data - @param name The name to be associated with the specified input stream. This parameter must not be `nil`. - @param fileName The filename to be associated with the specified input stream. This parameter must not be `nil`. - @param length The length of the specified input stream in bytes. - @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. - */ -- (void)appendPartWithInputStream:(NSInputStream *)inputStream - name:(NSString *)name - fileName:(NSString *)fileName - length:(int64_t)length - mimeType:(NSString *)mimeType; - -/** - Appends the HTTP header `Content-Disposition: file; filename=#{filename}; name=#{name}"` and `Content-Type: #{mimeType}`, followed by the encoded file data and the multipart form boundary. - - @param data The data to be encoded and appended to the form data. - @param name The name to be associated with the specified data. This parameter must not be `nil`. - @param fileName The filename to be associated with the specified data. This parameter must not be `nil`. - @param mimeType The MIME type of the specified data. (For example, the MIME type for a JPEG image is image/jpeg.) For a list of valid MIME types, see http://www.iana.org/assignments/media-types/. This parameter must not be `nil`. - */ -- (void)appendPartWithFileData:(NSData *)data - name:(NSString *)name - fileName:(NSString *)fileName - mimeType:(NSString *)mimeType; - -/** - Appends the HTTP headers `Content-Disposition: form-data; name=#{name}"`, followed by the encoded data and the multipart form boundary. - - @param data The data to be encoded and appended to the form data. - @param name The name to be associated with the specified data. This parameter must not be `nil`. - */ - -- (void)appendPartWithFormData:(NSData *)data - name:(NSString *)name; - - -/** - Appends HTTP headers, followed by the encoded data and the multipart form boundary. - - @param headers The HTTP headers to be appended to the form data. - @param body The data to be encoded and appended to the form data. This parameter must not be `nil`. - */ -- (void)appendPartWithHeaders:(NSDictionary *)headers - body:(NSData *)body; - -/** - Throttles request bandwidth by limiting the packet size and adding a delay for each chunk read from the upload stream. - - When uploading over a 3G or EDGE connection, requests may fail with "request body stream exhausted". Setting a maximum packet size and delay according to the recommended values (`kAFUploadStream3GSuggestedPacketSize` and `kAFUploadStream3GSuggestedDelay`) lowers the risk of the input stream exceeding its allocated bandwidth. Unfortunately, there is no definite way to distinguish between a 3G, EDGE, or LTE connection over `NSURLConnection`. As such, it is not recommended that you throttle bandwidth based solely on network reachability. Instead, you should consider checking for the "request body stream exhausted" in a failure block, and then retrying the request with throttled bandwidth. - - @param numberOfBytes Maximum packet size, in number of bytes. The default packet size for an input stream is 16kb. - @param delay Duration of delay each time a packet is read. By default, no delay is set. - */ -- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes - delay:(NSTimeInterval)delay; - -@end - -#pragma mark - - -/** - `AFJSONRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSJSONSerialization`, setting the `Content-Type` of the encoded request to `application/json`. - */ -@interface AFJSONRequestSerializer : AFHTTPRequestSerializer - -/** - Options for writing the request JSON data from Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONWritingOptions". `0` by default. - */ -@property (nonatomic, assign) NSJSONWritingOptions writingOptions; - -/** - Creates and returns a JSON serializer with specified reading and writing options. - - @param writingOptions The specified JSON writing options. - */ -+ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions; - -@end - -#pragma mark - - -/** - `AFPropertyListRequestSerializer` is a subclass of `AFHTTPRequestSerializer` that encodes parameters as JSON using `NSPropertyListSerializer`, setting the `Content-Type` of the encoded request to `application/x-plist`. - */ -@interface AFPropertyListRequestSerializer : AFHTTPRequestSerializer - -/** - The property list format. Possible values are described in "NSPropertyListFormat". - */ -@property (nonatomic, assign) NSPropertyListFormat format; - -/** - @warning The `writeOptions` property is currently unused. - */ -@property (nonatomic, assign) NSPropertyListWriteOptions writeOptions; - -/** - Creates and returns a property list serializer with a specified format, read options, and write options. - - @param format The property list format. - @param writeOptions The property list write options. - - @warning The `writeOptions` property is currently unused. - */ -+ (instancetype)serializerWithFormat:(NSPropertyListFormat)format - writeOptions:(NSPropertyListWriteOptions)writeOptions; - -@end - -#pragma mark - - -///---------------- -/// @name Constants -///---------------- - -/** - ## Error Domains - - The following error domain is predefined. - - - `NSString * const AFURLRequestSerializationErrorDomain` - - ### Constants - - `AFURLRequestSerializationErrorDomain` - AFURLRequestSerializer errors. Error codes for `AFURLRequestSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. - */ -extern NSString * const AFURLRequestSerializationErrorDomain; - -/** - ## User info dictionary keys - - These keys may exist in the user info dictionary, in addition to those defined for NSError. - - - `NSString * const AFNetworkingOperationFailingURLRequestErrorKey` - - ### Constants - - `AFNetworkingOperationFailingURLRequestErrorKey` - The corresponding value is an `NSURLRequest` containing the request of the operation associated with an error. This key is only present in the `AFURLRequestSerializationErrorDomain`. - */ -extern NSString * const AFNetworkingOperationFailingURLRequestErrorKey; - -/** - ## Throttling Bandwidth for HTTP Request Input Streams - - @see -throttleBandwidthWithPacketSize:delay: - - ### Constants - - `kAFUploadStream3GSuggestedPacketSize` - Maximum packet size, in number of bytes. Equal to 16kb. - - `kAFUploadStream3GSuggestedDelay` - Duration of delay each time a packet is read. Equal to 0.2 seconds. - */ -extern NSUInteger const kAFUploadStream3GSuggestedPacketSize; -extern NSTimeInterval const kAFUploadStream3GSuggestedDelay; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m deleted file mode 100644 index 5b55b5fc5fc..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLRequestSerialization.m +++ /dev/null @@ -1,1384 +0,0 @@ -// AFURLRequestSerialization.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFURLRequestSerialization.h" - -#if __IPHONE_OS_VERSION_MIN_REQUIRED -#import -#else -#import -#endif - -NSString * const AFURLRequestSerializationErrorDomain = @"com.alamofire.error.serialization.request"; -NSString * const AFNetworkingOperationFailingURLRequestErrorKey = @"com.alamofire.serialization.request.error.response"; - -typedef NSString * (^AFQueryStringSerializationBlock)(NSURLRequest *request, id parameters, NSError *__autoreleasing *error); - -static NSString * AFBase64EncodedStringFromString(NSString *string) { - NSData *data = [NSData dataWithBytes:[string UTF8String] length:[string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]]; - NSUInteger length = [data length]; - NSMutableData *mutableData = [NSMutableData dataWithLength:((length + 2) / 3) * 4]; - - uint8_t *input = (uint8_t *)[data bytes]; - uint8_t *output = (uint8_t *)[mutableData mutableBytes]; - - for (NSUInteger i = 0; i < length; i += 3) { - NSUInteger value = 0; - for (NSUInteger j = i; j < (i + 3); j++) { - value <<= 8; - if (j < length) { - value |= (0xFF & input[j]); - } - } - - static uint8_t const kAFBase64EncodingTable[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - - NSUInteger idx = (i / 3) * 4; - output[idx + 0] = kAFBase64EncodingTable[(value >> 18) & 0x3F]; - output[idx + 1] = kAFBase64EncodingTable[(value >> 12) & 0x3F]; - output[idx + 2] = (i + 1) < length ? kAFBase64EncodingTable[(value >> 6) & 0x3F] : '='; - output[idx + 3] = (i + 2) < length ? kAFBase64EncodingTable[(value >> 0) & 0x3F] : '='; - } - - return [[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding]; -} - -static NSString * const kAFCharactersToBeEscapedInQueryString = @":/?&=;+!@#$()',*"; - -static NSString * AFPercentEscapedQueryStringKeyFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { - static NSString * const kAFCharactersToLeaveUnescapedInQueryStringPairKey = @"[]."; - - return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, (__bridge CFStringRef)kAFCharactersToLeaveUnescapedInQueryStringPairKey, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); -} - -static NSString * AFPercentEscapedQueryStringValueFromStringWithEncoding(NSString *string, NSStringEncoding encoding) { - return (__bridge_transfer NSString *)CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (__bridge CFStringRef)string, NULL, (__bridge CFStringRef)kAFCharactersToBeEscapedInQueryString, CFStringConvertNSStringEncodingToEncoding(encoding)); -} - -#pragma mark - - -@interface AFQueryStringPair : NSObject -@property (readwrite, nonatomic, strong) id field; -@property (readwrite, nonatomic, strong) id value; - -- (id)initWithField:(id)field value:(id)value; - -- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding; -@end - -@implementation AFQueryStringPair - -- (id)initWithField:(id)field value:(id)value { - self = [super init]; - if (!self) { - return nil; - } - - self.field = field; - self.value = value; - - return self; -} - -- (NSString *)URLEncodedStringValueWithEncoding:(NSStringEncoding)stringEncoding { - if (!self.value || [self.value isEqual:[NSNull null]]) { - return AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding); - } else { - return [NSString stringWithFormat:@"%@=%@", AFPercentEscapedQueryStringKeyFromStringWithEncoding([self.field description], stringEncoding), AFPercentEscapedQueryStringValueFromStringWithEncoding([self.value description], stringEncoding)]; - } -} - -@end - -#pragma mark - - -extern NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary); -extern NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value); - -static NSString * AFQueryStringFromParametersWithEncoding(NSDictionary *parameters, NSStringEncoding stringEncoding) { - NSMutableArray *mutablePairs = [NSMutableArray array]; - for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { - [mutablePairs addObject:[pair URLEncodedStringValueWithEncoding:stringEncoding]]; - } - - return [mutablePairs componentsJoinedByString:@"&"]; -} - -NSArray * AFQueryStringPairsFromDictionary(NSDictionary *dictionary) { - return AFQueryStringPairsFromKeyAndValue(nil, dictionary); -} - -NSArray * AFQueryStringPairsFromKeyAndValue(NSString *key, id value) { - NSMutableArray *mutableQueryStringComponents = [NSMutableArray array]; - - NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"description" ascending:YES selector:@selector(compare:)]; - - if ([value isKindOfClass:[NSDictionary class]]) { - NSDictionary *dictionary = value; - // Sort dictionary keys to ensure consistent ordering in query string, which is important when deserializing potentially ambiguous sequences, such as an array of dictionaries - for (id nestedKey in [dictionary.allKeys sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { - id nestedValue = [dictionary objectForKey:nestedKey]; - if (nestedValue) { - [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue((key ? [NSString stringWithFormat:@"%@[%@]", key, nestedKey] : nestedKey), nestedValue)]; - } - } - } else if ([value isKindOfClass:[NSArray class]]) { - NSArray *array = value; - for (id nestedValue in array) { - [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue([NSString stringWithFormat:@"%@[]", key], nestedValue)]; - } - } else if ([value isKindOfClass:[NSSet class]]) { - NSSet *set = value; - for (id obj in [set sortedArrayUsingDescriptors:@[ sortDescriptor ]]) { - [mutableQueryStringComponents addObjectsFromArray:AFQueryStringPairsFromKeyAndValue(key, obj)]; - } - } else { - [mutableQueryStringComponents addObject:[[AFQueryStringPair alloc] initWithField:key value:value]]; - } - - return mutableQueryStringComponents; -} - -#pragma mark - - -@interface AFStreamingMultipartFormData : NSObject -- (instancetype)initWithURLRequest:(NSMutableURLRequest *)urlRequest - stringEncoding:(NSStringEncoding)encoding; - -- (NSMutableURLRequest *)requestByFinalizingMultipartFormData; -@end - -#pragma mark - - -static NSArray * AFHTTPRequestSerializerObservedKeyPaths() { - static NSArray *_AFHTTPRequestSerializerObservedKeyPaths = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _AFHTTPRequestSerializerObservedKeyPaths = @[NSStringFromSelector(@selector(allowsCellularAccess)), NSStringFromSelector(@selector(cachePolicy)), NSStringFromSelector(@selector(HTTPShouldHandleCookies)), NSStringFromSelector(@selector(HTTPShouldUsePipelining)), NSStringFromSelector(@selector(networkServiceType)), NSStringFromSelector(@selector(timeoutInterval))]; - }); - - return _AFHTTPRequestSerializerObservedKeyPaths; -} - -static void *AFHTTPRequestSerializerObserverContext = &AFHTTPRequestSerializerObserverContext; - -@interface AFHTTPRequestSerializer () -@property (readwrite, nonatomic, strong) NSMutableSet *mutableObservedChangedKeyPaths; -@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableHTTPRequestHeaders; -@property (readwrite, nonatomic, assign) AFHTTPRequestQueryStringSerializationStyle queryStringSerializationStyle; -@property (readwrite, nonatomic, copy) AFQueryStringSerializationBlock queryStringSerialization; -@end - -@implementation AFHTTPRequestSerializer - -+ (instancetype)serializer { - return [[self alloc] init]; -} - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.stringEncoding = NSUTF8StringEncoding; - - self.mutableHTTPRequestHeaders = [NSMutableDictionary dictionary]; - - // Accept-Language HTTP Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4 - NSMutableArray *acceptLanguagesComponents = [NSMutableArray array]; - [[NSLocale preferredLanguages] enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - float q = 1.0f - (idx * 0.1f); - [acceptLanguagesComponents addObject:[NSString stringWithFormat:@"%@;q=%0.1g", obj, q]]; - *stop = q <= 0.5f; - }]; - [self setValue:[acceptLanguagesComponents componentsJoinedByString:@", "] forHTTPHeaderField:@"Accept-Language"]; - - NSString *userAgent = nil; -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - // User-Agent Header; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.43 - userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]]; -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) - userAgent = [NSString stringWithFormat:@"%@/%@ (Mac OS X %@)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[NSProcessInfo processInfo] operatingSystemVersionString]]; -#endif -#pragma clang diagnostic pop - if (userAgent) { - if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) { - NSMutableString *mutableUserAgent = [userAgent mutableCopy]; - if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false)) { - userAgent = mutableUserAgent; - } - } - [self setValue:userAgent forHTTPHeaderField:@"User-Agent"]; - } - - // HTTP Method Definitions; see http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html - self.HTTPMethodsEncodingParametersInURI = [NSSet setWithObjects:@"GET", @"HEAD", @"DELETE", nil]; - - self.mutableObservedChangedKeyPaths = [NSMutableSet set]; - for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { - if ([self respondsToSelector:NSSelectorFromString(keyPath)]) { - [self addObserver:self forKeyPath:keyPath options:NSKeyValueObservingOptionNew context:AFHTTPRequestSerializerObserverContext]; - } - } - - return self; -} - -- (void)dealloc { - for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { - if ([self respondsToSelector:NSSelectorFromString(keyPath)]) { - [self removeObserver:self forKeyPath:keyPath context:AFHTTPRequestSerializerObserverContext]; - } - } -} - -#pragma mark - - -// Workarounds for crashing behavior using Key-Value Observing with XCTest -// See https://github.com/AFNetworking/AFNetworking/issues/2523 - -- (void)setAllowsCellularAccess:(BOOL)allowsCellularAccess { - [self willChangeValueForKey:NSStringFromSelector(@selector(allowsCellularAccess))]; - _allowsCellularAccess = allowsCellularAccess; - [self didChangeValueForKey:NSStringFromSelector(@selector(allowsCellularAccess))]; -} - -- (void)setCachePolicy:(NSURLRequestCachePolicy)cachePolicy { - [self willChangeValueForKey:NSStringFromSelector(@selector(cachePolicy))]; - _cachePolicy = cachePolicy; - [self didChangeValueForKey:NSStringFromSelector(@selector(cachePolicy))]; -} - -- (void)setHTTPShouldHandleCookies:(BOOL)HTTPShouldHandleCookies { - [self willChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldHandleCookies))]; - _HTTPShouldHandleCookies = HTTPShouldHandleCookies; - [self didChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldHandleCookies))]; -} - -- (void)setHTTPShouldUsePipelining:(BOOL)HTTPShouldUsePipelining { - [self willChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldUsePipelining))]; - _HTTPShouldUsePipelining = HTTPShouldUsePipelining; - [self didChangeValueForKey:NSStringFromSelector(@selector(HTTPShouldUsePipelining))]; -} - -- (void)setNetworkServiceType:(NSURLRequestNetworkServiceType)networkServiceType { - [self willChangeValueForKey:NSStringFromSelector(@selector(networkServiceType))]; - _networkServiceType = networkServiceType; - [self didChangeValueForKey:NSStringFromSelector(@selector(networkServiceType))]; -} - -- (void)setTimeoutInterval:(NSTimeInterval)timeoutInterval { - [self willChangeValueForKey:NSStringFromSelector(@selector(timeoutInterval))]; - _timeoutInterval = timeoutInterval; - [self didChangeValueForKey:NSStringFromSelector(@selector(timeoutInterval))]; -} - -#pragma mark - - -- (NSDictionary *)HTTPRequestHeaders { - return [NSDictionary dictionaryWithDictionary:self.mutableHTTPRequestHeaders]; -} - -- (void)setValue:(NSString *)value -forHTTPHeaderField:(NSString *)field -{ - [self.mutableHTTPRequestHeaders setValue:value forKey:field]; -} - -- (NSString *)valueForHTTPHeaderField:(NSString *)field { - return [self.mutableHTTPRequestHeaders valueForKey:field]; -} - -- (void)setAuthorizationHeaderFieldWithUsername:(NSString *)username - password:(NSString *)password -{ - NSString *basicAuthCredentials = [NSString stringWithFormat:@"%@:%@", username, password]; - [self setValue:[NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)] forHTTPHeaderField:@"Authorization"]; -} - -- (void)setAuthorizationHeaderFieldWithToken:(NSString *)token { - [self setValue:[NSString stringWithFormat:@"Token token=\"%@\"", token] forHTTPHeaderField:@"Authorization"]; -} - -- (void)clearAuthorizationHeader { - [self.mutableHTTPRequestHeaders removeObjectForKey:@"Authorization"]; -} - -#pragma mark - - -- (void)setQueryStringSerializationWithStyle:(AFHTTPRequestQueryStringSerializationStyle)style { - self.queryStringSerializationStyle = style; - self.queryStringSerialization = nil; -} - -- (void)setQueryStringSerializationWithBlock:(NSString *(^)(NSURLRequest *, id, NSError *__autoreleasing *))block { - self.queryStringSerialization = block; -} - -#pragma mark - - -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(id)parameters -{ - return [self requestWithMethod:method URLString:URLString parameters:parameters error:nil]; -} - -- (NSMutableURLRequest *)requestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(id)parameters - error:(NSError *__autoreleasing *)error -{ - NSParameterAssert(method); - NSParameterAssert(URLString); - - NSURL *url = [NSURL URLWithString:URLString]; - - NSParameterAssert(url); - - NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:url]; - mutableRequest.HTTPMethod = method; - - for (NSString *keyPath in AFHTTPRequestSerializerObservedKeyPaths()) { - if ([self.mutableObservedChangedKeyPaths containsObject:keyPath]) { - [mutableRequest setValue:[self valueForKeyPath:keyPath] forKey:keyPath]; - } - } - - mutableRequest = [[self requestBySerializingRequest:mutableRequest withParameters:parameters error:error] mutableCopy]; - - return mutableRequest; -} - -- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(NSDictionary *)parameters - constructingBodyWithBlock:(void (^)(id formData))block -{ - return [self multipartFormRequestWithMethod:method URLString:URLString parameters:parameters constructingBodyWithBlock:block error:nil]; -} - -- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method - URLString:(NSString *)URLString - parameters:(NSDictionary *)parameters - constructingBodyWithBlock:(void (^)(id formData))block - error:(NSError *__autoreleasing *)error -{ - NSParameterAssert(method); - NSParameterAssert(![method isEqualToString:@"GET"] && ![method isEqualToString:@"HEAD"]); - - NSMutableURLRequest *mutableRequest = [self requestWithMethod:method URLString:URLString parameters:nil error:error]; - - __block AFStreamingMultipartFormData *formData = [[AFStreamingMultipartFormData alloc] initWithURLRequest:mutableRequest stringEncoding:NSUTF8StringEncoding]; - - if (parameters) { - for (AFQueryStringPair *pair in AFQueryStringPairsFromDictionary(parameters)) { - NSData *data = nil; - if ([pair.value isKindOfClass:[NSData class]]) { - data = pair.value; - } else if ([pair.value isEqual:[NSNull null]]) { - data = [NSData data]; - } else { - data = [[pair.value description] dataUsingEncoding:self.stringEncoding]; - } - - if (data) { - [formData appendPartWithFormData:data name:[pair.field description]]; - } - } - } - - if (block) { - block(formData); - } - - return [formData requestByFinalizingMultipartFormData]; -} - -- (NSMutableURLRequest *)requestWithMultipartFormRequest:(NSURLRequest *)request - writingStreamContentsToFile:(NSURL *)fileURL - completionHandler:(void (^)(NSError *error))handler -{ - NSParameterAssert(request.HTTPBodyStream); - NSParameterAssert([fileURL isFileURL]); - - NSInputStream *inputStream = request.HTTPBodyStream; - NSOutputStream *outputStream = [[NSOutputStream alloc] initWithURL:fileURL append:NO]; - __block NSError *error = nil; - - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - [inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; - [outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode]; - - [inputStream open]; - [outputStream open]; - - while ([inputStream hasBytesAvailable] && [outputStream hasSpaceAvailable]) { - uint8_t buffer[1024]; - - NSInteger bytesRead = [inputStream read:buffer maxLength:1024]; - if (inputStream.streamError || bytesRead < 0) { - error = inputStream.streamError; - break; - } - - NSInteger bytesWritten = [outputStream write:buffer maxLength:(NSUInteger)bytesRead]; - if (outputStream.streamError || bytesWritten < 0) { - error = outputStream.streamError; - break; - } - - if (bytesRead == 0 && bytesWritten == 0) { - break; - } - } - - [outputStream close]; - [inputStream close]; - - if (handler) { - dispatch_async(dispatch_get_main_queue(), ^{ - handler(error); - }); - } - }); - - NSMutableURLRequest *mutableRequest = [request mutableCopy]; - mutableRequest.HTTPBodyStream = nil; - - return mutableRequest; -} - -#pragma mark - AFURLRequestSerialization - -- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request - withParameters:(id)parameters - error:(NSError *__autoreleasing *)error -{ - NSParameterAssert(request); - - NSMutableURLRequest *mutableRequest = [request mutableCopy]; - - [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { - if (![request valueForHTTPHeaderField:field]) { - [mutableRequest setValue:value forHTTPHeaderField:field]; - } - }]; - - if (parameters) { - NSString *query = nil; - if (self.queryStringSerialization) { - NSError *serializationError; - query = self.queryStringSerialization(request, parameters, &serializationError); - - if (serializationError) { - if (error) { - *error = serializationError; - } - - return nil; - } - } else { - switch (self.queryStringSerializationStyle) { - case AFHTTPRequestQueryStringDefaultStyle: - query = AFQueryStringFromParametersWithEncoding(parameters, self.stringEncoding); - break; - } - } - - if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { - mutableRequest.URL = [NSURL URLWithString:[[mutableRequest.URL absoluteString] stringByAppendingFormat:mutableRequest.URL.query ? @"&%@" : @"?%@", query]]; - } else { - if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { - [mutableRequest setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; - } - [mutableRequest setHTTPBody:[query dataUsingEncoding:self.stringEncoding]]; - } - } - - return mutableRequest; -} - -#pragma mark - NSKeyValueObserving - -+ (BOOL)automaticallyNotifiesObserversForKey:(NSString *)key { - if ([AFHTTPRequestSerializerObservedKeyPaths() containsObject:key]) { - return NO; - } - - return [super automaticallyNotifiesObserversForKey:key]; -} - -- (void)observeValueForKeyPath:(NSString *)keyPath - ofObject:(__unused id)object - change:(NSDictionary *)change - context:(void *)context -{ - if (context == AFHTTPRequestSerializerObserverContext) { - if ([change[NSKeyValueChangeNewKey] isEqual:[NSNull null]]) { - [self.mutableObservedChangedKeyPaths removeObject:keyPath]; - } else { - [self.mutableObservedChangedKeyPaths addObject:keyPath]; - } - } -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [self init]; - if (!self) { - return nil; - } - - self.mutableHTTPRequestHeaders = [[decoder decodeObjectOfClass:[NSDictionary class] forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))] mutableCopy]; - self.queryStringSerializationStyle = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))] unsignedIntegerValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [coder encodeObject:self.mutableHTTPRequestHeaders forKey:NSStringFromSelector(@selector(mutableHTTPRequestHeaders))]; - [coder encodeInteger:self.queryStringSerializationStyle forKey:NSStringFromSelector(@selector(queryStringSerializationStyle))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPRequestSerializer *serializer = [[[self class] allocWithZone:zone] init]; - serializer.mutableHTTPRequestHeaders = [self.mutableHTTPRequestHeaders mutableCopyWithZone:zone]; - serializer.queryStringSerializationStyle = self.queryStringSerializationStyle; - serializer.queryStringSerialization = self.queryStringSerialization; - - return serializer; -} - -@end - -#pragma mark - - -static NSString * AFCreateMultipartFormBoundary() { - return [NSString stringWithFormat:@"Boundary+%08X%08X", arc4random(), arc4random()]; -} - -static NSString * const kAFMultipartFormCRLF = @"\r\n"; - -static inline NSString * AFMultipartFormInitialBoundary(NSString *boundary) { - return [NSString stringWithFormat:@"--%@%@", boundary, kAFMultipartFormCRLF]; -} - -static inline NSString * AFMultipartFormEncapsulationBoundary(NSString *boundary) { - return [NSString stringWithFormat:@"%@--%@%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; -} - -static inline NSString * AFMultipartFormFinalBoundary(NSString *boundary) { - return [NSString stringWithFormat:@"%@--%@--%@", kAFMultipartFormCRLF, boundary, kAFMultipartFormCRLF]; -} - -static inline NSString * AFContentTypeForPathExtension(NSString *extension) { -#ifdef __UTTYPE__ - NSString *UTI = (__bridge_transfer NSString *)UTTypeCreatePreferredIdentifierForTag(kUTTagClassFilenameExtension, (__bridge CFStringRef)extension, NULL); - NSString *contentType = (__bridge_transfer NSString *)UTTypeCopyPreferredTagWithClass((__bridge CFStringRef)UTI, kUTTagClassMIMEType); - if (!contentType) { - return @"application/octet-stream"; - } else { - return contentType; - } -#else -#pragma unused (extension) - return @"application/octet-stream"; -#endif -} - -NSUInteger const kAFUploadStream3GSuggestedPacketSize = 1024 * 16; -NSTimeInterval const kAFUploadStream3GSuggestedDelay = 0.2; - -@interface AFHTTPBodyPart : NSObject -@property (nonatomic, assign) NSStringEncoding stringEncoding; -@property (nonatomic, strong) NSDictionary *headers; -@property (nonatomic, copy) NSString *boundary; -@property (nonatomic, strong) id body; -@property (nonatomic, assign) unsigned long long bodyContentLength; -@property (nonatomic, strong) NSInputStream *inputStream; - -@property (nonatomic, assign) BOOL hasInitialBoundary; -@property (nonatomic, assign) BOOL hasFinalBoundary; - -@property (readonly, nonatomic, assign, getter = hasBytesAvailable) BOOL bytesAvailable; -@property (readonly, nonatomic, assign) unsigned long long contentLength; - -- (NSInteger)read:(uint8_t *)buffer - maxLength:(NSUInteger)length; -@end - -@interface AFMultipartBodyStream : NSInputStream -@property (nonatomic, assign) NSUInteger numberOfBytesInPacket; -@property (nonatomic, assign) NSTimeInterval delay; -@property (nonatomic, strong) NSInputStream *inputStream; -@property (readonly, nonatomic, assign) unsigned long long contentLength; -@property (readonly, nonatomic, assign, getter = isEmpty) BOOL empty; - -- (id)initWithStringEncoding:(NSStringEncoding)encoding; -- (void)setInitialAndFinalBoundaries; -- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart; -@end - -#pragma mark - - -@interface AFStreamingMultipartFormData () -@property (readwrite, nonatomic, copy) NSMutableURLRequest *request; -@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; -@property (readwrite, nonatomic, copy) NSString *boundary; -@property (readwrite, nonatomic, strong) AFMultipartBodyStream *bodyStream; -@end - -@implementation AFStreamingMultipartFormData - -- (id)initWithURLRequest:(NSMutableURLRequest *)urlRequest - stringEncoding:(NSStringEncoding)encoding -{ - self = [super init]; - if (!self) { - return nil; - } - - self.request = urlRequest; - self.stringEncoding = encoding; - self.boundary = AFCreateMultipartFormBoundary(); - self.bodyStream = [[AFMultipartBodyStream alloc] initWithStringEncoding:encoding]; - - return self; -} - -- (BOOL)appendPartWithFileURL:(NSURL *)fileURL - name:(NSString *)name - error:(NSError * __autoreleasing *)error -{ - NSParameterAssert(fileURL); - NSParameterAssert(name); - - NSString *fileName = [fileURL lastPathComponent]; - NSString *mimeType = AFContentTypeForPathExtension([fileURL pathExtension]); - - return [self appendPartWithFileURL:fileURL name:name fileName:fileName mimeType:mimeType error:error]; -} - -- (BOOL)appendPartWithFileURL:(NSURL *)fileURL - name:(NSString *)name - fileName:(NSString *)fileName - mimeType:(NSString *)mimeType - error:(NSError * __autoreleasing *)error -{ - NSParameterAssert(fileURL); - NSParameterAssert(name); - NSParameterAssert(fileName); - NSParameterAssert(mimeType); - - if (![fileURL isFileURL]) { - NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"Expected URL to be a file URL", @"AFNetworking", nil)}; - if (error) { - *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; - } - - return NO; - } else if ([fileURL checkResourceIsReachableAndReturnError:error] == NO) { - NSDictionary *userInfo = @{NSLocalizedFailureReasonErrorKey: NSLocalizedStringFromTable(@"File URL not reachable.", @"AFNetworking", nil)}; - if (error) { - *error = [[NSError alloc] initWithDomain:AFURLRequestSerializationErrorDomain code:NSURLErrorBadURL userInfo:userInfo]; - } - - return NO; - } - - NSDictionary *fileAttributes = [[NSFileManager defaultManager] attributesOfItemAtPath:[fileURL path] error:error]; - if (!fileAttributes) { - return NO; - } - - NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; - [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; - [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; - - AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; - bodyPart.stringEncoding = self.stringEncoding; - bodyPart.headers = mutableHeaders; - bodyPart.boundary = self.boundary; - bodyPart.body = fileURL; - bodyPart.bodyContentLength = [[fileAttributes objectForKey:NSFileSize] unsignedLongLongValue]; - [self.bodyStream appendHTTPBodyPart:bodyPart]; - - return YES; -} - -- (void)appendPartWithInputStream:(NSInputStream *)inputStream - name:(NSString *)name - fileName:(NSString *)fileName - length:(int64_t)length - mimeType:(NSString *)mimeType -{ - NSParameterAssert(name); - NSParameterAssert(fileName); - NSParameterAssert(mimeType); - - NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; - [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; - [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; - - AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; - bodyPart.stringEncoding = self.stringEncoding; - bodyPart.headers = mutableHeaders; - bodyPart.boundary = self.boundary; - bodyPart.body = inputStream; - - bodyPart.bodyContentLength = (unsigned long long)length; - - [self.bodyStream appendHTTPBodyPart:bodyPart]; -} - -- (void)appendPartWithFileData:(NSData *)data - name:(NSString *)name - fileName:(NSString *)fileName - mimeType:(NSString *)mimeType -{ - NSParameterAssert(name); - NSParameterAssert(fileName); - NSParameterAssert(mimeType); - - NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; - [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"; filename=\"%@\"", name, fileName] forKey:@"Content-Disposition"]; - [mutableHeaders setValue:mimeType forKey:@"Content-Type"]; - - [self appendPartWithHeaders:mutableHeaders body:data]; -} - -- (void)appendPartWithFormData:(NSData *)data - name:(NSString *)name -{ - NSParameterAssert(name); - - NSMutableDictionary *mutableHeaders = [NSMutableDictionary dictionary]; - [mutableHeaders setValue:[NSString stringWithFormat:@"form-data; name=\"%@\"", name] forKey:@"Content-Disposition"]; - - [self appendPartWithHeaders:mutableHeaders body:data]; -} - -- (void)appendPartWithHeaders:(NSDictionary *)headers - body:(NSData *)body -{ - NSParameterAssert(body); - - AFHTTPBodyPart *bodyPart = [[AFHTTPBodyPart alloc] init]; - bodyPart.stringEncoding = self.stringEncoding; - bodyPart.headers = headers; - bodyPart.boundary = self.boundary; - bodyPart.bodyContentLength = [body length]; - bodyPart.body = body; - - [self.bodyStream appendHTTPBodyPart:bodyPart]; -} - -- (void)throttleBandwidthWithPacketSize:(NSUInteger)numberOfBytes - delay:(NSTimeInterval)delay -{ - self.bodyStream.numberOfBytesInPacket = numberOfBytes; - self.bodyStream.delay = delay; -} - -- (NSMutableURLRequest *)requestByFinalizingMultipartFormData { - if ([self.bodyStream isEmpty]) { - return self.request; - } - - // Reset the initial and final boundaries to ensure correct Content-Length - [self.bodyStream setInitialAndFinalBoundaries]; - [self.request setHTTPBodyStream:self.bodyStream]; - - [self.request setValue:[NSString stringWithFormat:@"multipart/form-data; boundary=%@", self.boundary] forHTTPHeaderField:@"Content-Type"]; - [self.request setValue:[NSString stringWithFormat:@"%llu", [self.bodyStream contentLength]] forHTTPHeaderField:@"Content-Length"]; - - return self.request; -} - -@end - -#pragma mark - - -@interface NSStream () -@property (readwrite) NSStreamStatus streamStatus; -@property (readwrite, copy) NSError *streamError; -@end - -@interface AFMultipartBodyStream () -@property (readwrite, nonatomic, assign) NSStringEncoding stringEncoding; -@property (readwrite, nonatomic, strong) NSMutableArray *HTTPBodyParts; -@property (readwrite, nonatomic, strong) NSEnumerator *HTTPBodyPartEnumerator; -@property (readwrite, nonatomic, strong) AFHTTPBodyPart *currentHTTPBodyPart; -@property (readwrite, nonatomic, strong) NSOutputStream *outputStream; -@property (readwrite, nonatomic, strong) NSMutableData *buffer; -@end - -@implementation AFMultipartBodyStream -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wimplicit-atomic-properties" -#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 80000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1100) -@synthesize delegate; -#endif -@synthesize streamStatus; -@synthesize streamError; -#pragma clang diagnostic pop - -- (id)initWithStringEncoding:(NSStringEncoding)encoding { - self = [super init]; - if (!self) { - return nil; - } - - self.stringEncoding = encoding; - self.HTTPBodyParts = [NSMutableArray array]; - self.numberOfBytesInPacket = NSIntegerMax; - - return self; -} - -- (void)setInitialAndFinalBoundaries { - if ([self.HTTPBodyParts count] > 0) { - for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { - bodyPart.hasInitialBoundary = NO; - bodyPart.hasFinalBoundary = NO; - } - - [[self.HTTPBodyParts objectAtIndex:0] setHasInitialBoundary:YES]; - [[self.HTTPBodyParts lastObject] setHasFinalBoundary:YES]; - } -} - -- (void)appendHTTPBodyPart:(AFHTTPBodyPart *)bodyPart { - [self.HTTPBodyParts addObject:bodyPart]; -} - -- (BOOL)isEmpty { - return [self.HTTPBodyParts count] == 0; -} - -#pragma mark - NSInputStream - -- (NSInteger)read:(uint8_t *)buffer - maxLength:(NSUInteger)length -{ - if ([self streamStatus] == NSStreamStatusClosed) { - return 0; - } - - NSInteger totalNumberOfBytesRead = 0; - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - while ((NSUInteger)totalNumberOfBytesRead < MIN(length, self.numberOfBytesInPacket)) { - if (!self.currentHTTPBodyPart || ![self.currentHTTPBodyPart hasBytesAvailable]) { - if (!(self.currentHTTPBodyPart = [self.HTTPBodyPartEnumerator nextObject])) { - break; - } - } else { - NSUInteger maxLength = length - (NSUInteger)totalNumberOfBytesRead; - NSInteger numberOfBytesRead = [self.currentHTTPBodyPart read:&buffer[totalNumberOfBytesRead] maxLength:maxLength]; - if (numberOfBytesRead == -1) { - self.streamError = self.currentHTTPBodyPart.inputStream.streamError; - break; - } else { - totalNumberOfBytesRead += numberOfBytesRead; - - if (self.delay > 0.0f) { - [NSThread sleepForTimeInterval:self.delay]; - } - } - } - } -#pragma clang diagnostic pop - - return totalNumberOfBytesRead; -} - -- (BOOL)getBuffer:(__unused uint8_t **)buffer - length:(__unused NSUInteger *)len -{ - return NO; -} - -- (BOOL)hasBytesAvailable { - return [self streamStatus] == NSStreamStatusOpen; -} - -#pragma mark - NSStream - -- (void)open { - if (self.streamStatus == NSStreamStatusOpen) { - return; - } - - self.streamStatus = NSStreamStatusOpen; - - [self setInitialAndFinalBoundaries]; - self.HTTPBodyPartEnumerator = [self.HTTPBodyParts objectEnumerator]; -} - -- (void)close { - self.streamStatus = NSStreamStatusClosed; -} - -- (id)propertyForKey:(__unused NSString *)key { - return nil; -} - -- (BOOL)setProperty:(__unused id)property - forKey:(__unused NSString *)key -{ - return NO; -} - -- (void)scheduleInRunLoop:(__unused NSRunLoop *)aRunLoop - forMode:(__unused NSString *)mode -{} - -- (void)removeFromRunLoop:(__unused NSRunLoop *)aRunLoop - forMode:(__unused NSString *)mode -{} - -- (unsigned long long)contentLength { - unsigned long long length = 0; - for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { - length += [bodyPart contentLength]; - } - - return length; -} - -#pragma mark - Undocumented CFReadStream Bridged Methods - -- (void)_scheduleInCFRunLoop:(__unused CFRunLoopRef)aRunLoop - forMode:(__unused CFStringRef)aMode -{} - -- (void)_unscheduleFromCFRunLoop:(__unused CFRunLoopRef)aRunLoop - forMode:(__unused CFStringRef)aMode -{} - -- (BOOL)_setCFClientFlags:(__unused CFOptionFlags)inFlags - callback:(__unused CFReadStreamClientCallBack)inCallback - context:(__unused CFStreamClientContext *)inContext { - return NO; -} - -#pragma mark - NSCopying - --(id)copyWithZone:(NSZone *)zone { - AFMultipartBodyStream *bodyStreamCopy = [[[self class] allocWithZone:zone] initWithStringEncoding:self.stringEncoding]; - - for (AFHTTPBodyPart *bodyPart in self.HTTPBodyParts) { - [bodyStreamCopy appendHTTPBodyPart:[bodyPart copy]]; - } - - [bodyStreamCopy setInitialAndFinalBoundaries]; - - return bodyStreamCopy; -} - -@end - -#pragma mark - - -typedef enum { - AFEncapsulationBoundaryPhase = 1, - AFHeaderPhase = 2, - AFBodyPhase = 3, - AFFinalBoundaryPhase = 4, -} AFHTTPBodyPartReadPhase; - -@interface AFHTTPBodyPart () { - AFHTTPBodyPartReadPhase _phase; - NSInputStream *_inputStream; - unsigned long long _phaseReadOffset; -} - -- (BOOL)transitionToNextPhase; -- (NSInteger)readData:(NSData *)data - intoBuffer:(uint8_t *)buffer - maxLength:(NSUInteger)length; -@end - -@implementation AFHTTPBodyPart - -- (id)init { - self = [super init]; - if (!self) { - return nil; - } - - [self transitionToNextPhase]; - - return self; -} - -- (void)dealloc { - if (_inputStream) { - [_inputStream close]; - _inputStream = nil; - } -} - -- (NSInputStream *)inputStream { - if (!_inputStream) { - if ([self.body isKindOfClass:[NSData class]]) { - _inputStream = [NSInputStream inputStreamWithData:self.body]; - } else if ([self.body isKindOfClass:[NSURL class]]) { - _inputStream = [NSInputStream inputStreamWithURL:self.body]; - } else if ([self.body isKindOfClass:[NSInputStream class]]) { - _inputStream = self.body; - } else { - _inputStream = [NSInputStream inputStreamWithData:[NSData data]]; - } - } - - return _inputStream; -} - -- (NSString *)stringForHeaders { - NSMutableString *headerString = [NSMutableString string]; - for (NSString *field in [self.headers allKeys]) { - [headerString appendString:[NSString stringWithFormat:@"%@: %@%@", field, [self.headers valueForKey:field], kAFMultipartFormCRLF]]; - } - [headerString appendString:kAFMultipartFormCRLF]; - - return [NSString stringWithString:headerString]; -} - -- (unsigned long long)contentLength { - unsigned long long length = 0; - - NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; - length += [encapsulationBoundaryData length]; - - NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; - length += [headersData length]; - - length += _bodyContentLength; - - NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); - length += [closingBoundaryData length]; - - return length; -} - -- (BOOL)hasBytesAvailable { - // Allows `read:maxLength:` to be called again if `AFMultipartFormFinalBoundary` doesn't fit into the available buffer - if (_phase == AFFinalBoundaryPhase) { - return YES; - } - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wcovered-switch-default" - switch (self.inputStream.streamStatus) { - case NSStreamStatusNotOpen: - case NSStreamStatusOpening: - case NSStreamStatusOpen: - case NSStreamStatusReading: - case NSStreamStatusWriting: - return YES; - case NSStreamStatusAtEnd: - case NSStreamStatusClosed: - case NSStreamStatusError: - default: - return NO; - } -#pragma clang diagnostic pop -} - -- (NSInteger)read:(uint8_t *)buffer - maxLength:(NSUInteger)length -{ - NSInteger totalNumberOfBytesRead = 0; - - if (_phase == AFEncapsulationBoundaryPhase) { - NSData *encapsulationBoundaryData = [([self hasInitialBoundary] ? AFMultipartFormInitialBoundary(self.boundary) : AFMultipartFormEncapsulationBoundary(self.boundary)) dataUsingEncoding:self.stringEncoding]; - totalNumberOfBytesRead += [self readData:encapsulationBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; - } - - if (_phase == AFHeaderPhase) { - NSData *headersData = [[self stringForHeaders] dataUsingEncoding:self.stringEncoding]; - totalNumberOfBytesRead += [self readData:headersData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; - } - - if (_phase == AFBodyPhase) { - NSInteger numberOfBytesRead = 0; - - numberOfBytesRead = [self.inputStream read:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; - if (numberOfBytesRead == -1) { - return -1; - } else { - totalNumberOfBytesRead += numberOfBytesRead; - - if ([self.inputStream streamStatus] >= NSStreamStatusAtEnd) { - [self transitionToNextPhase]; - } - } - } - - if (_phase == AFFinalBoundaryPhase) { - NSData *closingBoundaryData = ([self hasFinalBoundary] ? [AFMultipartFormFinalBoundary(self.boundary) dataUsingEncoding:self.stringEncoding] : [NSData data]); - totalNumberOfBytesRead += [self readData:closingBoundaryData intoBuffer:&buffer[totalNumberOfBytesRead] maxLength:(length - (NSUInteger)totalNumberOfBytesRead)]; - } - - return totalNumberOfBytesRead; -} - -- (NSInteger)readData:(NSData *)data - intoBuffer:(uint8_t *)buffer - maxLength:(NSUInteger)length -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - NSRange range = NSMakeRange((NSUInteger)_phaseReadOffset, MIN([data length] - ((NSUInteger)_phaseReadOffset), length)); - [data getBytes:buffer range:range]; -#pragma clang diagnostic pop - - _phaseReadOffset += range.length; - - if (((NSUInteger)_phaseReadOffset) >= [data length]) { - [self transitionToNextPhase]; - } - - return (NSInteger)range.length; -} - -- (BOOL)transitionToNextPhase { - if (![[NSThread currentThread] isMainThread]) { - dispatch_sync(dispatch_get_main_queue(), ^{ - [self transitionToNextPhase]; - }); - return YES; - } - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wcovered-switch-default" - switch (_phase) { - case AFEncapsulationBoundaryPhase: - _phase = AFHeaderPhase; - break; - case AFHeaderPhase: - [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes]; - [self.inputStream open]; - _phase = AFBodyPhase; - break; - case AFBodyPhase: - [self.inputStream close]; - _phase = AFFinalBoundaryPhase; - break; - case AFFinalBoundaryPhase: - default: - _phase = AFEncapsulationBoundaryPhase; - break; - } - _phaseReadOffset = 0; -#pragma clang diagnostic pop - - return YES; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPBodyPart *bodyPart = [[[self class] allocWithZone:zone] init]; - - bodyPart.stringEncoding = self.stringEncoding; - bodyPart.headers = self.headers; - bodyPart.bodyContentLength = self.bodyContentLength; - bodyPart.body = self.body; - bodyPart.boundary = self.boundary; - - return bodyPart; -} - -@end - -#pragma mark - - -@implementation AFJSONRequestSerializer - -+ (instancetype)serializer { - return [self serializerWithWritingOptions:(NSJSONWritingOptions)0]; -} - -+ (instancetype)serializerWithWritingOptions:(NSJSONWritingOptions)writingOptions -{ - AFJSONRequestSerializer *serializer = [[self alloc] init]; - serializer.writingOptions = writingOptions; - - return serializer; -} - -#pragma mark - AFURLRequestSerialization - -- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request - withParameters:(id)parameters - error:(NSError *__autoreleasing *)error -{ - NSParameterAssert(request); - - if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { - return [super requestBySerializingRequest:request withParameters:parameters error:error]; - } - - NSMutableURLRequest *mutableRequest = [request mutableCopy]; - - [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { - if (![request valueForHTTPHeaderField:field]) { - [mutableRequest setValue:value forHTTPHeaderField:field]; - } - }]; - - if (parameters) { - if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { - [mutableRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; - } - - [mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]]; - } - - return mutableRequest; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.writingOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(writingOptions))] unsignedIntegerValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeInteger:self.writingOptions forKey:NSStringFromSelector(@selector(writingOptions))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFJSONRequestSerializer *serializer = [super copyWithZone:zone]; - serializer.writingOptions = self.writingOptions; - - return serializer; -} - -@end - -#pragma mark - - -@implementation AFPropertyListRequestSerializer - -+ (instancetype)serializer { - return [self serializerWithFormat:NSPropertyListXMLFormat_v1_0 writeOptions:0]; -} - -+ (instancetype)serializerWithFormat:(NSPropertyListFormat)format - writeOptions:(NSPropertyListWriteOptions)writeOptions -{ - AFPropertyListRequestSerializer *serializer = [[self alloc] init]; - serializer.format = format; - serializer.writeOptions = writeOptions; - - return serializer; -} - -#pragma mark - AFURLRequestSerializer - -- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request - withParameters:(id)parameters - error:(NSError *__autoreleasing *)error -{ - NSParameterAssert(request); - - if ([self.HTTPMethodsEncodingParametersInURI containsObject:[[request HTTPMethod] uppercaseString]]) { - return [super requestBySerializingRequest:request withParameters:parameters error:error]; - } - - NSMutableURLRequest *mutableRequest = [request mutableCopy]; - - [self.HTTPRequestHeaders enumerateKeysAndObjectsUsingBlock:^(id field, id value, BOOL * __unused stop) { - if (![request valueForHTTPHeaderField:field]) { - [mutableRequest setValue:value forHTTPHeaderField:field]; - } - }]; - - if (parameters) { - if (![mutableRequest valueForHTTPHeaderField:@"Content-Type"]) { - [mutableRequest setValue:@"application/x-plist" forHTTPHeaderField:@"Content-Type"]; - } - - [mutableRequest setHTTPBody:[NSPropertyListSerialization dataWithPropertyList:parameters format:self.format options:self.writeOptions error:error]]; - } - - return mutableRequest; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.format = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(format))] unsignedIntegerValue]; - self.writeOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(writeOptions))] unsignedIntegerValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeInteger:self.format forKey:NSStringFromSelector(@selector(format))]; - [coder encodeObject:@(self.writeOptions) forKey:NSStringFromSelector(@selector(writeOptions))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFPropertyListRequestSerializer *serializer = [super copyWithZone:zone]; - serializer.format = self.format; - serializer.writeOptions = self.writeOptions; - - return serializer; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h deleted file mode 100644 index 9cd4ad2dd98..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.h +++ /dev/null @@ -1,309 +0,0 @@ -// AFURLResponseSerialization.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import -#import - -/** - The `AFURLResponseSerialization` protocol is adopted by an object that decodes data into a more useful object representation, according to details in the server response. Response serializers may additionally perform validation on the incoming response and data. - - For example, a JSON response serializer may check for an acceptable status code (`2XX` range) and content type (`application/json`), decoding a valid JSON response into an object. - */ -@protocol AFURLResponseSerialization - -/** - The response object decoded from the data associated with a specified response. - - @param response The response to be processed. - @param data The response data to be decoded. - @param error The error that occurred while attempting to decode the response data. - - @return The object decoded from the specified response data. - */ -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error; - -@end - -#pragma mark - - -/** - `AFHTTPResponseSerializer` conforms to the `AFURLRequestSerialization` & `AFURLResponseSerialization` protocols, offering a concrete base implementation of query string / URL form-encoded parameter serialization and default request headers, as well as response status code and content type validation. - - Any request or response serializer dealing with HTTP is encouraged to subclass `AFHTTPResponseSerializer` in order to ensure consistent default behavior. - */ -@interface AFHTTPResponseSerializer : NSObject - -- (instancetype) init; - -/** - The string encoding used to serialize data received from the server, when no string encoding is specified by the response. `NSUTF8StringEncoding` by default. - */ -@property (nonatomic, assign) NSStringEncoding stringEncoding; - -/** - Creates and returns a serializer with default configuration. - */ -+ (instancetype)serializer; - -///----------------------------------------- -/// @name Configuring Response Serialization -///----------------------------------------- - -/** - The acceptable HTTP status codes for responses. When non-`nil`, responses with status codes not contained by the set will result in an error during validation. - - See http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - */ -@property (nonatomic, copy) NSIndexSet *acceptableStatusCodes; - -/** - The acceptable MIME types for responses. When non-`nil`, responses with a `Content-Type` with MIME types that do not intersect with the set will result in an error during validation. - */ -@property (nonatomic, copy) NSSet *acceptableContentTypes; - -/** - Validates the specified response and data. - - In its base implementation, this method checks for an acceptable status code and content type. Subclasses may wish to add other domain-specific checks. - - @param response The response to be validated. - @param data The data associated with the response. - @param error The error that occurred while attempting to validate the response. - - @return `YES` if the response is valid, otherwise `NO`. - */ -- (BOOL)validateResponse:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error; - -@end - -#pragma mark - - - -/** - `AFJSONResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes JSON responses. - - By default, `AFJSONResponseSerializer` accepts the following MIME types, which includes the official standard, `application/json`, as well as other commonly-used types: - - - `application/json` - - `text/json` - - `text/javascript` - */ -@interface AFJSONResponseSerializer : AFHTTPResponseSerializer - -- (instancetype) init; - -/** - Options for reading the response JSON data and creating the Foundation objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. - */ -@property (nonatomic, assign) NSJSONReadingOptions readingOptions; - -/** - Whether to remove keys with `NSNull` values from response JSON. Defaults to `NO`. - */ -@property (nonatomic, assign) BOOL removesKeysWithNullValues; - -/** - Creates and returns a JSON serializer with specified reading and writing options. - - @param readingOptions The specified JSON reading options. - */ -+ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions; - -@end - -#pragma mark - - -/** - `AFXMLParserResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLParser` objects. - - By default, `AFXMLParserResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: - - - `application/xml` - - `text/xml` - */ -@interface AFXMLParserResponseSerializer : AFHTTPResponseSerializer - -@end - -#pragma mark - - -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED - -/** - `AFXMLDocumentResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. - - By default, `AFXMLDocumentResponseSerializer` accepts the following MIME types, which includes the official standard, `application/xml`, as well as other commonly-used types: - - - `application/xml` - - `text/xml` - */ -@interface AFXMLDocumentResponseSerializer : AFHTTPResponseSerializer - -- (instancetype) init; - -/** - Input and output options specifically intended for `NSXMLDocument` objects. For possible values, see the `NSJSONSerialization` documentation section "NSJSONReadingOptions". `0` by default. - */ -@property (nonatomic, assign) NSUInteger options; - -/** - Creates and returns an XML document serializer with the specified options. - - @param mask The XML document options. - */ -+ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask; - -@end - -#endif - -#pragma mark - - -/** - `AFPropertyListResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes XML responses as an `NSXMLDocument` objects. - - By default, `AFPropertyListResponseSerializer` accepts the following MIME types: - - - `application/x-plist` - */ -@interface AFPropertyListResponseSerializer : AFHTTPResponseSerializer - -- (instancetype) init; - -/** - The property list format. Possible values are described in "NSPropertyListFormat". - */ -@property (nonatomic, assign) NSPropertyListFormat format; - -/** - The property list reading options. Possible values are described in "NSPropertyListMutabilityOptions." - */ -@property (nonatomic, assign) NSPropertyListReadOptions readOptions; - -/** - Creates and returns a property list serializer with a specified format, read options, and write options. - - @param format The property list format. - @param readOptions The property list reading options. - */ -+ (instancetype)serializerWithFormat:(NSPropertyListFormat)format - readOptions:(NSPropertyListReadOptions)readOptions; - -@end - -#pragma mark - - -/** - `AFImageResponseSerializer` is a subclass of `AFHTTPResponseSerializer` that validates and decodes image responses. - - By default, `AFImageResponseSerializer` accepts the following MIME types, which correspond to the image formats supported by UIImage or NSImage: - - - `image/tiff` - - `image/jpeg` - - `image/gif` - - `image/png` - - `image/ico` - - `image/x-icon` - - `image/bmp` - - `image/x-bmp` - - `image/x-xbitmap` - - `image/x-win-bitmap` - */ -@interface AFImageResponseSerializer : AFHTTPResponseSerializer - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -/** - The scale factor used when interpreting the image data to construct `responseImage`. Specifying a scale factor of 1.0 results in an image whose size matches the pixel-based dimensions of the image. Applying a different scale factor changes the size of the image as reported by the size property. This is set to the value of scale of the main screen by default, which automatically scales images for retina displays, for instance. - */ -@property (nonatomic, assign) CGFloat imageScale; - -/** - Whether to automatically inflate response image data for compressed formats (such as PNG or JPEG). Enabling this can significantly improve drawing performance on iOS when used with `setCompletionBlockWithSuccess:failure:`, as it allows a bitmap representation to be constructed in the background rather than on the main thread. `YES` by default. - */ -@property (nonatomic, assign) BOOL automaticallyInflatesResponseImage; -#endif - -@end - -#pragma mark - - -/** - `AFCompoundSerializer` is a subclass of `AFHTTPResponseSerializer` that delegates the response serialization to the first `AFHTTPResponseSerializer` object that returns an object for `responseObjectForResponse:data:error:`, falling back on the default behavior of `AFHTTPResponseSerializer`. This is useful for supporting multiple potential types and structures of server responses with a single serializer. - */ -@interface AFCompoundResponseSerializer : AFHTTPResponseSerializer - -/** - The component response serializers. - */ -@property (readonly, nonatomic, copy) NSArray *responseSerializers; - -/** - Creates and returns a compound serializer comprised of the specified response serializers. - - @warning Each response serializer specified must be a subclass of `AFHTTPResponseSerializer`, and response to `-validateResponse:data:error:`. - */ -+ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers; - -@end - -///---------------- -/// @name Constants -///---------------- - -/** - ## Error Domains - - The following error domain is predefined. - - - `NSString * const AFURLResponseSerializationErrorDomain` - - ### Constants - - `AFURLResponseSerializationErrorDomain` - AFURLResponseSerializer errors. Error codes for `AFURLResponseSerializationErrorDomain` correspond to codes in `NSURLErrorDomain`. - */ -extern NSString * const AFURLResponseSerializationErrorDomain; - -/** - ## User info dictionary keys - - These keys may exist in the user info dictionary, in addition to those defined for NSError. - - - `NSString * const AFNetworkingOperationFailingURLResponseErrorKey` - - `NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey` - - ### Constants - - `AFNetworkingOperationFailingURLResponseErrorKey` - The corresponding value is an `NSURLResponse` containing the response of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. - - `AFNetworkingOperationFailingURLResponseDataErrorKey` - The corresponding value is an `NSData` containing the original data of the operation associated with an error. This key is only present in the `AFURLResponseSerializationErrorDomain`. - */ -extern NSString * const AFNetworkingOperationFailingURLResponseErrorKey; - -extern NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey; - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m deleted file mode 100644 index a672d205ca4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLResponseSerialization.m +++ /dev/null @@ -1,797 +0,0 @@ -// AFURLResponseSerialization.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFURLResponseSerialization.h" - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) -#import -#endif - -NSString * const AFURLResponseSerializationErrorDomain = @"com.alamofire.error.serialization.response"; -NSString * const AFNetworkingOperationFailingURLResponseErrorKey = @"com.alamofire.serialization.response.error.response"; -NSString * const AFNetworkingOperationFailingURLResponseDataErrorKey = @"com.alamofire.serialization.response.error.data"; - -static NSError * AFErrorWithUnderlyingError(NSError *error, NSError *underlyingError) { - if (!error) { - return underlyingError; - } - - if (!underlyingError || error.userInfo[NSUnderlyingErrorKey]) { - return error; - } - - NSMutableDictionary *mutableUserInfo = [error.userInfo mutableCopy]; - mutableUserInfo[NSUnderlyingErrorKey] = underlyingError; - - return [[NSError alloc] initWithDomain:error.domain code:error.code userInfo:mutableUserInfo]; -} - -static BOOL AFErrorOrUnderlyingErrorHasCodeInDomain(NSError *error, NSInteger code, NSString *domain) { - if ([error.domain isEqualToString:domain] && error.code == code) { - return YES; - } else if (error.userInfo[NSUnderlyingErrorKey]) { - return AFErrorOrUnderlyingErrorHasCodeInDomain(error.userInfo[NSUnderlyingErrorKey], code, domain); - } - - return NO; -} - -static id AFJSONObjectByRemovingKeysWithNullValues(id JSONObject, NSJSONReadingOptions readingOptions) { - if ([JSONObject isKindOfClass:[NSArray class]]) { - NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:[(NSArray *)JSONObject count]]; - for (id value in (NSArray *)JSONObject) { - [mutableArray addObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions)]; - } - - return (readingOptions & NSJSONReadingMutableContainers) ? mutableArray : [NSArray arrayWithArray:mutableArray]; - } else if ([JSONObject isKindOfClass:[NSDictionary class]]) { - NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:JSONObject]; - for (id key in [(NSDictionary *)JSONObject allKeys]) { - id value = [(NSDictionary *)JSONObject objectForKey:key]; - if (!value || [value isEqual:[NSNull null]]) { - [mutableDictionary removeObjectForKey:key]; - } else if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) { - [mutableDictionary setObject:AFJSONObjectByRemovingKeysWithNullValues(value, readingOptions) forKey:key]; - } - } - - return (readingOptions & NSJSONReadingMutableContainers) ? mutableDictionary : [NSDictionary dictionaryWithDictionary:mutableDictionary]; - } - - return JSONObject; -} - -@implementation AFHTTPResponseSerializer - -+ (instancetype)serializer { - return [[self alloc] init]; -} - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.stringEncoding = NSUTF8StringEncoding; - - self.acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 100)]; - self.acceptableContentTypes = nil; - - return self; -} - -#pragma mark - - -- (BOOL)validateResponse:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError * __autoreleasing *)error -{ - BOOL responseIsValid = YES; - NSError *validationError = nil; - - if (response && [response isKindOfClass:[NSHTTPURLResponse class]]) { - if (self.acceptableContentTypes && ![self.acceptableContentTypes containsObject:[response MIMEType]]) { - if ([data length] > 0 && [response URL]) { - NSMutableDictionary *mutableUserInfo = [@{ - NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: unacceptable content-type: %@", @"AFNetworking", nil), [response MIMEType]], - NSURLErrorFailingURLErrorKey:[response URL], - AFNetworkingOperationFailingURLResponseErrorKey: response, - } mutableCopy]; - if (data) { - mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data; - } - - validationError = AFErrorWithUnderlyingError([NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:mutableUserInfo], validationError); - } - - responseIsValid = NO; - } - - if (self.acceptableStatusCodes && ![self.acceptableStatusCodes containsIndex:(NSUInteger)response.statusCode] && [response URL]) { - NSMutableDictionary *mutableUserInfo = [@{ - NSLocalizedDescriptionKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Request failed: %@ (%ld)", @"AFNetworking", nil), [NSHTTPURLResponse localizedStringForStatusCode:response.statusCode], (long)response.statusCode], - NSURLErrorFailingURLErrorKey:[response URL], - AFNetworkingOperationFailingURLResponseErrorKey: response, - } mutableCopy]; - - if (data) { - mutableUserInfo[AFNetworkingOperationFailingURLResponseDataErrorKey] = data; - } - - validationError = AFErrorWithUnderlyingError([NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorBadServerResponse userInfo:mutableUserInfo], validationError); - - responseIsValid = NO; - } - } - - if (error && !responseIsValid) { - *error = validationError; - } - - return responseIsValid; -} - -#pragma mark - AFURLResponseSerialization - -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - [self validateResponse:(NSHTTPURLResponse *)response data:data error:error]; - - return data; -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - self = [self init]; - if (!self) { - return nil; - } - - self.acceptableStatusCodes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; - self.acceptableContentTypes = [decoder decodeObjectOfClass:[NSIndexSet class] forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [coder encodeObject:self.acceptableStatusCodes forKey:NSStringFromSelector(@selector(acceptableStatusCodes))]; - [coder encodeObject:self.acceptableContentTypes forKey:NSStringFromSelector(@selector(acceptableContentTypes))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFHTTPResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; - serializer.acceptableStatusCodes = [self.acceptableStatusCodes copyWithZone:zone]; - serializer.acceptableContentTypes = [self.acceptableContentTypes copyWithZone:zone]; - - return serializer; -} - -@end - -#pragma mark - - -@implementation AFJSONResponseSerializer - -+ (instancetype)serializer { - return [self serializerWithReadingOptions:(NSJSONReadingOptions)0]; -} - -+ (instancetype)serializerWithReadingOptions:(NSJSONReadingOptions)readingOptions { - AFJSONResponseSerializer *serializer = [[self alloc] init]; - serializer.readingOptions = readingOptions; - - return serializer; -} - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil]; - - return self; -} - -#pragma mark - AFURLResponseSerialization - -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { - if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { - return nil; - } - } - - // Workaround for behavior of Rails to return a single space for `head :ok` (a workaround for a bug in Safari), which is not interpreted as valid input by NSJSONSerialization. - // See https://github.com/rails/rails/issues/1742 - NSStringEncoding stringEncoding = self.stringEncoding; - if (response.textEncodingName) { - CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - if (encoding != kCFStringEncodingInvalidId) { - stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); - } - } - - id responseObject = nil; - NSError *serializationError = nil; - @autoreleasepool { - NSString *responseString = [[NSString alloc] initWithData:data encoding:stringEncoding]; - if (responseString && ![responseString isEqualToString:@" "]) { - // Workaround for a bug in NSJSONSerialization when Unicode character escape codes are used instead of the actual character - // See http://stackoverflow.com/a/12843465/157142 - data = [responseString dataUsingEncoding:NSUTF8StringEncoding]; - - if (data) { - if ([data length] > 0) { - responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError]; - } else { - return nil; - } - } else { - NSDictionary *userInfo = @{ - NSLocalizedDescriptionKey: NSLocalizedStringFromTable(@"Data failed decoding as a UTF-8 string", @"AFNetworking", nil), - NSLocalizedFailureReasonErrorKey: [NSString stringWithFormat:NSLocalizedStringFromTable(@"Could not decode string: %@", @"AFNetworking", nil), responseString] - }; - - serializationError = [NSError errorWithDomain:AFURLResponseSerializationErrorDomain code:NSURLErrorCannotDecodeContentData userInfo:userInfo]; - } - } - } - - if (self.removesKeysWithNullValues && responseObject) { - responseObject = AFJSONObjectByRemovingKeysWithNullValues(responseObject, self.readingOptions); - } - - if (error) { - *error = AFErrorWithUnderlyingError(serializationError, *error); - } - - return responseObject; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.readingOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(readingOptions))] unsignedIntegerValue]; - self.removesKeysWithNullValues = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(removesKeysWithNullValues))] boolValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeObject:@(self.readingOptions) forKey:NSStringFromSelector(@selector(readingOptions))]; - [coder encodeObject:@(self.removesKeysWithNullValues) forKey:NSStringFromSelector(@selector(removesKeysWithNullValues))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFJSONResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; - serializer.readingOptions = self.readingOptions; - serializer.removesKeysWithNullValues = self.removesKeysWithNullValues; - - return serializer; -} - -@end - -#pragma mark - - -@implementation AFXMLParserResponseSerializer - -+ (instancetype)serializer { - AFXMLParserResponseSerializer *serializer = [[self alloc] init]; - - return serializer; -} - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", nil]; - - return self; -} - -#pragma mark - AFURLResponseSerialization - -- (id)responseObjectForResponse:(NSHTTPURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { - if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { - return nil; - } - } - - return [[NSXMLParser alloc] initWithData:data]; -} - -@end - -#pragma mark - - -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED - -@implementation AFXMLDocumentResponseSerializer - -+ (instancetype)serializer { - return [self serializerWithXMLDocumentOptions:0]; -} - -+ (instancetype)serializerWithXMLDocumentOptions:(NSUInteger)mask { - AFXMLDocumentResponseSerializer *serializer = [[self alloc] init]; - serializer.options = mask; - - return serializer; -} - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/xml", @"text/xml", nil]; - - return self; -} - -#pragma mark - AFURLResponseSerialization - -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { - if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { - return nil; - } - } - - NSError *serializationError = nil; - NSXMLDocument *document = [[NSXMLDocument alloc] initWithData:data options:self.options error:&serializationError]; - - if (error) { - *error = AFErrorWithUnderlyingError(serializationError, *error); - } - - return document; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.options = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(options))] unsignedIntegerValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeObject:@(self.options) forKey:NSStringFromSelector(@selector(options))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFXMLDocumentResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; - serializer.options = self.options; - - return serializer; -} - -@end - -#endif - -#pragma mark - - -@implementation AFPropertyListResponseSerializer - -+ (instancetype)serializer { - return [self serializerWithFormat:NSPropertyListXMLFormat_v1_0 readOptions:0]; -} - -+ (instancetype)serializerWithFormat:(NSPropertyListFormat)format - readOptions:(NSPropertyListReadOptions)readOptions -{ - AFPropertyListResponseSerializer *serializer = [[self alloc] init]; - serializer.format = format; - serializer.readOptions = readOptions; - - return serializer; -} - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"application/x-plist", nil]; - - return self; -} - -#pragma mark - AFURLResponseSerialization - -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { - if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { - return nil; - } - } - - id responseObject; - NSError *serializationError = nil; - - if (data) { - responseObject = [NSPropertyListSerialization propertyListWithData:data options:self.readOptions format:NULL error:&serializationError]; - } - - if (error) { - *error = AFErrorWithUnderlyingError(serializationError, *error); - } - - return responseObject; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.format = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(format))] unsignedIntegerValue]; - self.readOptions = [[decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(readOptions))] unsignedIntegerValue]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeObject:@(self.format) forKey:NSStringFromSelector(@selector(format))]; - [coder encodeObject:@(self.readOptions) forKey:NSStringFromSelector(@selector(readOptions))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFPropertyListResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; - serializer.format = self.format; - serializer.readOptions = self.readOptions; - - return serializer; -} - -@end - -#pragma mark - - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) -#import - -static UIImage * AFImageWithDataAtScale(NSData *data, CGFloat scale) { - UIImage *image = [[UIImage alloc] initWithData:data]; - if (image.images) { - return image; - } - - return [[UIImage alloc] initWithCGImage:[image CGImage] scale:scale orientation:image.imageOrientation]; -} - -static UIImage * AFInflatedImageFromResponseWithDataAtScale(NSHTTPURLResponse *response, NSData *data, CGFloat scale) { - if (!data || [data length] == 0) { - return nil; - } - - CGImageRef imageRef = NULL; - CGDataProviderRef dataProvider = CGDataProviderCreateWithCFData((__bridge CFDataRef)data); - - if ([response.MIMEType isEqualToString:@"image/png"]) { - imageRef = CGImageCreateWithPNGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); - } else if ([response.MIMEType isEqualToString:@"image/jpeg"]) { - imageRef = CGImageCreateWithJPEGDataProvider(dataProvider, NULL, true, kCGRenderingIntentDefault); - - if (imageRef) { - CGColorSpaceRef imageColorSpace = CGImageGetColorSpace(imageRef); - CGColorSpaceModel imageColorSpaceModel = CGColorSpaceGetModel(imageColorSpace); - - // CGImageCreateWithJPEGDataProvider does not properly handle CMKY, so fall back to AFImageWithDataAtScale - if (imageColorSpaceModel == kCGColorSpaceModelCMYK) { - CGImageRelease(imageRef); - imageRef = NULL; - } - } - } - - CGDataProviderRelease(dataProvider); - - UIImage *image = AFImageWithDataAtScale(data, scale); - if (!imageRef) { - if (image.images || !image) { - return image; - } - - imageRef = CGImageCreateCopy([image CGImage]); - if (!imageRef) { - return nil; - } - } - - size_t width = CGImageGetWidth(imageRef); - size_t height = CGImageGetHeight(imageRef); - size_t bitsPerComponent = CGImageGetBitsPerComponent(imageRef); - - if (width * height > 1024 * 1024 || bitsPerComponent > 8) { - CGImageRelease(imageRef); - - return image; - } - - // CGImageGetBytesPerRow() calculates incorrectly in iOS 5.0, so defer to CGBitmapContextCreate - size_t bytesPerRow = 0; - CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); - CGColorSpaceModel colorSpaceModel = CGColorSpaceGetModel(colorSpace); - CGBitmapInfo bitmapInfo = CGImageGetBitmapInfo(imageRef); - - if (colorSpaceModel == kCGColorSpaceModelRGB) { - uint32_t alpha = (bitmapInfo & kCGBitmapAlphaInfoMask); -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wassign-enum" - if (alpha == kCGImageAlphaNone) { - bitmapInfo &= ~kCGBitmapAlphaInfoMask; - bitmapInfo |= kCGImageAlphaNoneSkipFirst; - } else if (!(alpha == kCGImageAlphaNoneSkipFirst || alpha == kCGImageAlphaNoneSkipLast)) { - bitmapInfo &= ~kCGBitmapAlphaInfoMask; - bitmapInfo |= kCGImageAlphaPremultipliedFirst; - } -#pragma clang diagnostic pop - } - - CGContextRef context = CGBitmapContextCreate(NULL, width, height, bitsPerComponent, bytesPerRow, colorSpace, bitmapInfo); - - CGColorSpaceRelease(colorSpace); - - if (!context) { - CGImageRelease(imageRef); - - return image; - } - - CGContextDrawImage(context, CGRectMake(0.0f, 0.0f, width, height), imageRef); - CGImageRef inflatedImageRef = CGBitmapContextCreateImage(context); - - CGContextRelease(context); - - UIImage *inflatedImage = [[UIImage alloc] initWithCGImage:inflatedImageRef scale:scale orientation:image.imageOrientation]; - - CGImageRelease(inflatedImageRef); - CGImageRelease(imageRef); - - return inflatedImage; -} -#endif - - -@implementation AFImageResponseSerializer - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon", @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", nil]; - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - self.imageScale = [[UIScreen mainScreen] scale]; - self.automaticallyInflatesResponseImage = YES; -#endif - - return self; -} - -#pragma mark - AFURLResponseSerializer - -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - if (![self validateResponse:(NSHTTPURLResponse *)response data:data error:error]) { - if (!error || AFErrorOrUnderlyingErrorHasCodeInDomain(*error, NSURLErrorCannotDecodeContentData, AFURLResponseSerializationErrorDomain)) { - return nil; - } - } - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - if (self.automaticallyInflatesResponseImage) { - return AFInflatedImageFromResponseWithDataAtScale((NSHTTPURLResponse *)response, data, self.imageScale); - } else { - return AFImageWithDataAtScale(data, self.imageScale); - } -#elif defined(__MAC_OS_X_VERSION_MIN_REQUIRED) - // Ensure that the image is set to it's correct pixel width and height - NSBitmapImageRep *bitimage = [[NSBitmapImageRep alloc] initWithData:data]; - NSImage *image = [[NSImage alloc] initWithSize:NSMakeSize([bitimage pixelsWide], [bitimage pixelsHigh])]; - [image addRepresentation:bitimage]; - - return image; -#endif - - return nil; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - NSNumber *imageScale = [decoder decodeObjectOfClass:[NSNumber class] forKey:NSStringFromSelector(@selector(imageScale))]; -#if CGFLOAT_IS_DOUBLE - self.imageScale = [imageScale doubleValue]; -#else - self.imageScale = [imageScale floatValue]; -#endif - - self.automaticallyInflatesResponseImage = [decoder decodeBoolForKey:NSStringFromSelector(@selector(automaticallyInflatesResponseImage))]; -#endif - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - [coder encodeObject:@(self.imageScale) forKey:NSStringFromSelector(@selector(imageScale))]; - [coder encodeBool:self.automaticallyInflatesResponseImage forKey:NSStringFromSelector(@selector(automaticallyInflatesResponseImage))]; -#endif -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFImageResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - serializer.imageScale = self.imageScale; - serializer.automaticallyInflatesResponseImage = self.automaticallyInflatesResponseImage; -#endif - - return serializer; -} - -@end - -#pragma mark - - -@interface AFCompoundResponseSerializer () -@property (readwrite, nonatomic, copy) NSArray *responseSerializers; -@end - -@implementation AFCompoundResponseSerializer - -+ (instancetype)compoundSerializerWithResponseSerializers:(NSArray *)responseSerializers { - AFCompoundResponseSerializer *serializer = [[self alloc] init]; - serializer.responseSerializers = responseSerializers; - - return serializer; -} - -#pragma mark - AFURLResponseSerialization - -- (id)responseObjectForResponse:(NSURLResponse *)response - data:(NSData *)data - error:(NSError *__autoreleasing *)error -{ - for (id serializer in self.responseSerializers) { - if (![serializer isKindOfClass:[AFHTTPResponseSerializer class]]) { - continue; - } - - NSError *serializerError = nil; - id responseObject = [serializer responseObjectForResponse:response data:data error:&serializerError]; - if (responseObject) { - if (error) { - *error = AFErrorWithUnderlyingError(serializerError, *error); - } - - return responseObject; - } - } - - return [super responseObjectForResponse:response data:data error:error]; -} - -#pragma mark - NSSecureCoding - -- (id)initWithCoder:(NSCoder *)decoder { - self = [super initWithCoder:decoder]; - if (!self) { - return nil; - } - - self.responseSerializers = [decoder decodeObjectOfClass:[NSArray class] forKey:NSStringFromSelector(@selector(responseSerializers))]; - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [super encodeWithCoder:coder]; - - [coder encodeObject:self.responseSerializers forKey:NSStringFromSelector(@selector(responseSerializers))]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - AFCompoundResponseSerializer *serializer = [[[self class] allocWithZone:zone] init]; - serializer.responseSerializers = self.responseSerializers; - - return serializer; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h deleted file mode 100644 index 21d9d64f9fb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.h +++ /dev/null @@ -1,546 +0,0 @@ -// AFURLSessionManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import "AFURLResponseSerialization.h" -#import "AFURLRequestSerialization.h" -#import "AFSecurityPolicy.h" -#import "AFNetworkReachabilityManager.h" - -#ifndef NS_DESIGNATED_INITIALIZER -#if __has_attribute(objc_designated_initializer) -#define NS_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) -#else -#define NS_DESIGNATED_INITIALIZER -#endif -#endif - -/** - `AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to ``, ``, ``, and ``. - - ## Subclassing Notes - - This is the base class for `AFHTTPSessionManager`, which adds functionality specific to making HTTP requests. If you are looking to extend `AFURLSessionManager` specifically for HTTP, consider subclassing `AFHTTPSessionManager` instead. - - ## NSURLSession & NSURLSessionTask Delegate Methods - - `AFURLSessionManager` implements the following delegate methods: - - ### `NSURLSessionDelegate` - - - `URLSession:didBecomeInvalidWithError:` - - `URLSession:didReceiveChallenge:completionHandler:` - - `URLSessionDidFinishEventsForBackgroundURLSession:` - - ### `NSURLSessionTaskDelegate` - - - `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:` - - `URLSession:task:didReceiveChallenge:completionHandler:` - - `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:` - - `URLSession:task:didCompleteWithError:` - - ### `NSURLSessionDataDelegate` - - - `URLSession:dataTask:didReceiveResponse:completionHandler:` - - `URLSession:dataTask:didBecomeDownloadTask:` - - `URLSession:dataTask:didReceiveData:` - - `URLSession:dataTask:willCacheResponse:completionHandler:` - - ### `NSURLSessionDownloadDelegate` - - - `URLSession:downloadTask:didFinishDownloadingToURL:` - - `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:` - - `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:` - - If any of these methods are overridden in a subclass, they _must_ call the `super` implementation first. - - ## Network Reachability Monitoring - - Network reachability status and change monitoring is available through the `reachabilityManager` property. Applications may choose to monitor network reachability conditions in order to prevent or suspend any outbound requests. See `AFNetworkReachabilityManager` for more details. - - ## NSCoding Caveats - - - Encoded managers do not include any block properties. Be sure to set delegate callback blocks when using `-initWithCoder:` or `NSKeyedUnarchiver`. - - ## NSCopying Caveats - - - `-copy` and `-copyWithZone:` return a new manager with a new `NSURLSession` created from the configuration of the original. - - Operation copies do not include any delegate callback blocks, as they often strongly captures a reference to `self`, which would otherwise have the unintuitive side-effect of pointing to the _original_ session manager when copied. - - @warning Managers for background sessions must be owned for the duration of their use. This can be accomplished by creating an application-wide or shared singleton instance. - */ - -#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) - -@interface AFURLSessionManager : NSObject - -/** - The managed session. - */ -@property (readonly, nonatomic, strong) NSURLSession *session; - -/** - The operation queue on which delegate callbacks are run. - */ -@property (readonly, nonatomic, strong) NSOperationQueue *operationQueue; - -/** - Responses sent from the server in data tasks created with `dataTaskWithRequest:success:failure:` and run using the `GET` / `POST` / et al. convenience methods are automatically validated and serialized by the response serializer. By default, this property is set to an instance of `AFJSONResponseSerializer`. - - @warning `responseSerializer` must not be `nil`. - */ -@property (nonatomic, strong) id responseSerializer; - -///------------------------------- -/// @name Managing Security Policy -///------------------------------- - -/** - The security policy used by created request operations to evaluate server trust for secure connections. `AFURLSessionManager` uses the `defaultPolicy` unless otherwise specified. - */ -@property (nonatomic, strong) AFSecurityPolicy *securityPolicy; - -///-------------------------------------- -/// @name Monitoring Network Reachability -///-------------------------------------- - -/** - The network reachability manager. `AFURLSessionManager` uses the `sharedManager` by default. - */ -@property (readwrite, nonatomic, strong) AFNetworkReachabilityManager *reachabilityManager; - -///---------------------------- -/// @name Getting Session Tasks -///---------------------------- - -/** - The data, upload, and download tasks currently run by the managed session. - */ -@property (readonly, nonatomic, strong) NSArray *tasks; - -/** - The data tasks currently run by the managed session. - */ -@property (readonly, nonatomic, strong) NSArray *dataTasks; - -/** - The upload tasks currently run by the managed session. - */ -@property (readonly, nonatomic, strong) NSArray *uploadTasks; - -/** - The download tasks currently run by the managed session. - */ -@property (readonly, nonatomic, strong) NSArray *downloadTasks; - -///------------------------------- -/// @name Managing Callback Queues -///------------------------------- - -/** - The dispatch queue for `completionBlock`. If `NULL` (default), the main queue is used. - */ -#if OS_OBJECT_HAVE_OBJC_SUPPORT -@property (nonatomic, strong) dispatch_queue_t completionQueue; -#else -@property (nonatomic, assign) dispatch_queue_t completionQueue; -#endif - -/** - The dispatch group for `completionBlock`. If `NULL` (default), a private dispatch group is used. - */ -#if OS_OBJECT_HAVE_OBJC_SUPPORT -@property (nonatomic, strong) dispatch_group_t completionGroup; -#else -@property (nonatomic, assign) dispatch_group_t completionGroup; -#endif - -///--------------------------------- -/// @name Working Around System Bugs -///--------------------------------- - -/** - Whether to attempt to retry creation of upload tasks for background sessions when initial call returns `nil`. `NO` by default. - - @bug As of iOS 7.0, there is a bug where upload tasks created for background tasks are sometimes `nil`. As a workaround, if this property is `YES`, AFNetworking will follow Apple's recommendation to try creating the task again. - - @see https://github.com/AFNetworking/AFNetworking/issues/1675 - */ -@property (nonatomic, assign) BOOL attemptsToRecreateUploadTasksForBackgroundSessions; - -///--------------------- -/// @name Initialization -///--------------------- - -/** - Creates and returns a manager for a session created with the specified configuration. This is the designated initializer. - - @param configuration The configuration used to create the managed session. - - @return A manager for a newly-created session. - */ -- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration NS_DESIGNATED_INITIALIZER; - -/** - Invalidates the managed session, optionally canceling pending tasks. - - @param cancelPendingTasks Whether or not to cancel pending tasks. - */ -- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks; - -///------------------------- -/// @name Running Data Tasks -///------------------------- - -/** - Creates an `NSURLSessionDataTask` with the specified request. - - @param request The HTTP request for the request. - @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. - */ -- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; - -///--------------------------- -/// @name Running Upload Tasks -///--------------------------- - -/** - Creates an `NSURLSessionUploadTask` with the specified request for a local file. - - @param request The HTTP request for the request. - @param fileURL A URL to the local file to be uploaded. - @param progress A progress object monitoring the current upload progress. - @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. - - @see `attemptsToRecreateUploadTasksForBackgroundSessions` - */ -- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request - fromFile:(NSURL *)fileURL - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; - -/** - Creates an `NSURLSessionUploadTask` with the specified request for an HTTP body. - - @param request The HTTP request for the request. - @param bodyData A data object containing the HTTP body to be uploaded. - @param progress A progress object monitoring the current upload progress. - @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. - */ -- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request - fromData:(NSData *)bodyData - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; - -/** - Creates an `NSURLSessionUploadTask` with the specified streaming request. - - @param request The HTTP request for the request. - @param progress A progress object monitoring the current upload progress. - @param completionHandler A block object to be executed when the task finishes. This block has no return value and takes three arguments: the server response, the response object created by that serializer, and the error that occurred, if any. - */ -- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler; - -///----------------------------- -/// @name Running Download Tasks -///----------------------------- - -/** - Creates an `NSURLSessionDownloadTask` with the specified request. - - @param request The HTTP request for the request. - @param progress A progress object monitoring the current download progress. - @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. - @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. - - @warning If using a background `NSURLSessionConfiguration` on iOS, these blocks will be lost when the app is terminated. Background sessions may prefer to use `-setDownloadTaskDidFinishDownloadingBlock:` to specify the URL for saving the downloaded file, rather than the destination block of this method. - */ -- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request - progress:(NSProgress * __autoreleasing *)progress - destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination - completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler; - -/** - Creates an `NSURLSessionDownloadTask` with the specified resume data. - - @param resumeData The data used to resume downloading. - @param progress A progress object monitoring the current download progress. - @param destination A block object to be executed in order to determine the destination of the downloaded file. This block takes two arguments, the target path & the server response, and returns the desired file URL of the resulting download. The temporary file used during the download will be automatically deleted after being moved to the returned URL. - @param completionHandler A block to be executed when a task finishes. This block has no return value and takes three arguments: the server response, the path of the downloaded file, and the error describing the network or parsing error that occurred, if any. - */ -- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData - progress:(NSProgress * __autoreleasing *)progress - destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination - completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler; - -///--------------------------------- -/// @name Getting Progress for Tasks -///--------------------------------- - -/** - Returns the upload progress of the specified task. - - @param uploadTask The session upload task. Must not be `nil`. - - @return An `NSProgress` object reporting the upload progress of a task, or `nil` if the progress is unavailable. - */ -- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask; - -/** - Returns the download progress of the specified task. - - @param downloadTask The session download task. Must not be `nil`. - - @return An `NSProgress` object reporting the download progress of a task, or `nil` if the progress is unavailable. - */ -- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask; - -///----------------------------------------- -/// @name Setting Session Delegate Callbacks -///----------------------------------------- - -/** - Sets a block to be executed when the managed session becomes invalid, as handled by the `NSURLSessionDelegate` method `URLSession:didBecomeInvalidWithError:`. - - @param block A block object to be executed when the managed session becomes invalid. The block has no return value, and takes two arguments: the session, and the error related to the cause of invalidation. - */ -- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block; - -/** - Sets a block to be executed when a connection level authentication challenge has occurred, as handled by the `NSURLSessionDelegate` method `URLSession:didReceiveChallenge:completionHandler:`. - - @param block A block object to be executed when a connection level authentication challenge has occurred. The block returns the disposition of the authentication challenge, and takes three arguments: the session, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. - */ -- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block; - -///-------------------------------------- -/// @name Setting Task Delegate Callbacks -///-------------------------------------- - -/** - Sets a block to be executed when a task requires a new request body stream to send to the remote server, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:needNewBodyStream:`. - - @param block A block object to be executed when a task requires a new request body stream. - */ -- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block; - -/** - Sets a block to be executed when an HTTP request is attempting to perform a redirection to a different URL, as handled by the `NSURLSessionTaskDelegate` method `URLSession:willPerformHTTPRedirection:newRequest:completionHandler:`. - - @param block A block object to be executed when an HTTP request is attempting to perform a redirection to a different URL. The block returns the request to be made for the redirection, and takes four arguments: the session, the task, the redirection response, and the request corresponding to the redirection response. - */ -- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block; - -/** - Sets a block to be executed when a session task has received a request specific authentication challenge, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didReceiveChallenge:completionHandler:`. - - @param block A block object to be executed when a session task has received a request specific authentication challenge. The block returns the disposition of the authentication challenge, and takes four arguments: the session, the task, the authentication challenge, and a pointer to the credential that should be used to resolve the challenge. - */ -- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block; - -/** - Sets a block to be executed periodically to track upload progress, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didSendBodyData:totalBytesSent:totalBytesExpectedToSend:`. - - @param block A block object to be called when an undetermined number of bytes have been uploaded to the server. This block has no return value and takes five arguments: the session, the task, the number of bytes written since the last time the upload progress block was called, the total bytes written, and the total bytes expected to be written during the request, as initially determined by the length of the HTTP body. This block may be called multiple times, and will execute on the main thread. - */ -- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block; - -/** - Sets a block to be executed as the last message related to a specific task, as handled by the `NSURLSessionTaskDelegate` method `URLSession:task:didCompleteWithError:`. - - @param block A block object to be executed when a session task is completed. The block has no return value, and takes three arguments: the session, the task, and any error that occurred in the process of executing the task. - */ -- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block; - -///------------------------------------------- -/// @name Setting Data Task Delegate Callbacks -///------------------------------------------- - -/** - Sets a block to be executed when a data task has received a response, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveResponse:completionHandler:`. - - @param block A block object to be executed when a data task has received a response. The block returns the disposition of the session response, and takes three arguments: the session, the data task, and the received response. - */ -- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block; - -/** - Sets a block to be executed when a data task has become a download task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didBecomeDownloadTask:`. - - @param block A block object to be executed when a data task has become a download task. The block has no return value, and takes three arguments: the session, the data task, and the download task it has become. - */ -- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block; - -/** - Sets a block to be executed when a data task receives data, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:didReceiveData:`. - - @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the session, the data task, and the data received. This block may be called multiple times, and will execute on the session manager operation queue. - */ -- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block; - -/** - Sets a block to be executed to determine the caching behavior of a data task, as handled by the `NSURLSessionDataDelegate` method `URLSession:dataTask:willCacheResponse:completionHandler:`. - - @param block A block object to be executed to determine the caching behavior of a data task. The block returns the response to cache, and takes three arguments: the session, the data task, and the proposed cached URL response. - */ -- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block; - -/** - Sets a block to be executed once all messages enqueued for a session have been delivered, as handled by the `NSURLSessionDataDelegate` method `URLSessionDidFinishEventsForBackgroundURLSession:`. - - @param block A block object to be executed once all messages enqueued for a session have been delivered. The block has no return value and takes a single argument: the session. - */ -- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block; - -///----------------------------------------------- -/// @name Setting Download Task Delegate Callbacks -///----------------------------------------------- - -/** - Sets a block to be executed when a download task has completed a download, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didFinishDownloadingToURL:`. - - @param block A block object to be executed when a download task has completed. The block returns the URL the download should be moved to, and takes three arguments: the session, the download task, and the temporary location of the downloaded file. If the file manager encounters an error while attempting to move the temporary file to the destination, an `AFURLSessionDownloadTaskDidFailToMoveFileNotification` will be posted, with the download task as its object, and the user info of the error. - */ -- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block; - -/** - Sets a block to be executed periodically to track download progress, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didWriteData:totalBytesWritten:totalBytesWritten:totalBytesExpectedToWrite:`. - - @param block A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes five arguments: the session, the download task, the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the session manager operation queue. - */ -- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block; - -/** - Sets a block to be executed when a download task has been resumed, as handled by the `NSURLSessionDownloadDelegate` method `URLSession:downloadTask:didResumeAtOffset:expectedTotalBytes:`. - - @param block A block object to be executed when a download task has been resumed. The block has no return value and takes four arguments: the session, the download task, the file offset of the resumed download, and the total number of bytes expected to be downloaded. - */ -- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block; - -@end - -#endif - -///-------------------- -/// @name Notifications -///-------------------- - -/** - Posted when a task begins executing. - - @deprecated Use `AFNetworkingTaskDidResumeNotification` instead. - */ -extern NSString * const AFNetworkingTaskDidStartNotification DEPRECATED_ATTRIBUTE; - -/** - Posted when a task resumes. - */ -extern NSString * const AFNetworkingTaskDidResumeNotification; - -/** - Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. - - @deprecated Use `AFNetworkingTaskDidCompleteNotification` instead. - */ -extern NSString * const AFNetworkingTaskDidFinishNotification DEPRECATED_ATTRIBUTE; - -/** - Posted when a task finishes executing. Includes a userInfo dictionary with additional information about the task. - */ -extern NSString * const AFNetworkingTaskDidCompleteNotification; - -/** - Posted when a task suspends its execution. - */ -extern NSString * const AFNetworkingTaskDidSuspendNotification; - -/** - Posted when a session is invalidated. - */ -extern NSString * const AFURLSessionDidInvalidateNotification; - -/** - Posted when a session download task encountered an error when moving the temporary download file to a specified destination. - */ -extern NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification; - -/** - The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. - - @deprecated Use `AFNetworkingTaskDidCompleteResponseDataKey` instead. - */ -extern NSString * const AFNetworkingTaskDidFinishResponseDataKey DEPRECATED_ATTRIBUTE; - -/** - The raw response data of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if response data exists for the task. - */ -extern NSString * const AFNetworkingTaskDidCompleteResponseDataKey; - -/** - The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. - - @deprecated Use `AFNetworkingTaskDidCompleteSerializedResponseKey` instead. - */ -extern NSString * const AFNetworkingTaskDidFinishSerializedResponseKey DEPRECATED_ATTRIBUTE; - -/** - The serialized response object of the task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the response was serialized. - */ -extern NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey; - -/** - The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. - - @deprecated Use `AFNetworkingTaskDidCompleteResponseSerializerKey` instead. - */ -extern NSString * const AFNetworkingTaskDidFinishResponseSerializerKey DEPRECATED_ATTRIBUTE; - -/** - The response serializer used to serialize the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if the task has an associated response serializer. - */ -extern NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey; - -/** - The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. - - @deprecated Use `AFNetworkingTaskDidCompleteAssetPathKey` instead. - */ -extern NSString * const AFNetworkingTaskDidFinishAssetPathKey DEPRECATED_ATTRIBUTE; - -/** - The file path associated with the download task. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an the response data has been stored directly to disk. - */ -extern NSString * const AFNetworkingTaskDidCompleteAssetPathKey; - -/** - Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. - - @deprecated Use `AFNetworkingTaskDidCompleteErrorKey` instead. - */ -extern NSString * const AFNetworkingTaskDidFinishErrorKey DEPRECATED_ATTRIBUTE; - -/** - Any error associated with the task, or the serialization of the response. Included in the userInfo dictionary of the `AFNetworkingTaskDidFinishNotification` if an error exists. - */ -extern NSString * const AFNetworkingTaskDidCompleteErrorKey; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m deleted file mode 100644 index 99eadfbee6d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/AFNetworking/AFURLSessionManager.m +++ /dev/null @@ -1,1156 +0,0 @@ -// AFURLSessionManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFURLSessionManager.h" -#import - -#if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) - -static dispatch_queue_t url_session_manager_creation_queue() { - static dispatch_queue_t af_url_session_manager_creation_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_url_session_manager_creation_queue = dispatch_queue_create("com.alamofire.networking.session.manager.creation", DISPATCH_QUEUE_SERIAL); - }); - - return af_url_session_manager_creation_queue; -} - -static dispatch_queue_t url_session_manager_processing_queue() { - static dispatch_queue_t af_url_session_manager_processing_queue; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_url_session_manager_processing_queue = dispatch_queue_create("com.alamofire.networking.session.manager.processing", DISPATCH_QUEUE_CONCURRENT); - }); - - return af_url_session_manager_processing_queue; -} - -static dispatch_group_t url_session_manager_completion_group() { - static dispatch_group_t af_url_session_manager_completion_group; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - af_url_session_manager_completion_group = dispatch_group_create(); - }); - - return af_url_session_manager_completion_group; -} - -NSString * const AFNetworkingTaskDidResumeNotification = @"com.alamofire.networking.task.resume"; -NSString * const AFNetworkingTaskDidCompleteNotification = @"com.alamofire.networking.task.complete"; -NSString * const AFNetworkingTaskDidSuspendNotification = @"com.alamofire.networking.task.suspend"; -NSString * const AFURLSessionDidInvalidateNotification = @"com.alamofire.networking.session.invalidate"; -NSString * const AFURLSessionDownloadTaskDidFailToMoveFileNotification = @"com.alamofire.networking.session.download.file-manager-error"; - -NSString * const AFNetworkingTaskDidStartNotification = @"com.alamofire.networking.task.resume"; // Deprecated -NSString * const AFNetworkingTaskDidFinishNotification = @"com.alamofire.networking.task.complete"; // Deprecated - -NSString * const AFNetworkingTaskDidCompleteSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; -NSString * const AFNetworkingTaskDidCompleteResponseSerializerKey = @"com.alamofire.networking.task.complete.responseserializer"; -NSString * const AFNetworkingTaskDidCompleteResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; -NSString * const AFNetworkingTaskDidCompleteErrorKey = @"com.alamofire.networking.task.complete.error"; -NSString * const AFNetworkingTaskDidCompleteAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; - -NSString * const AFNetworkingTaskDidFinishSerializedResponseKey = @"com.alamofire.networking.task.complete.serializedresponse"; // Deprecated -NSString * const AFNetworkingTaskDidFinishResponseSerializerKey = @"com.alamofire.networking.task.complete.responseserializer"; // Deprecated -NSString * const AFNetworkingTaskDidFinishResponseDataKey = @"com.alamofire.networking.complete.finish.responsedata"; // Deprecated -NSString * const AFNetworkingTaskDidFinishErrorKey = @"com.alamofire.networking.task.complete.error"; // Deprecated -NSString * const AFNetworkingTaskDidFinishAssetPathKey = @"com.alamofire.networking.task.complete.assetpath"; // Deprecated - -static NSString * const AFURLSessionManagerLockName = @"com.alamofire.networking.session.manager.lock"; - -static NSUInteger const AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask = 3; - -static void * AFTaskStateChangedContext = &AFTaskStateChangedContext; - -typedef void (^AFURLSessionDidBecomeInvalidBlock)(NSURLSession *session, NSError *error); -typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); - -typedef NSURLRequest * (^AFURLSessionTaskWillPerformHTTPRedirectionBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request); -typedef NSURLSessionAuthChallengeDisposition (^AFURLSessionTaskDidReceiveAuthenticationChallengeBlock)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential); -typedef void (^AFURLSessionDidFinishEventsForBackgroundURLSessionBlock)(NSURLSession *session); - -typedef NSInputStream * (^AFURLSessionTaskNeedNewBodyStreamBlock)(NSURLSession *session, NSURLSessionTask *task); -typedef void (^AFURLSessionTaskDidSendBodyDataBlock)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend); -typedef void (^AFURLSessionTaskDidCompleteBlock)(NSURLSession *session, NSURLSessionTask *task, NSError *error); - -typedef NSURLSessionResponseDisposition (^AFURLSessionDataTaskDidReceiveResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response); -typedef void (^AFURLSessionDataTaskDidBecomeDownloadTaskBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask); -typedef void (^AFURLSessionDataTaskDidReceiveDataBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data); -typedef NSCachedURLResponse * (^AFURLSessionDataTaskWillCacheResponseBlock)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse); - -typedef NSURL * (^AFURLSessionDownloadTaskDidFinishDownloadingBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location); -typedef void (^AFURLSessionDownloadTaskDidWriteDataBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite); -typedef void (^AFURLSessionDownloadTaskDidResumeBlock)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes); - -typedef void (^AFURLSessionTaskCompletionHandler)(NSURLResponse *response, id responseObject, NSError *error); - -#pragma mark - - -@interface AFURLSessionManagerTaskDelegate : NSObject -@property (nonatomic, weak) AFURLSessionManager *manager; -@property (nonatomic, strong) NSMutableData *mutableData; -@property (nonatomic, strong) NSProgress *progress; -@property (nonatomic, copy) NSURL *downloadFileURL; -@property (nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; -@property (nonatomic, copy) AFURLSessionTaskCompletionHandler completionHandler; -@end - -@implementation AFURLSessionManagerTaskDelegate - -- (instancetype)init { - self = [super init]; - if (!self) { - return nil; - } - - self.mutableData = [NSMutableData data]; - - self.progress = [NSProgress progressWithTotalUnitCount:0]; - - return self; -} - -#pragma mark - NSURLSessionTaskDelegate - -- (void)URLSession:(__unused NSURLSession *)session - task:(__unused NSURLSessionTask *)task - didSendBodyData:(__unused int64_t)bytesSent - totalBytesSent:(int64_t)totalBytesSent -totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend -{ - self.progress.totalUnitCount = totalBytesExpectedToSend; - self.progress.completedUnitCount = totalBytesSent; -} - -- (void)URLSession:(__unused NSURLSession *)session - task:(NSURLSessionTask *)task -didCompleteWithError:(NSError *)error -{ -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - __strong AFURLSessionManager *manager = self.manager; - - __block id responseObject = nil; - - __block NSMutableDictionary *userInfo = [NSMutableDictionary dictionary]; - userInfo[AFNetworkingTaskDidCompleteResponseSerializerKey] = manager.responseSerializer; - - if (self.downloadFileURL) { - userInfo[AFNetworkingTaskDidCompleteAssetPathKey] = self.downloadFileURL; - } else if (self.mutableData) { - userInfo[AFNetworkingTaskDidCompleteResponseDataKey] = [NSData dataWithData:self.mutableData]; - } - - if (error) { - userInfo[AFNetworkingTaskDidCompleteErrorKey] = error; - - dispatch_group_async(manager.completionGroup ?: url_session_manager_completion_group(), manager.completionQueue ?: dispatch_get_main_queue(), ^{ - if (self.completionHandler) { - self.completionHandler(task.response, responseObject, error); - } - - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo]; - }); - }); - } else { - dispatch_async(url_session_manager_processing_queue(), ^{ - NSError *serializationError = nil; - responseObject = [manager.responseSerializer responseObjectForResponse:task.response data:[NSData dataWithData:self.mutableData] error:&serializationError]; - - if (self.downloadFileURL) { - responseObject = self.downloadFileURL; - } - - if (responseObject) { - userInfo[AFNetworkingTaskDidCompleteSerializedResponseKey] = responseObject; - } - - if (serializationError) { - userInfo[AFNetworkingTaskDidCompleteErrorKey] = serializationError; - } - - dispatch_group_async(manager.completionGroup ?: url_session_manager_completion_group(), manager.completionQueue ?: dispatch_get_main_queue(), ^{ - if (self.completionHandler) { - self.completionHandler(task.response, responseObject, serializationError); - } - - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidCompleteNotification object:task userInfo:userInfo]; - }); - }); - }); - } -#pragma clang diagnostic pop -} - -#pragma mark - NSURLSessionDataTaskDelegate - -- (void)URLSession:(__unused NSURLSession *)session - dataTask:(__unused NSURLSessionDataTask *)dataTask - didReceiveData:(NSData *)data -{ - [self.mutableData appendData:data]; -} - -#pragma mark - NSURLSessionDownloadTaskDelegate - -- (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask -didFinishDownloadingToURL:(NSURL *)location -{ - NSError *fileManagerError = nil; - self.downloadFileURL = nil; - - if (self.downloadTaskDidFinishDownloading) { - self.downloadFileURL = self.downloadTaskDidFinishDownloading(session, downloadTask, location); - if (self.downloadFileURL) { - [[NSFileManager defaultManager] moveItemAtURL:location toURL:self.downloadFileURL error:&fileManagerError]; - - if (fileManagerError) { - [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:fileManagerError.userInfo]; - } - } - } -} - -- (void)URLSession:(__unused NSURLSession *)session - downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask - didWriteData:(__unused int64_t)bytesWritten - totalBytesWritten:(int64_t)totalBytesWritten -totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite -{ - self.progress.totalUnitCount = totalBytesExpectedToWrite; - self.progress.completedUnitCount = totalBytesWritten; -} - -- (void)URLSession:(__unused NSURLSession *)session - downloadTask:(__unused NSURLSessionDownloadTask *)downloadTask - didResumeAtOffset:(int64_t)fileOffset -expectedTotalBytes:(int64_t)expectedTotalBytes { - self.progress.totalUnitCount = expectedTotalBytes; - self.progress.completedUnitCount = fileOffset; -} - -@end - -#pragma mark - - -/** - * A workaround for issues related to key-value observing the `state` of an `NSURLSessionTask`. - * - * See: - * - https://github.com/AFNetworking/AFNetworking/issues/1477 - * - https://github.com/AFNetworking/AFNetworking/issues/2638 - * - https://github.com/AFNetworking/AFNetworking/pull/2702 - */ - -static inline void af_swizzleSelector(Class class, SEL originalSelector, SEL swizzledSelector) { - Method originalMethod = class_getInstanceMethod(class, originalSelector); - Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector); - method_exchangeImplementations(originalMethod, swizzledMethod); -} - -static inline BOOL af_addMethod(Class class, SEL selector, Method method) { - return class_addMethod(class, selector, method_getImplementation(method), method_getTypeEncoding(method)); -} - -static NSString * const AFNSURLSessionTaskDidResumeNotification = @"com.alamofire.networking.nsurlsessiontask.resume"; -static NSString * const AFNSURLSessionTaskDidSuspendNotification = @"com.alamofire.networking.nsurlsessiontask.suspend"; - -@interface _AFURLSessionTaskSwizzling : NSObject - -@end - -@implementation _AFURLSessionTaskSwizzling - -+ (void)load { - /** - WARNING: Trouble Ahead - https://github.com/AFNetworking/AFNetworking/pull/2702 - */ - - if (NSClassFromString(@"NSURLSessionTask")) { - /** - iOS 7 and iOS 8 differ in NSURLSessionTask implementation, which makes the next bit of code a bit tricky. - Many Unit Tests have been built to validate as much of this behavior has possible. - Here is what we know: - - NSURLSessionTasks are implemented with class clusters, meaning the class you request from the API isn't actually the type of class you will get back. - - Simply referencing `[NSURLSessionTask class]` will not work. You need to ask an `NSURLSession` to actually create an object, and grab the class from there. - - On iOS 7, `localDataTask` is a `__NSCFLocalDataTask`, which inherits from `__NSCFLocalSessionTask`, which inherits from `__NSCFURLSessionTask`. - - On iOS 8, `localDataTask` is a `__NSCFLocalDataTask`, which inherits from `__NSCFLocalSessionTask`, which inherits from `NSURLSessionTask`. - - On iOS 7, `__NSCFLocalSessionTask` and `__NSCFURLSessionTask` are the only two classes that have their own implementations of `resume` and `suspend`, and `__NSCFLocalSessionTask` DOES NOT CALL SUPER. This means both classes need to be swizzled. - - On iOS 8, `NSURLSessionTask` is the only class that implements `resume` and `suspend`. This means this is the only class that needs to be swizzled. - - Because `NSURLSessionTask` is not involved in the class hierarchy for every version of iOS, its easier to add the swizzled methods to a dummy class and manage them there. - - Some Assumptions: - - No implementations of `resume` or `suspend` call super. If this were to change in a future version of iOS, we'd need to handle it. - - No background task classes override `resume` or `suspend` - - The current solution: - 1) Grab an instance of `__NSCFLocalDataTask` by asking an instance of `NSURLSession` for a data task. - 2) Grab a pointer to the original implementation of `af_resume` - 3) Check to see if the current class has an implementation of resume. If so, continue to step 4. - 4) Grab the super class of the current class. - 5) Grab a pointer for the current class to the current implementation of `resume`. - 6) Grab a pointer for the super class to the current implementation of `resume`. - 7) If the current class implementation of `resume` is not equal to the super class implementation of `resume` AND the current implementation of `resume` is not equal to the original implementation of `af_resume`, THEN swizzle the methods - 8) Set the current class to the super class, and repeat steps 3-8 - */ - NSURLSessionDataTask *localDataTask = [[NSURLSession sessionWithConfiguration:nil] dataTaskWithURL:nil]; - IMP originalAFResumeIMP = method_getImplementation(class_getInstanceMethod([_AFURLSessionTaskSwizzling class], @selector(af_resume))); - Class currentClass = [localDataTask class]; - - while (class_getInstanceMethod(currentClass, @selector(resume))) { - Class superClass = [currentClass superclass]; - IMP classResumeIMP = method_getImplementation(class_getInstanceMethod(currentClass, @selector(resume))); - IMP superclassResumeIMP = method_getImplementation(class_getInstanceMethod(superClass, @selector(resume))); - if (classResumeIMP != superclassResumeIMP && - originalAFResumeIMP != classResumeIMP) { - [self swizzleResumeAndSuspendMethodForClass:currentClass]; - } - currentClass = [currentClass superclass]; - } - - [localDataTask cancel]; - } -} - -+ (void)swizzleResumeAndSuspendMethodForClass:(Class)class { - Method afResumeMethod = class_getInstanceMethod(self, @selector(af_resume)); - Method afSuspendMethod = class_getInstanceMethod(self, @selector(af_suspend)); - - af_addMethod(class, @selector(af_resume), afResumeMethod); - af_addMethod(class, @selector(af_suspend), afSuspendMethod); - - af_swizzleSelector(class, @selector(resume), @selector(af_resume)); - af_swizzleSelector(class, @selector(suspend), @selector(af_suspend)); -} - -- (NSURLSessionTaskState)state { - NSAssert(NO, @"State method should never be called in the actual dummy class"); - return NSURLSessionTaskStateCanceling; -} - -- (void)af_resume { - NSAssert([self respondsToSelector:@selector(state)], @"Does not respond to state"); - NSURLSessionTaskState state = [self state]; - [self af_resume]; - - if (state != NSURLSessionTaskStateRunning) { - [[NSNotificationCenter defaultCenter] postNotificationName:AFNSURLSessionTaskDidResumeNotification object:self]; - } -} - -- (void)af_suspend { - NSAssert([self respondsToSelector:@selector(state)], @"Does not respond to state"); - NSURLSessionTaskState state = [self state]; - [self af_suspend]; - - if (state != NSURLSessionTaskStateSuspended) { - [[NSNotificationCenter defaultCenter] postNotificationName:AFNSURLSessionTaskDidSuspendNotification object:self]; - } -} -@end - -#pragma mark - - -@interface AFURLSessionManager () -@property (readwrite, nonatomic, strong) NSURLSessionConfiguration *sessionConfiguration; -@property (readwrite, nonatomic, strong) NSOperationQueue *operationQueue; -@property (readwrite, nonatomic, strong) NSURLSession *session; -@property (readwrite, nonatomic, strong) NSMutableDictionary *mutableTaskDelegatesKeyedByTaskIdentifier; -@property (readonly, nonatomic, copy) NSString *taskDescriptionForSessionTasks; -@property (readwrite, nonatomic, strong) NSLock *lock; -@property (readwrite, nonatomic, copy) AFURLSessionDidBecomeInvalidBlock sessionDidBecomeInvalid; -@property (readwrite, nonatomic, copy) AFURLSessionDidReceiveAuthenticationChallengeBlock sessionDidReceiveAuthenticationChallenge; -@property (readwrite, nonatomic, copy) AFURLSessionDidFinishEventsForBackgroundURLSessionBlock didFinishEventsForBackgroundURLSession; -@property (readwrite, nonatomic, copy) AFURLSessionTaskWillPerformHTTPRedirectionBlock taskWillPerformHTTPRedirection; -@property (readwrite, nonatomic, copy) AFURLSessionTaskDidReceiveAuthenticationChallengeBlock taskDidReceiveAuthenticationChallenge; -@property (readwrite, nonatomic, copy) AFURLSessionTaskNeedNewBodyStreamBlock taskNeedNewBodyStream; -@property (readwrite, nonatomic, copy) AFURLSessionTaskDidSendBodyDataBlock taskDidSendBodyData; -@property (readwrite, nonatomic, copy) AFURLSessionTaskDidCompleteBlock taskDidComplete; -@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveResponseBlock dataTaskDidReceiveResponse; -@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidBecomeDownloadTaskBlock dataTaskDidBecomeDownloadTask; -@property (readwrite, nonatomic, copy) AFURLSessionDataTaskDidReceiveDataBlock dataTaskDidReceiveData; -@property (readwrite, nonatomic, copy) AFURLSessionDataTaskWillCacheResponseBlock dataTaskWillCacheResponse; -@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidFinishDownloadingBlock downloadTaskDidFinishDownloading; -@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidWriteDataBlock downloadTaskDidWriteData; -@property (readwrite, nonatomic, copy) AFURLSessionDownloadTaskDidResumeBlock downloadTaskDidResume; -@end - -@implementation AFURLSessionManager - -- (instancetype)init { - return [self initWithSessionConfiguration:nil]; -} - -- (instancetype)initWithSessionConfiguration:(NSURLSessionConfiguration *)configuration { - self = [super init]; - if (!self) { - return nil; - } - - if (!configuration) { - configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; - } - - self.sessionConfiguration = configuration; - - self.operationQueue = [[NSOperationQueue alloc] init]; - self.operationQueue.maxConcurrentOperationCount = 1; - - self.session = [NSURLSession sessionWithConfiguration:self.sessionConfiguration delegate:self delegateQueue:self.operationQueue]; - - self.responseSerializer = [AFJSONResponseSerializer serializer]; - - self.securityPolicy = [AFSecurityPolicy defaultPolicy]; - - self.reachabilityManager = [AFNetworkReachabilityManager sharedManager]; - - self.mutableTaskDelegatesKeyedByTaskIdentifier = [[NSMutableDictionary alloc] init]; - - self.lock = [[NSLock alloc] init]; - self.lock.name = AFURLSessionManagerLockName; - - [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { - for (NSURLSessionDataTask *task in dataTasks) { - [self addDelegateForDataTask:task completionHandler:nil]; - } - - for (NSURLSessionUploadTask *uploadTask in uploadTasks) { - [self addDelegateForUploadTask:uploadTask progress:nil completionHandler:nil]; - } - - for (NSURLSessionDownloadTask *downloadTask in downloadTasks) { - [self addDelegateForDownloadTask:downloadTask progress:nil destination:nil completionHandler:nil]; - } - }]; - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidResume:) name:AFNSURLSessionTaskDidResumeNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(taskDidSuspend:) name:AFNSURLSessionTaskDidSuspendNotification object:nil]; - - return self; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; -} - -#pragma mark - - -- (NSString *)taskDescriptionForSessionTasks { - return [NSString stringWithFormat:@"%p", self]; -} - -- (void)taskDidResume:(NSNotification *)notification { - NSURLSessionTask *task = notification.object; - if ([task respondsToSelector:@selector(taskDescription)]) { - if ([task.taskDescription isEqualToString:self.taskDescriptionForSessionTasks]) { - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidResumeNotification object:task]; - }); - } - } -} - -- (void)taskDidSuspend:(NSNotification *)notification { - NSURLSessionTask *task = notification.object; - if ([task respondsToSelector:@selector(taskDescription)]) { - if ([task.taskDescription isEqualToString:self.taskDescriptionForSessionTasks]) { - dispatch_async(dispatch_get_main_queue(), ^{ - [[NSNotificationCenter defaultCenter] postNotificationName:AFNetworkingTaskDidSuspendNotification object:task]; - }); - } - } -} - -#pragma mark - - -- (AFURLSessionManagerTaskDelegate *)delegateForTask:(NSURLSessionTask *)task { - NSParameterAssert(task); - - AFURLSessionManagerTaskDelegate *delegate = nil; - [self.lock lock]; - delegate = self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)]; - [self.lock unlock]; - - return delegate; -} - -- (void)setDelegate:(AFURLSessionManagerTaskDelegate *)delegate - forTask:(NSURLSessionTask *)task -{ - NSParameterAssert(task); - NSParameterAssert(delegate); - - [self.lock lock]; - self.mutableTaskDelegatesKeyedByTaskIdentifier[@(task.taskIdentifier)] = delegate; - [self.lock unlock]; -} - -- (void)addDelegateForDataTask:(NSURLSessionDataTask *)dataTask - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; - delegate.manager = self; - delegate.completionHandler = completionHandler; - - dataTask.taskDescription = self.taskDescriptionForSessionTasks; - [self setDelegate:delegate forTask:dataTask]; -} - -- (void)addDelegateForUploadTask:(NSURLSessionUploadTask *)uploadTask - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; - delegate.manager = self; - delegate.completionHandler = completionHandler; - - int64_t totalUnitCount = uploadTask.countOfBytesExpectedToSend; - if(totalUnitCount == NSURLSessionTransferSizeUnknown) { - NSString *contentLength = [uploadTask.originalRequest valueForHTTPHeaderField:@"Content-Length"]; - if(contentLength) { - totalUnitCount = (int64_t)[contentLength longLongValue]; - } - } - - if (delegate.progress) { - delegate.progress.totalUnitCount = totalUnitCount; - } else { - delegate.progress = [NSProgress progressWithTotalUnitCount:totalUnitCount]; - } - - delegate.progress.pausingHandler = ^{ - [uploadTask suspend]; - }; - delegate.progress.cancellationHandler = ^{ - [uploadTask cancel]; - }; - - if (progress) { - *progress = delegate.progress; - } - - uploadTask.taskDescription = self.taskDescriptionForSessionTasks; - - [self setDelegate:delegate forTask:uploadTask]; -} - -- (void)addDelegateForDownloadTask:(NSURLSessionDownloadTask *)downloadTask - progress:(NSProgress * __autoreleasing *)progress - destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination - completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler -{ - AFURLSessionManagerTaskDelegate *delegate = [[AFURLSessionManagerTaskDelegate alloc] init]; - delegate.manager = self; - delegate.completionHandler = completionHandler; - - if (destination) { - delegate.downloadTaskDidFinishDownloading = ^NSURL * (NSURLSession * __unused session, NSURLSessionDownloadTask *task, NSURL *location) { - return destination(location, task.response); - }; - } - - if (progress) { - *progress = delegate.progress; - } - - downloadTask.taskDescription = self.taskDescriptionForSessionTasks; - - [self setDelegate:delegate forTask:downloadTask]; -} - -- (void)removeDelegateForTask:(NSURLSessionTask *)task { - NSParameterAssert(task); - - [self.lock lock]; - [self.mutableTaskDelegatesKeyedByTaskIdentifier removeObjectForKey:@(task.taskIdentifier)]; - [self.lock unlock]; -} - -- (void)removeAllDelegates { - [self.lock lock]; - [self.mutableTaskDelegatesKeyedByTaskIdentifier removeAllObjects]; - [self.lock unlock]; -} - -#pragma mark - - -- (NSArray *)tasksForKeyPath:(NSString *)keyPath { - __block NSArray *tasks = nil; - dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); - [self.session getTasksWithCompletionHandler:^(NSArray *dataTasks, NSArray *uploadTasks, NSArray *downloadTasks) { - if ([keyPath isEqualToString:NSStringFromSelector(@selector(dataTasks))]) { - tasks = dataTasks; - } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(uploadTasks))]) { - tasks = uploadTasks; - } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(downloadTasks))]) { - tasks = downloadTasks; - } else if ([keyPath isEqualToString:NSStringFromSelector(@selector(tasks))]) { - tasks = [@[dataTasks, uploadTasks, downloadTasks] valueForKeyPath:@"@unionOfArrays.self"]; - } - - dispatch_semaphore_signal(semaphore); - }]; - - dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); - - return tasks; -} - -- (NSArray *)tasks { - return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; -} - -- (NSArray *)dataTasks { - return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; -} - -- (NSArray *)uploadTasks { - return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; -} - -- (NSArray *)downloadTasks { - return [self tasksForKeyPath:NSStringFromSelector(_cmd)]; -} - -#pragma mark - - -- (void)invalidateSessionCancelingTasks:(BOOL)cancelPendingTasks { - dispatch_async(dispatch_get_main_queue(), ^{ - if (cancelPendingTasks) { - [self.session invalidateAndCancel]; - } else { - [self.session finishTasksAndInvalidate]; - } - }); -} - -#pragma mark - - -- (void)setResponseSerializer:(id )responseSerializer { - NSParameterAssert(responseSerializer); - - _responseSerializer = responseSerializer; -} - -#pragma mark - - -- (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - __block NSURLSessionDataTask *dataTask = nil; - dispatch_sync(url_session_manager_creation_queue(), ^{ - dataTask = [self.session dataTaskWithRequest:request]; - }); - - [self addDelegateForDataTask:dataTask completionHandler:completionHandler]; - - return dataTask; -} - -#pragma mark - - -- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request - fromFile:(NSURL *)fileURL - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - __block NSURLSessionUploadTask *uploadTask = nil; - dispatch_sync(url_session_manager_creation_queue(), ^{ - uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; - }); - - if (!uploadTask && self.attemptsToRecreateUploadTasksForBackgroundSessions && self.session.configuration.identifier) { - for (NSUInteger attempts = 0; !uploadTask && attempts < AFMaximumNumberOfAttemptsToRecreateBackgroundSessionUploadTask; attempts++) { - uploadTask = [self.session uploadTaskWithRequest:request fromFile:fileURL]; - } - } - - [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; - - return uploadTask; -} - -- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request - fromData:(NSData *)bodyData - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - __block NSURLSessionUploadTask *uploadTask = nil; - dispatch_sync(url_session_manager_creation_queue(), ^{ - uploadTask = [self.session uploadTaskWithRequest:request fromData:bodyData]; - }); - - [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; - - return uploadTask; -} - -- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request - progress:(NSProgress * __autoreleasing *)progress - completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler -{ - __block NSURLSessionUploadTask *uploadTask = nil; - dispatch_sync(url_session_manager_creation_queue(), ^{ - uploadTask = [self.session uploadTaskWithStreamedRequest:request]; - }); - - [self addDelegateForUploadTask:uploadTask progress:progress completionHandler:completionHandler]; - - return uploadTask; -} - -#pragma mark - - -- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request - progress:(NSProgress * __autoreleasing *)progress - destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination - completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler -{ - __block NSURLSessionDownloadTask *downloadTask = nil; - dispatch_sync(url_session_manager_creation_queue(), ^{ - downloadTask = [self.session downloadTaskWithRequest:request]; - }); - - [self addDelegateForDownloadTask:downloadTask progress:progress destination:destination completionHandler:completionHandler]; - - return downloadTask; -} - -- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData - progress:(NSProgress * __autoreleasing *)progress - destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination - completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler -{ - __block NSURLSessionDownloadTask *downloadTask = nil; - dispatch_sync(url_session_manager_creation_queue(), ^{ - downloadTask = [self.session downloadTaskWithResumeData:resumeData]; - }); - - [self addDelegateForDownloadTask:downloadTask progress:progress destination:destination completionHandler:completionHandler]; - - return downloadTask; -} - -#pragma mark - - -- (NSProgress *)uploadProgressForTask:(NSURLSessionUploadTask *)uploadTask { - return [[self delegateForTask:uploadTask] progress]; -} - -- (NSProgress *)downloadProgressForTask:(NSURLSessionDownloadTask *)downloadTask { - return [[self delegateForTask:downloadTask] progress]; -} - -#pragma mark - - -- (void)setSessionDidBecomeInvalidBlock:(void (^)(NSURLSession *session, NSError *error))block { - self.sessionDidBecomeInvalid = block; -} - -- (void)setSessionDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { - self.sessionDidReceiveAuthenticationChallenge = block; -} - -- (void)setDidFinishEventsForBackgroundURLSessionBlock:(void (^)(NSURLSession *session))block { - self.didFinishEventsForBackgroundURLSession = block; -} - -#pragma mark - - -- (void)setTaskNeedNewBodyStreamBlock:(NSInputStream * (^)(NSURLSession *session, NSURLSessionTask *task))block { - self.taskNeedNewBodyStream = block; -} - -- (void)setTaskWillPerformHTTPRedirectionBlock:(NSURLRequest * (^)(NSURLSession *session, NSURLSessionTask *task, NSURLResponse *response, NSURLRequest *request))block { - self.taskWillPerformHTTPRedirection = block; -} - -- (void)setTaskDidReceiveAuthenticationChallengeBlock:(NSURLSessionAuthChallengeDisposition (^)(NSURLSession *session, NSURLSessionTask *task, NSURLAuthenticationChallenge *challenge, NSURLCredential * __autoreleasing *credential))block { - self.taskDidReceiveAuthenticationChallenge = block; -} - -- (void)setTaskDidSendBodyDataBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, int64_t bytesSent, int64_t totalBytesSent, int64_t totalBytesExpectedToSend))block { - self.taskDidSendBodyData = block; -} - -- (void)setTaskDidCompleteBlock:(void (^)(NSURLSession *session, NSURLSessionTask *task, NSError *error))block { - self.taskDidComplete = block; -} - -#pragma mark - - -- (void)setDataTaskDidReceiveResponseBlock:(NSURLSessionResponseDisposition (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLResponse *response))block { - self.dataTaskDidReceiveResponse = block; -} - -- (void)setDataTaskDidBecomeDownloadTaskBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSURLSessionDownloadTask *downloadTask))block { - self.dataTaskDidBecomeDownloadTask = block; -} - -- (void)setDataTaskDidReceiveDataBlock:(void (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSData *data))block { - self.dataTaskDidReceiveData = block; -} - -- (void)setDataTaskWillCacheResponseBlock:(NSCachedURLResponse * (^)(NSURLSession *session, NSURLSessionDataTask *dataTask, NSCachedURLResponse *proposedResponse))block { - self.dataTaskWillCacheResponse = block; -} - -#pragma mark - - -- (void)setDownloadTaskDidFinishDownloadingBlock:(NSURL * (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, NSURL *location))block { - self.downloadTaskDidFinishDownloading = block; -} - -- (void)setDownloadTaskDidWriteDataBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t bytesWritten, int64_t totalBytesWritten, int64_t totalBytesExpectedToWrite))block { - self.downloadTaskDidWriteData = block; -} - -- (void)setDownloadTaskDidResumeBlock:(void (^)(NSURLSession *session, NSURLSessionDownloadTask *downloadTask, int64_t fileOffset, int64_t expectedTotalBytes))block { - self.downloadTaskDidResume = block; -} - -#pragma mark - NSObject - -- (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p, session: %@, operationQueue: %@>", NSStringFromClass([self class]), self, self.session, self.operationQueue]; -} - -- (BOOL)respondsToSelector:(SEL)selector { - if (selector == @selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)) { - return self.taskWillPerformHTTPRedirection != nil; - } else if (selector == @selector(URLSession:dataTask:didReceiveResponse:completionHandler:)) { - return self.dataTaskDidReceiveResponse != nil; - } else if (selector == @selector(URLSession:dataTask:willCacheResponse:completionHandler:)) { - return self.dataTaskWillCacheResponse != nil; - } else if (selector == @selector(URLSessionDidFinishEventsForBackgroundURLSession:)) { - return self.didFinishEventsForBackgroundURLSession != nil; - } - - return [[self class] instancesRespondToSelector:selector]; -} - -#pragma mark - NSURLSessionDelegate - -- (void)URLSession:(NSURLSession *)session -didBecomeInvalidWithError:(NSError *)error -{ - if (self.sessionDidBecomeInvalid) { - self.sessionDidBecomeInvalid(session, error); - } - - [self removeAllDelegates]; - [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDidInvalidateNotification object:session]; -} - -- (void)URLSession:(NSURLSession *)session -didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge - completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler -{ - NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; - __block NSURLCredential *credential = nil; - - if (self.sessionDidReceiveAuthenticationChallenge) { - disposition = self.sessionDidReceiveAuthenticationChallenge(session, challenge, &credential); - } else { - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { - credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - if (credential) { - disposition = NSURLSessionAuthChallengeUseCredential; - } else { - disposition = NSURLSessionAuthChallengePerformDefaultHandling; - } - } else { - disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; - } - } else { - disposition = NSURLSessionAuthChallengePerformDefaultHandling; - } - } - - if (completionHandler) { - completionHandler(disposition, credential); - } -} - -#pragma mark - NSURLSessionTaskDelegate - -- (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -willPerformHTTPRedirection:(NSHTTPURLResponse *)response - newRequest:(NSURLRequest *)request - completionHandler:(void (^)(NSURLRequest *))completionHandler -{ - NSURLRequest *redirectRequest = request; - - if (self.taskWillPerformHTTPRedirection) { - redirectRequest = self.taskWillPerformHTTPRedirection(session, task, response, request); - } - - if (completionHandler) { - completionHandler(redirectRequest); - } -} - -- (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge - completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, NSURLCredential *credential))completionHandler -{ - NSURLSessionAuthChallengeDisposition disposition = NSURLSessionAuthChallengePerformDefaultHandling; - __block NSURLCredential *credential = nil; - - if (self.taskDidReceiveAuthenticationChallenge) { - disposition = self.taskDidReceiveAuthenticationChallenge(session, task, challenge, &credential); - } else { - if ([challenge.protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]) { - if ([self.securityPolicy evaluateServerTrust:challenge.protectionSpace.serverTrust forDomain:challenge.protectionSpace.host]) { - disposition = NSURLSessionAuthChallengeUseCredential; - credential = [NSURLCredential credentialForTrust:challenge.protectionSpace.serverTrust]; - } else { - disposition = NSURLSessionAuthChallengeCancelAuthenticationChallenge; - } - } else { - disposition = NSURLSessionAuthChallengePerformDefaultHandling; - } - } - - if (completionHandler) { - completionHandler(disposition, credential); - } -} - -- (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task - needNewBodyStream:(void (^)(NSInputStream *bodyStream))completionHandler -{ - NSInputStream *inputStream = nil; - - if (self.taskNeedNewBodyStream) { - inputStream = self.taskNeedNewBodyStream(session, task); - } else if (task.originalRequest.HTTPBodyStream && [task.originalRequest.HTTPBodyStream conformsToProtocol:@protocol(NSCopying)]) { - inputStream = [task.originalRequest.HTTPBodyStream copy]; - } - - if (completionHandler) { - completionHandler(inputStream); - } -} - -- (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task - didSendBodyData:(int64_t)bytesSent - totalBytesSent:(int64_t)totalBytesSent -totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend -{ - - int64_t totalUnitCount = totalBytesExpectedToSend; - if(totalUnitCount == NSURLSessionTransferSizeUnknown) { - NSString *contentLength = [task.originalRequest valueForHTTPHeaderField:@"Content-Length"]; - if(contentLength) { - totalUnitCount = (int64_t) [contentLength longLongValue]; - } - } - - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; - [delegate URLSession:session task:task didSendBodyData:bytesSent totalBytesSent:totalBytesSent totalBytesExpectedToSend:totalUnitCount]; - - if (self.taskDidSendBodyData) { - self.taskDidSendBodyData(session, task, bytesSent, totalBytesSent, totalUnitCount); - } -} - -- (void)URLSession:(NSURLSession *)session - task:(NSURLSessionTask *)task -didCompleteWithError:(NSError *)error -{ - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:task]; - - // delegate may be nil when completing a task in the background - if (delegate) { - [delegate URLSession:session task:task didCompleteWithError:error]; - - [self removeDelegateForTask:task]; - } - - if (self.taskDidComplete) { - self.taskDidComplete(session, task, error); - } - -} - -#pragma mark - NSURLSessionDataDelegate - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask -didReceiveResponse:(NSURLResponse *)response - completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler -{ - NSURLSessionResponseDisposition disposition = NSURLSessionResponseAllow; - - if (self.dataTaskDidReceiveResponse) { - disposition = self.dataTaskDidReceiveResponse(session, dataTask, response); - } - - if (completionHandler) { - completionHandler(disposition); - } -} - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask -didBecomeDownloadTask:(NSURLSessionDownloadTask *)downloadTask -{ - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:dataTask]; - if (delegate) { - [self removeDelegateForTask:dataTask]; - [self setDelegate:delegate forTask:downloadTask]; - } - - if (self.dataTaskDidBecomeDownloadTask) { - self.dataTaskDidBecomeDownloadTask(session, dataTask, downloadTask); - } -} - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask - didReceiveData:(NSData *)data -{ - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:dataTask]; - [delegate URLSession:session dataTask:dataTask didReceiveData:data]; - - if (self.dataTaskDidReceiveData) { - self.dataTaskDidReceiveData(session, dataTask, data); - } -} - -- (void)URLSession:(NSURLSession *)session - dataTask:(NSURLSessionDataTask *)dataTask - willCacheResponse:(NSCachedURLResponse *)proposedResponse - completionHandler:(void (^)(NSCachedURLResponse *cachedResponse))completionHandler -{ - NSCachedURLResponse *cachedResponse = proposedResponse; - - if (self.dataTaskWillCacheResponse) { - cachedResponse = self.dataTaskWillCacheResponse(session, dataTask, proposedResponse); - } - - if (completionHandler) { - completionHandler(cachedResponse); - } -} - -- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session { - if (self.didFinishEventsForBackgroundURLSession) { - dispatch_async(dispatch_get_main_queue(), ^{ - self.didFinishEventsForBackgroundURLSession(session); - }); - } -} - -#pragma mark - NSURLSessionDownloadDelegate - -- (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask -didFinishDownloadingToURL:(NSURL *)location -{ - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; - if (self.downloadTaskDidFinishDownloading) { - NSURL *fileURL = self.downloadTaskDidFinishDownloading(session, downloadTask, location); - if (fileURL) { - delegate.downloadFileURL = fileURL; - NSError *error = nil; - [[NSFileManager defaultManager] moveItemAtURL:location toURL:fileURL error:&error]; - if (error) { - [[NSNotificationCenter defaultCenter] postNotificationName:AFURLSessionDownloadTaskDidFailToMoveFileNotification object:downloadTask userInfo:error.userInfo]; - } - - return; - } - } - - if (delegate) { - [delegate URLSession:session downloadTask:downloadTask didFinishDownloadingToURL:location]; - } -} - -- (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask - didWriteData:(int64_t)bytesWritten - totalBytesWritten:(int64_t)totalBytesWritten -totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite -{ - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; - [delegate URLSession:session downloadTask:downloadTask didWriteData:bytesWritten totalBytesWritten:totalBytesWritten totalBytesExpectedToWrite:totalBytesExpectedToWrite]; - - if (self.downloadTaskDidWriteData) { - self.downloadTaskDidWriteData(session, downloadTask, bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); - } -} - -- (void)URLSession:(NSURLSession *)session - downloadTask:(NSURLSessionDownloadTask *)downloadTask - didResumeAtOffset:(int64_t)fileOffset -expectedTotalBytes:(int64_t)expectedTotalBytes -{ - AFURLSessionManagerTaskDelegate *delegate = [self delegateForTask:downloadTask]; - [delegate URLSession:session downloadTask:downloadTask didResumeAtOffset:fileOffset expectedTotalBytes:expectedTotalBytes]; - - if (self.downloadTaskDidResume) { - self.downloadTaskDidResume(session, downloadTask, fileOffset, expectedTotalBytes); - } -} - -#pragma mark - NSSecureCoding - -+ (BOOL)supportsSecureCoding { - return YES; -} - -- (id)initWithCoder:(NSCoder *)decoder { - NSURLSessionConfiguration *configuration = [decoder decodeObjectOfClass:[NSURLSessionConfiguration class] forKey:@"sessionConfiguration"]; - - self = [self initWithSessionConfiguration:configuration]; - if (!self) { - return nil; - } - - return self; -} - -- (void)encodeWithCoder:(NSCoder *)coder { - [coder encodeObject:self.session.configuration forKey:@"sessionConfiguration"]; -} - -#pragma mark - NSCopying - -- (id)copyWithZone:(NSZone *)zone { - return [[[self class] allocWithZone:zone] initWithSessionConfiguration:self.session.configuration]; -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE deleted file mode 100644 index 91f125b005e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md deleted file mode 100644 index 916a242f9b2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/README.md +++ /dev/null @@ -1,385 +0,0 @@ -

    - AFNetworking -

    - -[![Build Status](https://travis-ci.org/AFNetworking/AFNetworking.svg)](https://travis-ci.org/AFNetworking/AFNetworking) - -AFNetworking is a delightful networking library for iOS and Mac OS X. It's built on top of the [Foundation URL Loading System](http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/URLLoadingSystem.html), extending the powerful high-level networking abstractions built into Cocoa. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. - -Perhaps the most important feature of all, however, is the amazing community of developers who use and contribute to AFNetworking every day. AFNetworking powers some of the most popular and critically-acclaimed apps on the iPhone, iPad, and Mac. - -Choose AFNetworking for your next project, or migrate over your existing projects—you'll be happy you did! - -## How To Get Started - -- [Download AFNetworking](https://github.com/AFNetworking/AFNetworking/archive/master.zip) and try out the included Mac and iPhone example apps -- Read the ["Getting Started" guide](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking), [FAQ](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-FAQ), or [other articles on the Wiki](https://github.com/AFNetworking/AFNetworking/wiki) -- Check out the [documentation](http://cocoadocs.org/docsets/AFNetworking/) for a comprehensive look at all of the APIs available in AFNetworking -- Read the [AFNetworking 2.0 Migration Guide](https://github.com/AFNetworking/AFNetworking/wiki/AFNetworking-2.0-Migration-Guide) for an overview of the architectural changes from 1.0. - -## Communication - -- If you **need help**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking). (Tag 'afnetworking') -- If you'd like to **ask a general question**, use [Stack Overflow](http://stackoverflow.com/questions/tagged/afnetworking). -- If you **found a bug**, _and can provide steps to reliably reproduce it_, open an issue. -- If you **have a feature request**, open an issue. -- If you **want to contribute**, submit a pull request. - -### Installation with CocoaPods - -[CocoaPods](http://cocoapods.org) is a dependency manager for Objective-C, which automates and simplifies the process of using 3rd-party libraries like AFNetworking in your projects. See the ["Getting Started" guide for more information](https://github.com/AFNetworking/AFNetworking/wiki/Getting-Started-with-AFNetworking). - -#### Podfile - -```ruby -platform :ios, '7.0' -pod "AFNetworking", "~> 2.0" -``` - -## Requirements - -| AFNetworking Version | Minimum iOS Target | Minimum OS X Target | Notes | -|:--------------------:|:---------------------------:|:----------------------------:|:-------------------------------------------------------------------------:| -| 2.x | iOS 6 | OS X 10.8 | Xcode 5 is required. `NSURLSession` subspec requires iOS 7 or OS X 10.9. | -| [1.x](https://github.com/AFNetworking/AFNetworking/tree/1.x) | iOS 5 | Mac OS X 10.7 | | -| [0.10.x](https://github.com/AFNetworking/AFNetworking/tree/0.10.x) | iOS 4 | Mac OS X 10.6 | | - -(OS X projects must support [64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)). - -> Programming in Swift? Try [Alamofire](https://github.com/Alamofire/Alamofire) for a more conventional set of APIs. - -## Architecture - -### NSURLConnection - -- `AFURLConnectionOperation` -- `AFHTTPRequestOperation` -- `AFHTTPRequestOperationManager` - -### NSURLSession _(iOS 7 / Mac OS X 10.9)_ - -- `AFURLSessionManager` -- `AFHTTPSessionManager` - -### Serialization - -* `` - - `AFHTTPRequestSerializer` - - `AFJSONRequestSerializer` - - `AFPropertyListRequestSerializer` -* `` - - `AFHTTPResponseSerializer` - - `AFJSONResponseSerializer` - - `AFXMLParserResponseSerializer` - - `AFXMLDocumentResponseSerializer` _(Mac OS X)_ - - `AFPropertyListResponseSerializer` - - `AFImageResponseSerializer` - - `AFCompoundResponseSerializer` - -### Additional Functionality - -- `AFSecurityPolicy` -- `AFNetworkReachabilityManager` - -## Usage - -### HTTP Request Operation Manager - -`AFHTTPRequestOperationManager` encapsulates the common patterns of communicating with a web application over HTTP, including request creation, response serialization, network reachability monitoring, and security, as well as request operation management. - -#### `GET` Request - -```objective-c -AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; -[manager GET:@"http://example.com/resources.json" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) { - NSLog(@"JSON: %@", responseObject); -} failure:^(AFHTTPRequestOperation *operation, NSError *error) { - NSLog(@"Error: %@", error); -}]; -``` - -#### `POST` URL-Form-Encoded Request - -```objective-c -AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; -NSDictionary *parameters = @{@"foo": @"bar"}; -[manager POST:@"http://example.com/resources.json" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) { - NSLog(@"JSON: %@", responseObject); -} failure:^(AFHTTPRequestOperation *operation, NSError *error) { - NSLog(@"Error: %@", error); -}]; -``` - -#### `POST` Multi-Part Request - -```objective-c -AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; -NSDictionary *parameters = @{@"foo": @"bar"}; -NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; -[manager POST:@"http://example.com/resources.json" parameters:parameters constructingBodyWithBlock:^(id formData) { - [formData appendPartWithFileURL:filePath name:@"image" error:nil]; -} success:^(AFHTTPRequestOperation *operation, id responseObject) { - NSLog(@"Success: %@", responseObject); -} failure:^(AFHTTPRequestOperation *operation, NSError *error) { - NSLog(@"Error: %@", error); -}]; -``` - ---- - -### AFURLSessionManager - -`AFURLSessionManager` creates and manages an `NSURLSession` object based on a specified `NSURLSessionConfiguration` object, which conforms to ``, ``, ``, and ``. - -#### Creating a Download Task - -```objective-c -NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; -AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; - -NSURL *URL = [NSURL URLWithString:@"http://example.com/download.zip"]; -NSURLRequest *request = [NSURLRequest requestWithURL:URL]; - -NSURLSessionDownloadTask *downloadTask = [manager downloadTaskWithRequest:request progress:nil destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) { - NSURL *documentsDirectoryURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil]; - return [documentsDirectoryURL URLByAppendingPathComponent:[response suggestedFilename]]; -} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) { - NSLog(@"File downloaded to: %@", filePath); -}]; -[downloadTask resume]; -``` - -#### Creating an Upload Task - -```objective-c -NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; -AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; - -NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; -NSURLRequest *request = [NSURLRequest requestWithURL:URL]; - -NSURL *filePath = [NSURL fileURLWithPath:@"file://path/to/image.png"]; -NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithRequest:request fromFile:filePath progress:nil completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { - if (error) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"Success: %@ %@", response, responseObject); - } -}]; -[uploadTask resume]; -``` - -#### Creating an Upload Task for a Multi-Part Request, with Progress - -```objective-c -NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id formData) { - [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"file://path/to/image.jpg"] name:@"file" fileName:@"filename.jpg" mimeType:@"image/jpeg" error:nil]; - } error:nil]; - -AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; -NSProgress *progress = nil; - -NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { - if (error) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"%@ %@", response, responseObject); - } -}]; - -[uploadTask resume]; -``` - -#### Creating a Data Task - -```objective-c -NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; -AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:configuration]; - -NSURL *URL = [NSURL URLWithString:@"http://example.com/upload"]; -NSURLRequest *request = [NSURLRequest requestWithURL:URL]; - -NSURLSessionDataTask *dataTask = [manager dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { - if (error) { - NSLog(@"Error: %@", error); - } else { - NSLog(@"%@ %@", response, responseObject); - } -}]; -[dataTask resume]; -``` - ---- - -### Request Serialization - -Request serializers create requests from URL strings, encoding parameters as either a query string or HTTP body. - -```objective-c -NSString *URLString = @"http://example.com"; -NSDictionary *parameters = @{@"foo": @"bar", @"baz": @[@1, @2, @3]}; -``` - -#### Query String Parameter Encoding - -```objective-c -[[AFHTTPRequestSerializer serializer] requestWithMethod:@"GET" URLString:URLString parameters:parameters error:nil]; -``` - - GET http://example.com?foo=bar&baz[]=1&baz[]=2&baz[]=3 - -#### URL Form Parameter Encoding - -```objective-c -[[AFHTTPRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; -``` - - POST http://example.com/ - Content-Type: application/x-www-form-urlencoded - - foo=bar&baz[]=1&baz[]=2&baz[]=3 - -#### JSON Parameter Encoding - -```objective-c -[[AFJSONRequestSerializer serializer] requestWithMethod:@"POST" URLString:URLString parameters:parameters]; -``` - - POST http://example.com/ - Content-Type: application/json - - {"foo": "bar", "baz": [1,2,3]} - ---- - -### Network Reachability Manager - -`AFNetworkReachabilityManager` monitors the reachability of domains, and addresses for both WWAN and WiFi network interfaces. - -**Network reachability is a diagnostic tool that can be used to understand why a request might have failed. It should not be used to determine whether or not to make a request.** - -#### Shared Network Reachability - -```objective-c -[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { - NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status)); -}]; -``` - -#### HTTP Manager Reachability - -```objective-c -NSURL *baseURL = [NSURL URLWithString:@"http://example.com/"]; -AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:baseURL]; - -NSOperationQueue *operationQueue = manager.operationQueue; -[manager.reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { - switch (status) { - case AFNetworkReachabilityStatusReachableViaWWAN: - case AFNetworkReachabilityStatusReachableViaWiFi: - [operationQueue setSuspended:NO]; - break; - case AFNetworkReachabilityStatusNotReachable: - default: - [operationQueue setSuspended:YES]; - break; - } -}]; - -[manager.reachabilityManager startMonitoring]; -``` - ---- - -### Security Policy - -`AFSecurityPolicy` evaluates server trust against pinned X.509 certificates and public keys over secure connections. - -Adding pinned SSL certificates to your app helps prevent man-in-the-middle attacks and other vulnerabilities. Applications dealing with sensitive customer data or financial information are strongly encouraged to route all communication over an HTTPS connection with SSL pinning configured and enabled. - -#### Allowing Invalid SSL Certificates - -```objective-c -AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; -manager.securityPolicy.allowInvalidCertificates = YES; // not recommended for production -``` - ---- - -### AFHTTPRequestOperation - -`AFHTTPRequestOperation` is a subclass of `AFURLConnectionOperation` for requests using the HTTP or HTTPS protocols. It encapsulates the concept of acceptable status codes and content types, which determine the success or failure of a request. - -Although `AFHTTPRequestOperationManager` is usually the best way to go about making requests, `AFHTTPRequestOperation` can be used by itself. - -#### `GET` with `AFHTTPRequestOperation` - -```objective-c -NSURL *URL = [NSURL URLWithString:@"http://example.com/resources/123.json"]; -NSURLRequest *request = [NSURLRequest requestWithURL:URL]; -AFHTTPRequestOperation *op = [[AFHTTPRequestOperation alloc] initWithRequest:request]; -op.responseSerializer = [AFJSONResponseSerializer serializer]; -[op setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - NSLog(@"JSON: %@", responseObject); -} failure:^(AFHTTPRequestOperation *operation, NSError *error) { - NSLog(@"Error: %@", error); -}]; -[[NSOperationQueue mainQueue] addOperation:op]; -``` - -#### Batch of Operations - -```objective-c -NSMutableArray *mutableOperations = [NSMutableArray array]; -for (NSURL *fileURL in filesToUpload) { - NSURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:@"http://example.com/upload" parameters:nil constructingBodyWithBlock:^(id formData) { - [formData appendPartWithFileURL:fileURL name:@"images[]" error:nil]; - }]; - - AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; - - [mutableOperations addObject:operation]; -} - -NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:@[...] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) { - NSLog(@"%lu of %lu complete", numberOfFinishedOperations, totalNumberOfOperations); -} completionBlock:^(NSArray *operations) { - NSLog(@"All operations in batch complete"); -}]; -[[NSOperationQueue mainQueue] addOperations:operations waitUntilFinished:NO]; -``` - -## Unit Tests - -AFNetworking includes a suite of unit tests within the Tests subdirectory. In order to run the unit tests, you must install the testing dependencies via [CocoaPods](http://cocoapods.org/): - - $ cd Tests - $ pod install - -Once testing dependencies are installed, you can execute the test suite via the 'iOS Tests' and 'OS X Tests' schemes within Xcode. - -### Running Tests from the Command Line - -Tests can also be run from the command line or within a continuous integration environment. The [`xcpretty`](https://github.com/mneorr/xcpretty) utility needs to be installed before running the tests from the command line: - - $ gem install xcpretty - -Once `xcpretty` is installed, you can execute the suite via `rake test`. - -## Credits - -AFNetworking is owned and maintained by the [Alamofire Software Foundation](http://alamofire.org). - -AFNetworking was originally created by [Scott Raymond](https://github.com/sco/) and [Mattt Thompson](https://github.com/mattt/) in the development of [Gowalla for iPhone](http://en.wikipedia.org/wiki/Gowalla). - -AFNetworking's logo was designed by [Alan Defibaugh](http://www.alandefibaugh.com/). - -And most of all, thanks to AFNetworking's [growing list of contributors](https://github.com/AFNetworking/AFNetworking/contributors). - -### Security Disclosure - -If you believe you have identified a security vulnerability with AFNetworking, you should report it as soon as possible via email to security@alamofire.org. Please do not post it to a public issue tracker. - -## License - -AFNetworking is released under the MIT license. See LICENSE for details. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 100644 index 8242035869c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1,75 +0,0 @@ -// AFNetworkActivityIndicatorManager.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -/** - `AFNetworkActivityIndicatorManager` manages the state of the network activity indicator in the status bar. When enabled, it will listen for notifications indicating that a network request operation has started or finished, and start or stop animating the indicator accordingly. The number of active requests is incremented and decremented much like a stack or a semaphore, and the activity indicator will animate so long as that number is greater than zero. - - You should enable the shared instance of `AFNetworkActivityIndicatorManager` when your application finishes launching. In `AppDelegate application:didFinishLaunchingWithOptions:` you can do so with the following code: - - [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES]; - - By setting `enabled` to `YES` for `sharedManager`, the network activity indicator will show and hide automatically as requests start and finish. You should not ever need to call `incrementActivityCount` or `decrementActivityCount` yourself. - - See the Apple Human Interface Guidelines section about the Network Activity Indicator for more information: - http://developer.apple.com/library/iOS/#documentation/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html#//apple_ref/doc/uid/TP40006556-CH13-SW44 - */ -@interface AFNetworkActivityIndicatorManager : NSObject - -/** - A Boolean value indicating whether the manager is enabled. - - If YES, the manager will change status bar network activity indicator according to network operation notifications it receives. The default value is NO. - */ -@property (nonatomic, assign, getter = isEnabled) BOOL enabled; - -/** - A Boolean value indicating whether the network activity indicator is currently displayed in the status bar. - */ -@property (readonly, nonatomic, assign) BOOL isNetworkActivityIndicatorVisible; - -/** - Returns the shared network activity indicator manager object for the system. - - @return The systemwide network activity indicator manager. - */ -+ (instancetype)sharedManager; - -/** - Increments the number of active network requests. If this number was zero before incrementing, this will start animating the status bar network activity indicator. - */ -- (void)incrementActivityCount; - -/** - Decrements the number of active network requests. If this number becomes zero after decrementing, this will stop animating the status bar network activity indicator. - */ -- (void)decrementActivityCount; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m deleted file mode 100644 index 82c6cc3d54e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m +++ /dev/null @@ -1,172 +0,0 @@ -// AFNetworkActivityIndicatorManager.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "AFNetworkActivityIndicatorManager.h" - -#if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) - -#import "AFHTTPRequestOperation.h" - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 -#import "AFURLSessionManager.h" -#endif - -static NSTimeInterval const kAFNetworkActivityIndicatorInvisibilityDelay = 0.17; - -static NSURLRequest * AFNetworkRequestFromNotification(NSNotification *notification) { - if ([[notification object] isKindOfClass:[AFURLConnectionOperation class]]) { - return [(AFURLConnectionOperation *)[notification object] request]; - } - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 - if ([[notification object] respondsToSelector:@selector(originalRequest)]) { - return [(NSURLSessionTask *)[notification object] originalRequest]; - } -#endif - - return nil; -} - -@interface AFNetworkActivityIndicatorManager () -@property (readwrite, nonatomic, assign) NSInteger activityCount; -@property (readwrite, nonatomic, strong) NSTimer *activityIndicatorVisibilityTimer; -@property (readonly, nonatomic, getter = isNetworkActivityIndicatorVisible) BOOL networkActivityIndicatorVisible; - -- (void)updateNetworkActivityIndicatorVisibility; -- (void)updateNetworkActivityIndicatorVisibilityDelayed; -@end - -@implementation AFNetworkActivityIndicatorManager -@dynamic networkActivityIndicatorVisible; - -+ (instancetype)sharedManager { - static AFNetworkActivityIndicatorManager *_sharedManager = nil; - static dispatch_once_t oncePredicate; - dispatch_once(&oncePredicate, ^{ - _sharedManager = [[self alloc] init]; - }); - - return _sharedManager; -} - -+ (NSSet *)keyPathsForValuesAffectingIsNetworkActivityIndicatorVisible { - return [NSSet setWithObject:@"activityCount"]; -} - -- (id)init { - self = [super init]; - if (!self) { - return nil; - } - - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingOperationDidStartNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingOperationDidFinishNotification object:nil]; - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000 - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidStart:) name:AFNetworkingTaskDidResumeNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidSuspendNotification object:nil]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkRequestDidFinish:) name:AFNetworkingTaskDidCompleteNotification object:nil]; -#endif - - return self; -} - -- (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self]; - - [_activityIndicatorVisibilityTimer invalidate]; -} - -- (void)updateNetworkActivityIndicatorVisibilityDelayed { - if (self.enabled) { - // Delay hiding of activity indicator for a short interval, to avoid flickering - if (![self isNetworkActivityIndicatorVisible]) { - [self.activityIndicatorVisibilityTimer invalidate]; - self.activityIndicatorVisibilityTimer = [NSTimer timerWithTimeInterval:kAFNetworkActivityIndicatorInvisibilityDelay target:self selector:@selector(updateNetworkActivityIndicatorVisibility) userInfo:nil repeats:NO]; - [[NSRunLoop mainRunLoop] addTimer:self.activityIndicatorVisibilityTimer forMode:NSRunLoopCommonModes]; - } else { - [self performSelectorOnMainThread:@selector(updateNetworkActivityIndicatorVisibility) withObject:nil waitUntilDone:NO modes:@[NSRunLoopCommonModes]]; - } - } -} - -- (BOOL)isNetworkActivityIndicatorVisible { - return self.activityCount > 0; -} - -- (void)updateNetworkActivityIndicatorVisibility { -#if !defined(AF_APP_EXTENSIONS) - [[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:[self isNetworkActivityIndicatorVisible]]; -#endif -} - -- (void)setActivityCount:(NSInteger)activityCount { - @synchronized(self) { - _activityCount = activityCount; - } - - dispatch_async(dispatch_get_main_queue(), ^{ - [self updateNetworkActivityIndicatorVisibilityDelayed]; - }); -} - -- (void)incrementActivityCount { - [self willChangeValueForKey:@"activityCount"]; - @synchronized(self) { - _activityCount++; - } - [self didChangeValueForKey:@"activityCount"]; - - dispatch_async(dispatch_get_main_queue(), ^{ - [self updateNetworkActivityIndicatorVisibilityDelayed]; - }); -} - -- (void)decrementActivityCount { - [self willChangeValueForKey:@"activityCount"]; - @synchronized(self) { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - _activityCount = MAX(_activityCount - 1, 0); -#pragma clang diagnostic pop - } - [self didChangeValueForKey:@"activityCount"]; - - dispatch_async(dispatch_get_main_queue(), ^{ - [self updateNetworkActivityIndicatorVisibilityDelayed]; - }); -} - -- (void)networkRequestDidStart:(NSNotification *)notification { - if ([AFNetworkRequestFromNotification(notification) URL]) { - [self incrementActivityCount]; - } -} - -- (void)networkRequestDidFinish:(NSNotification *)notification { - if ([AFNetworkRequestFromNotification(notification) URL]) { - [self decrementActivityCount]; - } -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h deleted file mode 100644 index 06e89c487ab..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h +++ /dev/null @@ -1,63 +0,0 @@ -// UIActivityIndicatorView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -@class AFURLConnectionOperation; - -/** - This category adds methods to the UIKit framework's `UIActivityIndicatorView` class. The methods in this category provide support for automatically starting and stopping animation depending on the loading state of a request operation or session task. - */ -@interface UIActivityIndicatorView (AFNetworking) - -///---------------------------------- -/// @name Animating for Session Tasks -///---------------------------------- - -/** - Binds the animating state to the state of the specified task. - - @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. - */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setAnimatingWithStateOfTask:(NSURLSessionTask *)task; -#endif - -///--------------------------------------- -/// @name Animating for Request Operations -///--------------------------------------- - -/** - Binds the animating state to the execution state of the specified operation. - - @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. - */ -- (void)setAnimatingWithStateOfOperation:(AFURLConnectionOperation *)operation; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m deleted file mode 100644 index 1a36091b7b0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m +++ /dev/null @@ -1,96 +0,0 @@ -// UIActivityIndicatorView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIActivityIndicatorView+AFNetworking.h" - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import "AFHTTPRequestOperation.h" - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -#import "AFURLSessionManager.h" -#endif - -@implementation UIActivityIndicatorView (AFNetworking) - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setAnimatingWithStateOfTask:(NSURLSessionTask *)task { - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - - [notificationCenter removeObserver:self name:AFNetworkingTaskDidResumeNotification object:nil]; - [notificationCenter removeObserver:self name:AFNetworkingTaskDidSuspendNotification object:nil]; - [notificationCenter removeObserver:self name:AFNetworkingTaskDidCompleteNotification object:nil]; - - if (task) { - if (task.state != NSURLSessionTaskStateCompleted) { - if (task.state == NSURLSessionTaskStateRunning) { - [self startAnimating]; - } else { - [self stopAnimating]; - } - - [notificationCenter addObserver:self selector:@selector(af_startAnimating) name:AFNetworkingTaskDidResumeNotification object:task]; - [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingTaskDidCompleteNotification object:task]; - [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingTaskDidSuspendNotification object:task]; - } - } -} -#endif - -#pragma mark - - -- (void)setAnimatingWithStateOfOperation:(AFURLConnectionOperation *)operation { - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - - [notificationCenter removeObserver:self name:AFNetworkingOperationDidStartNotification object:nil]; - [notificationCenter removeObserver:self name:AFNetworkingOperationDidFinishNotification object:nil]; - - if (operation) { - if (![operation isFinished]) { - if ([operation isExecuting]) { - [self startAnimating]; - } else { - [self stopAnimating]; - } - - [notificationCenter addObserver:self selector:@selector(af_startAnimating) name:AFNetworkingOperationDidStartNotification object:operation]; - [notificationCenter addObserver:self selector:@selector(af_stopAnimating) name:AFNetworkingOperationDidFinishNotification object:operation]; - } - } -} - -#pragma mark - - -- (void)af_startAnimating { - dispatch_async(dispatch_get_main_queue(), ^{ - [self startAnimating]; - }); -} - -- (void)af_stopAnimating { - dispatch_async(dispatch_get_main_queue(), ^{ - [self stopAnimating]; - }); -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h deleted file mode 100644 index 80eddc16a70..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h +++ /dev/null @@ -1,95 +0,0 @@ -// UIAlertView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) - -#import - -@class AFURLConnectionOperation; - -/** - This category adds methods to the UIKit framework's `UIAlertView` class. The methods in this category provide support for automatically showing an alert if a session task or request operation finishes with an error. Alert title and message are filled from the corresponding `localizedDescription` & `localizedRecoverySuggestion` or `localizedFailureReason` of the error. - */ -@interface UIAlertView (AFNetworking) - -///------------------------------------- -/// @name Showing Alert for Session Task -///------------------------------------- - -/** - Shows an alert view with the error of the specified session task, if any. - - @param task The session task. - @param delegate The alert view delegate. - */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -+ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task - delegate:(id)delegate; -#endif - -/** - Shows an alert view with the error of the specified session task, if any, with a custom cancel button title and other button titles. - - @param task The session task. - @param delegate The alert view delegate. - @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. - @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. - */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -+ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task - delegate:(id)delegate - cancelButtonTitle:(NSString *)cancelButtonTitle - otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; -#endif - -///------------------------------------------ -/// @name Showing Alert for Request Operation -///------------------------------------------ - -/** - Shows an alert view with the error of the specified request operation, if any. - - @param operation The request operation. - @param delegate The alert view delegate. - */ -+ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation - delegate:(id)delegate; - -/** - Shows an alert view with the error of the specified request operation, if any, with a custom cancel button title and other button titles. - - @param operation The request operation. - @param delegate The alert view delegate. - @param cancelButtonTitle The title of the cancel button or nil if there is no cancel button. Using this argument is equivalent to setting the cancel button index to the value returned by invoking addButtonWithTitle: specifying this title. - @param otherButtonTitles The title of another button. Using this argument is equivalent to invoking addButtonWithTitle: with this title to add more buttons. Too many buttons can cause the alert view to scroll. For guidelines on the best ways to use an alert in an app, see "Temporary Views". Titles of additional buttons to add to the receiver, terminated with `nil`. - */ -+ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation - delegate:(id)delegate - cancelButtonTitle:(NSString *)cancelButtonTitle - otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m deleted file mode 100644 index a128544f16c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.m +++ /dev/null @@ -1,141 +0,0 @@ -// UIAlertView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIAlertView+AFNetworking.h" - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) && !defined(AF_APP_EXTENSIONS) - -#import "AFURLConnectionOperation.h" - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -#import "AFURLSessionManager.h" -#endif - -static void AFGetAlertViewTitleAndMessageFromError(NSError *error, NSString * __autoreleasing *title, NSString * __autoreleasing *message) { - if (error.localizedDescription && (error.localizedRecoverySuggestion || error.localizedFailureReason)) { - *title = error.localizedDescription; - - if (error.localizedRecoverySuggestion) { - *message = error.localizedRecoverySuggestion; - } else { - *message = error.localizedFailureReason; - } - } else if (error.localizedDescription) { - *title = NSLocalizedStringFromTable(@"Error", @"AFNetworking", @"Fallback Error Description"); - *message = error.localizedDescription; - } else { - *title = NSLocalizedStringFromTable(@"Error", @"AFNetworking", @"Fallback Error Description"); - *message = [NSString stringWithFormat:NSLocalizedStringFromTable(@"%@ Error: %ld", @"AFNetworking", @"Fallback Error Failure Reason Format"), error.domain, (long)error.code]; - } -} - -@implementation UIAlertView (AFNetworking) - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -+ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task - delegate:(id)delegate -{ - [self showAlertViewForTaskWithErrorOnCompletion:task delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil]; -} - -+ (void)showAlertViewForTaskWithErrorOnCompletion:(NSURLSessionTask *)task - delegate:(id)delegate - cancelButtonTitle:(NSString *)cancelButtonTitle - otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION -{ - NSMutableArray *mutableOtherTitles = [NSMutableArray array]; - va_list otherButtonTitleList; - va_start(otherButtonTitleList, otherButtonTitles); - { - for (NSString *otherButtonTitle = otherButtonTitles; otherButtonTitle != nil; otherButtonTitle = va_arg(otherButtonTitleList, NSString *)) { - [mutableOtherTitles addObject:otherButtonTitle]; - } - } - va_end(otherButtonTitleList); - - __block __weak id observer = [[NSNotificationCenter defaultCenter] addObserverForName:AFNetworkingTaskDidCompleteNotification object:task queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { - NSError *error = notification.userInfo[AFNetworkingTaskDidCompleteErrorKey]; - if (error) { - NSString *title, *message; - AFGetAlertViewTitleAndMessageFromError(error, &title, &message); - - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil, nil]; - for (NSString *otherButtonTitle in mutableOtherTitles) { - [alertView addButtonWithTitle:otherButtonTitle]; - } - [alertView setTitle:title]; - [alertView setMessage:message]; - [alertView show]; - } - - [[NSNotificationCenter defaultCenter] removeObserver:observer]; - }]; -} -#endif - -#pragma mark - - -+ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation - delegate:(id)delegate -{ - [self showAlertViewForRequestOperationWithErrorOnCompletion:operation delegate:delegate cancelButtonTitle:NSLocalizedStringFromTable(@"Dismiss", @"AFNetworking", @"UIAlertView Cancel Button Title") otherButtonTitles:nil, nil]; -} - -+ (void)showAlertViewForRequestOperationWithErrorOnCompletion:(AFURLConnectionOperation *)operation - delegate:(id)delegate - cancelButtonTitle:(NSString *)cancelButtonTitle - otherButtonTitles:(NSString *)otherButtonTitles, ... NS_REQUIRES_NIL_TERMINATION -{ - NSMutableArray *mutableOtherTitles = [NSMutableArray array]; - va_list otherButtonTitleList; - va_start(otherButtonTitleList, otherButtonTitles); - { - for (NSString *otherButtonTitle = otherButtonTitles; otherButtonTitle != nil; otherButtonTitle = va_arg(otherButtonTitleList, NSString *)) { - [mutableOtherTitles addObject:otherButtonTitle]; - } - } - va_end(otherButtonTitleList); - - __block __weak id observer = [[NSNotificationCenter defaultCenter] addObserverForName:AFNetworkingOperationDidFinishNotification object:operation queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { - - if (notification.object && [notification.object isKindOfClass:[AFURLConnectionOperation class]]) { - NSError *error = [(AFURLConnectionOperation *)notification.object error]; - if (error) { - NSString *title, *message; - AFGetAlertViewTitleAndMessageFromError(error, &title, &message); - - UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:nil message:nil delegate:delegate cancelButtonTitle:cancelButtonTitle otherButtonTitles:nil, nil]; - for (NSString *otherButtonTitle in mutableOtherTitles) { - [alertView addButtonWithTitle:otherButtonTitle]; - } - [alertView setTitle:title]; - [alertView setMessage:message]; - [alertView show]; - } - } - - [[NSNotificationCenter defaultCenter] removeObserver:observer]; - }]; -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h deleted file mode 100644 index 6c09b7aefb2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h +++ /dev/null @@ -1,180 +0,0 @@ -// UIButton+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -@protocol AFURLResponseSerialization, AFImageCache; - -/** - This category adds methods to the UIKit framework's `UIButton` class. The methods in this category provide support for loading remote images and background images asynchronously from a URL. - - @warning Compound values for control `state` (such as `UIControlStateHighlighted | UIControlStateDisabled`) are unsupported. - */ -@interface UIButton (AFNetworking) - -///---------------------------- -/// @name Accessing Image Cache -///---------------------------- - -/** - The image cache used to improve image loadiing performance on scroll views. By default, `UIButton` will use the `sharedImageCache` of `UIImageView`. - */ -+ (id )sharedImageCache; - -/** - Set the cache used for image loading. - - @param imageCache The image cache. - */ -+ (void)setSharedImageCache:(id )imageCache; - -///------------------------------------ -/// @name Accessing Response Serializer -///------------------------------------ - -/** - The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. - - @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer - */ -@property (nonatomic, strong) id imageResponseSerializer; - -///-------------------- -/// @name Setting Image -///-------------------- - -/** - Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - @param state The control state. - @param url The URL used for the image request. - */ -- (void)setImageForState:(UIControlState)state - withURL:(NSURL *)url; - -/** - Asynchronously downloads an image from the specified URL, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - @param state The control state. - @param url The URL used for the image request. - @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. - */ -- (void)setImageForState:(UIControlState)state - withURL:(NSURL *)url - placeholderImage:(UIImage *)placeholderImage; - -/** - Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setImage:forState:` is applied. - - @param state The control state. - @param urlRequest The URL request used for the image request. - @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the button will not change its image until the image request finishes. - @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes two arguments: the server response and the image. If the image was returned from cache, the request and response parameters will be `nil`. - @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes a single argument: the error that occurred. - */ -- (void)setImageForState:(UIControlState)state - withURLRequest:(NSURLRequest *)urlRequest - placeholderImage:(UIImage *)placeholderImage - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSError *error))failure; - - -///------------------------------- -/// @name Setting Background Image -///------------------------------- - -/** - Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous background image request for the receiver will be cancelled. - - If the background image is cached locally, the background image is set immediately, otherwise the specified placeholder background image will be set immediately, and then the remote background image will be set once the request is finished. - - @param state The control state. - @param url The URL used for the background image request. - */ -- (void)setBackgroundImageForState:(UIControlState)state - withURL:(NSURL *)url; - -/** - Asynchronously downloads an image from the specified URL, and sets it as the background image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - @param state The control state. - @param url The URL used for the background image request. - @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. - */ -- (void)setBackgroundImageForState:(UIControlState)state - withURL:(NSURL *)url - placeholderImage:(UIImage *)placeholderImage; - -/** - Asynchronously downloads an image from the specified URL request, and sets it as the image for the specified state once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - If a success block is specified, it is the responsibility of the block to set the image of the button before returning. If no success block is specified, the default behavior of setting the image with `setBackgroundImage:forState:` is applied. - - @param state The control state. - @param urlRequest The URL request used for the image request. - @param placeholderImage The background image to be set initially, until the background image request finishes. If `nil`, the button will not change its background image until the background image request finishes. - */ -- (void)setBackgroundImageForState:(UIControlState)state - withURLRequest:(NSURLRequest *)urlRequest - placeholderImage:(UIImage *)placeholderImage - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSError *error))failure; - - -///------------------------------ -/// @name Canceling Image Loading -///------------------------------ - -/** - Cancels any executing image operation for the specified control state of the receiver, if one exists. - - @param state The control state. - */ -- (void)cancelImageRequestOperationForState:(UIControlState)state; - -/** - Cancels any executing background image operation for the specified control state of the receiver, if one exists. - - @param state The control state. - */ -- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m deleted file mode 100644 index f34631e1898..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.m +++ /dev/null @@ -1,293 +0,0 @@ -// UIButton+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIButton+AFNetworking.h" - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import "AFURLResponseSerialization.h" -#import "AFHTTPRequestOperation.h" - -#import "UIImageView+AFNetworking.h" - -@interface UIButton (_AFNetworking) -@end - -@implementation UIButton (_AFNetworking) - -+ (NSOperationQueue *)af_sharedImageRequestOperationQueue { - static NSOperationQueue *_af_sharedImageRequestOperationQueue = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_sharedImageRequestOperationQueue = [[NSOperationQueue alloc] init]; - _af_sharedImageRequestOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; - }); - - return _af_sharedImageRequestOperationQueue; -} - -#pragma mark - - -static char AFImageRequestOperationNormal; -static char AFImageRequestOperationHighlighted; -static char AFImageRequestOperationSelected; -static char AFImageRequestOperationDisabled; - -static const char * af_imageRequestOperationKeyForState(UIControlState state) { - switch (state) { - case UIControlStateHighlighted: - return &AFImageRequestOperationHighlighted; - case UIControlStateSelected: - return &AFImageRequestOperationSelected; - case UIControlStateDisabled: - return &AFImageRequestOperationDisabled; - case UIControlStateNormal: - default: - return &AFImageRequestOperationNormal; - } -} - -- (AFHTTPRequestOperation *)af_imageRequestOperationForState:(UIControlState)state { - return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, af_imageRequestOperationKeyForState(state)); -} - -- (void)af_setImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation - forState:(UIControlState)state -{ - objc_setAssociatedObject(self, af_imageRequestOperationKeyForState(state), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -static char AFBackgroundImageRequestOperationNormal; -static char AFBackgroundImageRequestOperationHighlighted; -static char AFBackgroundImageRequestOperationSelected; -static char AFBackgroundImageRequestOperationDisabled; - -static const char * af_backgroundImageRequestOperationKeyForState(UIControlState state) { - switch (state) { - case UIControlStateHighlighted: - return &AFBackgroundImageRequestOperationHighlighted; - case UIControlStateSelected: - return &AFBackgroundImageRequestOperationSelected; - case UIControlStateDisabled: - return &AFBackgroundImageRequestOperationDisabled; - case UIControlStateNormal: - default: - return &AFBackgroundImageRequestOperationNormal; - } -} - -- (AFHTTPRequestOperation *)af_backgroundImageRequestOperationForState:(UIControlState)state { - return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, af_backgroundImageRequestOperationKeyForState(state)); -} - -- (void)af_setBackgroundImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation - forState:(UIControlState)state -{ - objc_setAssociatedObject(self, af_backgroundImageRequestOperationKeyForState(state), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -@end - -#pragma mark - - -@implementation UIButton (AFNetworking) - -+ (id )sharedImageCache { -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - return objc_getAssociatedObject(self, @selector(sharedImageCache)) ?: [UIImageView sharedImageCache]; -#pragma clang diagnostic pop -} - -+ (void)setSharedImageCache:(id )imageCache { - objc_setAssociatedObject(self, @selector(sharedImageCache), imageCache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -- (id )imageResponseSerializer { - static id _af_defaultImageResponseSerializer = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_defaultImageResponseSerializer = [AFImageResponseSerializer serializer]; - }); - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - return objc_getAssociatedObject(self, @selector(imageResponseSerializer)) ?: _af_defaultImageResponseSerializer; -#pragma clang diagnostic pop -} - -- (void)setImageResponseSerializer:(id )serializer { - objc_setAssociatedObject(self, @selector(imageResponseSerializer), serializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -- (void)setImageForState:(UIControlState)state - withURL:(NSURL *)url -{ - [self setImageForState:state withURL:url placeholderImage:nil]; -} - -- (void)setImageForState:(UIControlState)state - withURL:(NSURL *)url - placeholderImage:(UIImage *)placeholderImage -{ - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; - [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; - - [self setImageForState:state withURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; -} - -- (void)setImageForState:(UIControlState)state - withURLRequest:(NSURLRequest *)urlRequest - placeholderImage:(UIImage *)placeholderImage - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSError *error))failure -{ - [self cancelImageRequestOperationForState:state]; - - UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; - if (cachedImage) { - if (success) { - success(nil, nil, cachedImage); - } else { - [self setImage:cachedImage forState:state]; - } - - [self af_setImageRequestOperation:nil forState:state]; - } else { - if (placeholderImage) { - [self setImage:placeholderImage forState:state]; - } - - __weak __typeof(self)weakSelf = self; - AFHTTPRequestOperation *imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; - imageRequestOperation.responseSerializer = self.imageResponseSerializer; - [imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - if ([[urlRequest URL] isEqual:[operation.request URL]]) { - if (success) { - success(operation.request, operation.response, responseObject); - } else if (responseObject) { - [strongSelf setImage:responseObject forState:state]; - } - } - [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if ([[urlRequest URL] isEqual:[operation.request URL]]) { - if (failure) { - failure(error); - } - } - }]; - - [self af_setImageRequestOperation:imageRequestOperation forState:state]; - [[[self class] af_sharedImageRequestOperationQueue] addOperation:imageRequestOperation]; - } -} - -#pragma mark - - -- (void)setBackgroundImageForState:(UIControlState)state - withURL:(NSURL *)url -{ - [self setBackgroundImageForState:state withURL:url placeholderImage:nil]; -} - -- (void)setBackgroundImageForState:(UIControlState)state - withURL:(NSURL *)url - placeholderImage:(UIImage *)placeholderImage -{ - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; - [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; - - [self setBackgroundImageForState:state withURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; -} - -- (void)setBackgroundImageForState:(UIControlState)state - withURLRequest:(NSURLRequest *)urlRequest - placeholderImage:(UIImage *)placeholderImage - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSError *error))failure -{ - [self cancelBackgroundImageRequestOperationForState:state]; - - UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; - if (cachedImage) { - if (success) { - success(nil, nil, cachedImage); - } else { - [self setBackgroundImage:cachedImage forState:state]; - } - - [self af_setBackgroundImageRequestOperation:nil forState:state]; - } else { - if (placeholderImage) { - [self setBackgroundImage:placeholderImage forState:state]; - } - - __weak __typeof(self)weakSelf = self; - AFHTTPRequestOperation *backgroundImageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; - backgroundImageRequestOperation.responseSerializer = self.imageResponseSerializer; - [backgroundImageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - if ([[urlRequest URL] isEqual:[operation.request URL]]) { - if (success) { - success(operation.request, operation.response, responseObject); - } else if (responseObject) { - [strongSelf setBackgroundImage:responseObject forState:state]; - } - } - [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if ([[urlRequest URL] isEqual:[operation.request URL]]) { - if (failure) { - failure(error); - } - } - }]; - - [self af_setBackgroundImageRequestOperation:backgroundImageRequestOperation forState:state]; - [[[self class] af_sharedImageRequestOperationQueue] addOperation:backgroundImageRequestOperation]; - } -} - -#pragma mark - - -- (void)cancelImageRequestOperationForState:(UIControlState)state { - [[self af_imageRequestOperationForState:state] cancel]; - [self af_setImageRequestOperation:nil forState:state]; -} - -- (void)cancelBackgroundImageRequestOperationForState:(UIControlState)state { - [[self af_backgroundImageRequestOperationForState:state] cancel]; - [self af_setBackgroundImageRequestOperation:nil forState:state]; -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h deleted file mode 100644 index 2fdff9ff9b3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1,142 +0,0 @@ -// UIImageView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -@protocol AFURLResponseSerialization, AFImageCache; - -/** - This category adds methods to the UIKit framework's `UIImageView` class. The methods in this category provide support for loading remote images asynchronously from a URL. - */ -@interface UIImageView (AFNetworking) - -///---------------------------- -/// @name Accessing Image Cache -///---------------------------- - -/** - The image cache used to improve image loading performance on scroll views. By default, this is an `NSCache` subclass conforming to the `AFImageCache` protocol, which listens for notification warnings and evicts objects accordingly. -*/ -+ (id )sharedImageCache; - -/** - Set the cache used for image loading. - - @param imageCache The image cache. - */ -+ (void)setSharedImageCache:(id )imageCache; - -///------------------------------------ -/// @name Accessing Response Serializer -///------------------------------------ - -/** - The response serializer used to create an image representation from the server response and response data. By default, this is an instance of `AFImageResponseSerializer`. - - @discussion Subclasses of `AFImageResponseSerializer` could be used to perform post-processing, such as color correction, face detection, or other effects. See https://github.com/AFNetworking/AFCoreImageSerializer - */ -@property (nonatomic, strong) id imageResponseSerializer; - -///-------------------- -/// @name Setting Image -///-------------------- - -/** - Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` - - @param url The URL used for the image request. - */ -- (void)setImageWithURL:(NSURL *)url; - -/** - Asynchronously downloads an image from the specified URL, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - By default, URL requests have a `Accept` header field value of "image / *", a cache policy of `NSURLCacheStorageAllowed` and a timeout interval of 30 seconds, and are set not handle cookies. To configure URL requests differently, use `setImageWithURLRequest:placeholderImage:success:failure:` - - @param url The URL used for the image request. - @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. - */ -- (void)setImageWithURL:(NSURL *)url - placeholderImage:(UIImage *)placeholderImage; - -/** - Asynchronously downloads an image from the specified URL request, and sets it once the request is finished. Any previous image request for the receiver will be cancelled. - - If the image is cached locally, the image is set immediately, otherwise the specified placeholder image will be set immediately, and then the remote image will be set once the request is finished. - - If a success block is specified, it is the responsibility of the block to set the image of the image view before returning. If no success block is specified, the default behavior of setting the image with `self.image = image` is applied. - - @param urlRequest The URL request used for the image request. - @param placeholderImage The image to be set initially, until the image request finishes. If `nil`, the image view will not change its image until the image request finishes. - @param success A block to be executed when the image request operation finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the image created from the response data of request. If the image was returned from cache, the request and response parameters will be `nil`. - @param failure A block object to be executed when the image request operation finishes unsuccessfully, or that finishes successfully. This block has no return value and takes three arguments: the request sent from the client, the response received from the server, and the error object describing the network or parsing error that occurred. - */ -- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest - placeholderImage:(UIImage *)placeholderImage - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure; - -/** - Cancels any executing image operation for the receiver, if one exists. - */ -- (void)cancelImageRequestOperation; - -@end - -#pragma mark - - -/** - The `AFImageCache` protocol is adopted by an object used to cache images loaded by the AFNetworking category on `UIImageView`. - */ -@protocol AFImageCache - -/** - Returns a cached image for the specififed request, if available. - - @param request The image request. - - @return The cached image. - */ -- (UIImage *)cachedImageForRequest:(NSURLRequest *)request; - -/** - Caches a particular image for the specified request. - - @param image The image to cache. - @param request The request to be used as a cache key. - */ -- (void)cacheImage:(UIImage *)image - forRequest:(NSURLRequest *)request; -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m deleted file mode 100644 index 1400b4a0609..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.m +++ /dev/null @@ -1,215 +0,0 @@ -// UIImageView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIImageView+AFNetworking.h" - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import "AFHTTPRequestOperation.h" - -@interface AFImageCache : NSCache -@end - -#pragma mark - - -@interface UIImageView (_AFNetworking) -@property (readwrite, nonatomic, strong, setter = af_setImageRequestOperation:) AFHTTPRequestOperation *af_imageRequestOperation; -@end - -@implementation UIImageView (_AFNetworking) - -+ (NSOperationQueue *)af_sharedImageRequestOperationQueue { - static NSOperationQueue *_af_sharedImageRequestOperationQueue = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_sharedImageRequestOperationQueue = [[NSOperationQueue alloc] init]; - _af_sharedImageRequestOperationQueue.maxConcurrentOperationCount = NSOperationQueueDefaultMaxConcurrentOperationCount; - }); - - return _af_sharedImageRequestOperationQueue; -} - -- (AFHTTPRequestOperation *)af_imageRequestOperation { - return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, @selector(af_imageRequestOperation)); -} - -- (void)af_setImageRequestOperation:(AFHTTPRequestOperation *)imageRequestOperation { - objc_setAssociatedObject(self, @selector(af_imageRequestOperation), imageRequestOperation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -@end - -#pragma mark - - -@implementation UIImageView (AFNetworking) -@dynamic imageResponseSerializer; - -+ (id )sharedImageCache { - static AFImageCache *_af_defaultImageCache = nil; - static dispatch_once_t oncePredicate; - dispatch_once(&oncePredicate, ^{ - _af_defaultImageCache = [[AFImageCache alloc] init]; - - [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification * __unused notification) { - [_af_defaultImageCache removeAllObjects]; - }]; - }); - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - return objc_getAssociatedObject(self, @selector(sharedImageCache)) ?: _af_defaultImageCache; -#pragma clang diagnostic pop -} - -+ (void)setSharedImageCache:(id )imageCache { - objc_setAssociatedObject(self, @selector(sharedImageCache), imageCache, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -- (id )imageResponseSerializer { - static id _af_defaultImageResponseSerializer = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_defaultImageResponseSerializer = [AFImageResponseSerializer serializer]; - }); - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - return objc_getAssociatedObject(self, @selector(imageResponseSerializer)) ?: _af_defaultImageResponseSerializer; -#pragma clang diagnostic pop -} - -- (void)setImageResponseSerializer:(id )serializer { - objc_setAssociatedObject(self, @selector(imageResponseSerializer), serializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -- (void)setImageWithURL:(NSURL *)url { - [self setImageWithURL:url placeholderImage:nil]; -} - -- (void)setImageWithURL:(NSURL *)url - placeholderImage:(UIImage *)placeholderImage -{ - NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; - [request addValue:@"image/*" forHTTPHeaderField:@"Accept"]; - - [self setImageWithURLRequest:request placeholderImage:placeholderImage success:nil failure:nil]; -} - -- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest - placeholderImage:(UIImage *)placeholderImage - success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success - failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure -{ - [self cancelImageRequestOperation]; - - UIImage *cachedImage = [[[self class] sharedImageCache] cachedImageForRequest:urlRequest]; - if (cachedImage) { - if (success) { - success(nil, nil, cachedImage); - } else { - self.image = cachedImage; - } - - self.af_imageRequestOperation = nil; - } else { - if (placeholderImage) { - self.image = placeholderImage; - } - - __weak __typeof(self)weakSelf = self; - self.af_imageRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:urlRequest]; - self.af_imageRequestOperation.responseSerializer = self.imageResponseSerializer; - [self.af_imageRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) { - if (success) { - success(urlRequest, operation.response, responseObject); - } else if (responseObject) { - strongSelf.image = responseObject; - } - - if (operation == strongSelf.af_imageRequestOperation){ - strongSelf.af_imageRequestOperation = nil; - } - } - - [[[strongSelf class] sharedImageCache] cacheImage:responseObject forRequest:urlRequest]; - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - if ([[urlRequest URL] isEqual:[strongSelf.af_imageRequestOperation.request URL]]) { - if (failure) { - failure(urlRequest, operation.response, error); - } - - if (operation == strongSelf.af_imageRequestOperation){ - strongSelf.af_imageRequestOperation = nil; - } - } - }]; - - [[[self class] af_sharedImageRequestOperationQueue] addOperation:self.af_imageRequestOperation]; - } -} - -- (void)cancelImageRequestOperation { - [self.af_imageRequestOperation cancel]; - self.af_imageRequestOperation = nil; -} - -@end - -#pragma mark - - -static inline NSString * AFImageCacheKeyFromURLRequest(NSURLRequest *request) { - return [[request URL] absoluteString]; -} - -@implementation AFImageCache - -- (UIImage *)cachedImageForRequest:(NSURLRequest *)request { - switch ([request cachePolicy]) { - case NSURLRequestReloadIgnoringCacheData: - case NSURLRequestReloadIgnoringLocalAndRemoteCacheData: - return nil; - default: - break; - } - - return [self objectForKey:AFImageCacheKeyFromURLRequest(request)]; -} - -- (void)cacheImage:(UIImage *)image - forRequest:(NSURLRequest *)request -{ - if (image && request) { - [self setObject:image forKey:AFImageCacheKeyFromURLRequest(request)]; - } -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h deleted file mode 100644 index 94082f6cb58..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h +++ /dev/null @@ -1,38 +0,0 @@ -// UIKit+AFNetworking.h -// -// Copyright (c) 2013 AFNetworking (http://afnetworking.com/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#ifndef _UIKIT_AFNETWORKING_ - #define _UIKIT_AFNETWORKING_ - - #import "AFNetworkActivityIndicatorManager.h" - - #import "UIActivityIndicatorView+AFNetworking.h" - #import "UIAlertView+AFNetworking.h" - #import "UIButton+AFNetworking.h" - #import "UIImageView+AFNetworking.h" - #import "UIKit+AFNetworking.h" - #import "UIProgressView+AFNetworking.h" - #import "UIRefreshControl+AFNetworking.h" - #import "UIWebView+AFNetworking.h" -#endif /* _UIKIT_AFNETWORKING_ */ diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h deleted file mode 100644 index 6a4e16f884c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h +++ /dev/null @@ -1,87 +0,0 @@ -// UIProgressView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -@class AFURLConnectionOperation; - -/** - This category adds methods to the UIKit framework's `UIProgressView` class. The methods in this category provide support for binding the progress to the upload and download progress of a session task or request operation. - */ -@interface UIProgressView (AFNetworking) - -///------------------------------------ -/// @name Setting Session Task Progress -///------------------------------------ - -/** - Binds the progress to the upload progress of the specified session task. - - @param task The session task. - @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. - */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task - animated:(BOOL)animated; -#endif - -/** - Binds the progress to the download progress of the specified session task. - - @param task The session task. - @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. - */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task - animated:(BOOL)animated; -#endif - -///------------------------------------ -/// @name Setting Session Task Progress -///------------------------------------ - -/** - Binds the progress to the upload progress of the specified request operation. - - @param operation The request operation. - @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. - */ -- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation - animated:(BOOL)animated; - -/** - Binds the progress to the download progress of the specified request operation. - - @param operation The request operation. - @param animated `YES` if the change should be animated, `NO` if the change should happen immediately. - */ -- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation - animated:(BOOL)animated; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m deleted file mode 100644 index ad2c280ba8d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.m +++ /dev/null @@ -1,182 +0,0 @@ -// UIProgressView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIProgressView+AFNetworking.h" - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import "AFURLConnectionOperation.h" - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -#import "AFURLSessionManager.h" -#endif - -static void * AFTaskCountOfBytesSentContext = &AFTaskCountOfBytesSentContext; -static void * AFTaskCountOfBytesReceivedContext = &AFTaskCountOfBytesReceivedContext; - -@interface AFURLConnectionOperation (_UIProgressView) -@property (readwrite, nonatomic, copy) void (^uploadProgress)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); -@property (readwrite, nonatomic, assign, setter = af_setUploadProgressAnimated:) BOOL af_uploadProgressAnimated; - -@property (readwrite, nonatomic, copy) void (^downloadProgress)(NSUInteger bytes, long long totalBytes, long long totalBytesExpected); -@property (readwrite, nonatomic, assign, setter = af_setDownloadProgressAnimated:) BOOL af_downloadProgressAnimated; -@end - -@implementation AFURLConnectionOperation (_UIProgressView) -@dynamic uploadProgress; // Implemented in AFURLConnectionOperation -@dynamic af_uploadProgressAnimated; - -@dynamic downloadProgress; // Implemented in AFURLConnectionOperation -@dynamic af_downloadProgressAnimated; -@end - -#pragma mark - - -@implementation UIProgressView (AFNetworking) - -- (BOOL)af_uploadProgressAnimated { - return [(NSNumber *)objc_getAssociatedObject(self, @selector(af_uploadProgressAnimated)) boolValue]; -} - -- (void)af_setUploadProgressAnimated:(BOOL)animated { - objc_setAssociatedObject(self, @selector(af_uploadProgressAnimated), @(animated), OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (BOOL)af_downloadProgressAnimated { - return [(NSNumber *)objc_getAssociatedObject(self, @selector(af_downloadProgressAnimated)) boolValue]; -} - -- (void)af_setDownloadProgressAnimated:(BOOL)animated { - objc_setAssociatedObject(self, @selector(af_downloadProgressAnimated), @(animated), OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setProgressWithUploadProgressOfTask:(NSURLSessionUploadTask *)task - animated:(BOOL)animated -{ - [task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesSentContext]; - [task addObserver:self forKeyPath:@"countOfBytesSent" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesSentContext]; - - [self af_setUploadProgressAnimated:animated]; -} - -- (void)setProgressWithDownloadProgressOfTask:(NSURLSessionDownloadTask *)task - animated:(BOOL)animated -{ - [task addObserver:self forKeyPath:@"state" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext]; - [task addObserver:self forKeyPath:@"countOfBytesReceived" options:(NSKeyValueObservingOptions)0 context:AFTaskCountOfBytesReceivedContext]; - - [self af_setDownloadProgressAnimated:animated]; -} -#endif - -#pragma mark - - -- (void)setProgressWithUploadProgressOfOperation:(AFURLConnectionOperation *)operation - animated:(BOOL)animated -{ - __weak __typeof(self)weakSelf = self; - void (^original)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) = [operation.uploadProgress copy]; - [operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) { - if (original) { - original(bytesWritten, totalBytesWritten, totalBytesExpectedToWrite); - } - - dispatch_async(dispatch_get_main_queue(), ^{ - if (totalBytesExpectedToWrite > 0) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - [strongSelf setProgress:(totalBytesWritten / (totalBytesExpectedToWrite * 1.0f)) animated:animated]; - } - }); - }]; -} - -- (void)setProgressWithDownloadProgressOfOperation:(AFURLConnectionOperation *)operation - animated:(BOOL)animated -{ - __weak __typeof(self)weakSelf = self; - void (^original)(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) = [operation.downloadProgress copy]; - [operation setDownloadProgressBlock:^(NSUInteger bytesRead, long long totalBytesRead, long long totalBytesExpectedToRead) { - if (original) { - original(bytesRead, totalBytesRead, totalBytesExpectedToRead); - } - - dispatch_async(dispatch_get_main_queue(), ^{ - if (totalBytesExpectedToRead > 0) { - __strong __typeof(weakSelf)strongSelf = weakSelf; - [strongSelf setProgress:(totalBytesRead / (totalBytesExpectedToRead * 1.0f)) animated:animated]; - } - }); - }]; -} - -#pragma mark - NSKeyValueObserving - -- (void)observeValueForKeyPath:(NSString *)keyPath - ofObject:(id)object - change:(__unused NSDictionary *)change - context:(void *)context -{ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 - if (context == AFTaskCountOfBytesSentContext || context == AFTaskCountOfBytesReceivedContext) { - if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesSent))]) { - if ([object countOfBytesExpectedToSend] > 0) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self setProgress:[object countOfBytesSent] / ([object countOfBytesExpectedToSend] * 1.0f) animated:self.af_uploadProgressAnimated]; - }); - } - } - - if ([keyPath isEqualToString:NSStringFromSelector(@selector(countOfBytesReceived))]) { - if ([object countOfBytesExpectedToReceive] > 0) { - dispatch_async(dispatch_get_main_queue(), ^{ - [self setProgress:[object countOfBytesReceived] / ([object countOfBytesExpectedToReceive] * 1.0f) animated:self.af_downloadProgressAnimated]; - }); - } - } - - if ([keyPath isEqualToString:NSStringFromSelector(@selector(state))]) { - if ([(NSURLSessionTask *)object state] == NSURLSessionTaskStateCompleted) { - @try { - [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(state))]; - - if (context == AFTaskCountOfBytesSentContext) { - [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(countOfBytesSent))]; - } - - if (context == AFTaskCountOfBytesReceivedContext) { - [object removeObserver:self forKeyPath:NSStringFromSelector(@selector(countOfBytesReceived))]; - } - } - @catch (NSException * __unused exception) {} - } - } - } -#endif -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h deleted file mode 100644 index 18c12eaaca6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h +++ /dev/null @@ -1,64 +0,0 @@ -// UIRefreshControl+AFNetworking.m -// -// Copyright (c) 2014 AFNetworking (http://afnetworking.com) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -@class AFURLConnectionOperation; - -/** - This category adds methods to the UIKit framework's `UIRefreshControl` class. The methods in this category provide support for automatically begining and ending refreshing depending on the loading state of a request operation or session task. - */ -@interface UIRefreshControl (AFNetworking) - -///----------------------------------- -/// @name Refreshing for Session Tasks -///----------------------------------- - -/** - Binds the refreshing state to the state of the specified task. - - @param task The task. If `nil`, automatic updating from any previously specified operation will be disabled. - */ -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task; -#endif - -///---------------------------------------- -/// @name Refreshing for Request Operations -///---------------------------------------- - -/** - Binds the refreshing state to the execution state of the specified operation. - - @param operation The operation. If `nil`, automatic updating from any previously specified operation will be disabled. - */ -- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m deleted file mode 100644 index e266451fe51..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.m +++ /dev/null @@ -1,93 +0,0 @@ -// UIRefreshControl+AFNetworking.m -// -// Copyright (c) 2014 AFNetworking (http://afnetworking.com) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIRefreshControl+AFNetworking.h" - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import "AFHTTPRequestOperation.h" - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -#import "AFURLSessionManager.h" -#endif - -@implementation UIRefreshControl (AFNetworking) - -#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 70000 -- (void)setRefreshingWithStateOfTask:(NSURLSessionTask *)task { - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - - [notificationCenter removeObserver:self name:AFNetworkingTaskDidResumeNotification object:nil]; - [notificationCenter removeObserver:self name:AFNetworkingTaskDidSuspendNotification object:nil]; - [notificationCenter removeObserver:self name:AFNetworkingTaskDidCompleteNotification object:nil]; - - if (task) { - if (task.state == NSURLSessionTaskStateRunning) { - [self beginRefreshing]; - - [notificationCenter addObserver:self selector:@selector(af_beginRefreshing) name:AFNetworkingTaskDidResumeNotification object:task]; - [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingTaskDidCompleteNotification object:task]; - [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingTaskDidSuspendNotification object:task]; - } else { - [self endRefreshing]; - } - } -} -#endif - -- (void)setRefreshingWithStateOfOperation:(AFURLConnectionOperation *)operation { - NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter]; - - [notificationCenter removeObserver:self name:AFNetworkingOperationDidStartNotification object:nil]; - [notificationCenter removeObserver:self name:AFNetworkingOperationDidFinishNotification object:nil]; - - if (operation) { - if (![operation isFinished]) { - if ([operation isExecuting]) { - [self beginRefreshing]; - } else { - [self endRefreshing]; - } - - [notificationCenter addObserver:self selector:@selector(af_beginRefreshing) name:AFNetworkingOperationDidStartNotification object:operation]; - [notificationCenter addObserver:self selector:@selector(af_endRefreshing) name:AFNetworkingOperationDidFinishNotification object:operation]; - } - } -} - -#pragma mark - - -- (void)af_beginRefreshing { - dispatch_async(dispatch_get_main_queue(), ^{ - [self beginRefreshing]; - }); -} - -- (void)af_endRefreshing { - dispatch_async(dispatch_get_main_queue(), ^{ - [self endRefreshing]; - }); -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h deleted file mode 100644 index 56e58322542..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h +++ /dev/null @@ -1,82 +0,0 @@ -// UIWebView+AFNetworking.h -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import - -@class AFHTTPRequestSerializer, AFHTTPResponseSerializer; -@protocol AFURLRequestSerialization, AFURLResponseSerialization; - -/** - This category adds methods to the UIKit framework's `UIWebView` class. The methods in this category provide increased control over the request cycle, including progress monitoring and success / failure handling. - - @discussion When using these category methods, make sure to assign `delegate` for the web view, which implements `–webView:shouldStartLoadWithRequest:navigationType:` appropriately. This allows for tapped links to be loaded through AFNetworking, and can ensure that `canGoBack` & `canGoForward` update their values correctly. - */ -@interface UIWebView (AFNetworking) - -/** - The request serializer used to serialize requests made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPRequestSerializer`. - */ -@property (nonatomic, strong) AFHTTPRequestSerializer * requestSerializer; - -/** - The response serializer used to serialize responses made with the `-loadRequest:...` category methods. By default, this is an instance of `AFHTTPResponseSerializer`. - */ -@property (nonatomic, strong) AFHTTPResponseSerializer * responseSerializer; - -/** - Asynchronously loads the specified request. - - @param request A URL request identifying the location of the content to load. This must not be `nil`. - @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. - @param success A block object to be executed when the request finishes loading successfully. This block returns the HTML string to be loaded by the web view, and takes two arguments: the response, and the response string. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. - */ -- (void)loadRequest:(NSURLRequest *)request - progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress - success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success - failure:(void (^)(NSError *error))failure; - -/** - Asynchronously loads the data associated with a particular request with a specified MIME type and text encoding. - - @param request A URL request identifying the location of the content to load. This must not be `nil`. - @param MIMEType The MIME type of the content. Defaults to the content type of the response if not specified. - @param textEncodingName The IANA encoding name, as in `utf-8` or `utf-16`. Defaults to the response text encoding if not specified. - @param progress A block object to be called when an undetermined number of bytes have been downloaded from the server. This block has no return value and takes three arguments: the number of bytes read since the last time the download progress block was called, the total bytes read, and the total bytes expected to be read during the request, as initially determined by the expected content size of the `NSHTTPURLResponse` object. This block may be called multiple times, and will execute on the main thread. - @param success A block object to be executed when the request finishes loading successfully. This block returns the data to be loaded by the web view and takes two arguments: the response, and the downloaded data. - @param failure A block object to be executed when the request operation finishes unsuccessfully, or that finishes successfully, but encountered an error while parsing the response data. This block has no return value and takes a single argument: the error that occurred. - */ -- (void)loadRequest:(NSURLRequest *)request - MIMEType:(NSString *)MIMEType - textEncodingName:(NSString *)textEncodingName - progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress - success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success - failure:(void (^)(NSError *error))failure; - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m deleted file mode 100644 index 93eacaa0c1b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.m +++ /dev/null @@ -1,159 +0,0 @@ -// UIWebView+AFNetworking.m -// Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. - -#import "UIWebView+AFNetworking.h" - -#import - -#if defined(__IPHONE_OS_VERSION_MIN_REQUIRED) - -#import "AFHTTPRequestOperation.h" -#import "AFURLResponseSerialization.h" -#import "AFURLRequestSerialization.h" - -@interface UIWebView (_AFNetworking) -@property (readwrite, nonatomic, strong, setter = af_setHTTPRequestOperation:) AFHTTPRequestOperation *af_HTTPRequestOperation; -@end - -@implementation UIWebView (_AFNetworking) - -- (AFHTTPRequestOperation *)af_HTTPRequestOperation { - return (AFHTTPRequestOperation *)objc_getAssociatedObject(self, @selector(af_HTTPRequestOperation)); -} - -- (void)af_setHTTPRequestOperation:(AFHTTPRequestOperation *)operation { - objc_setAssociatedObject(self, @selector(af_HTTPRequestOperation), operation, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -@end - -#pragma mark - - -@implementation UIWebView (AFNetworking) - -- (AFHTTPRequestSerializer *)requestSerializer { - static AFHTTPRequestSerializer *_af_defaultRequestSerializer = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_defaultRequestSerializer = [AFHTTPRequestSerializer serializer]; - }); - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - return objc_getAssociatedObject(self, @selector(requestSerializer)) ?: _af_defaultRequestSerializer; -#pragma clang diagnostic pop -} - -- (void)setRequestSerializer:(AFHTTPRequestSerializer *)requestSerializer { - objc_setAssociatedObject(self, @selector(requestSerializer), requestSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -- (AFHTTPResponseSerializer *)responseSerializer { - static AFHTTPResponseSerializer *_af_defaultResponseSerializer = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - _af_defaultResponseSerializer = [AFHTTPResponseSerializer serializer]; - }); - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - return objc_getAssociatedObject(self, @selector(responseSerializer)) ?: _af_defaultResponseSerializer; -#pragma clang diagnostic pop -} - -- (void)setResponseSerializer:(AFHTTPResponseSerializer *)responseSerializer { - objc_setAssociatedObject(self, @selector(responseSerializer), responseSerializer, OBJC_ASSOCIATION_RETAIN_NONATOMIC); -} - -#pragma mark - - -- (void)loadRequest:(NSURLRequest *)request - progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress - success:(NSString * (^)(NSHTTPURLResponse *response, NSString *HTML))success - failure:(void (^)(NSError *error))failure -{ - [self loadRequest:request MIMEType:nil textEncodingName:nil progress:progress success:^NSData *(NSHTTPURLResponse *response, NSData *data) { - NSStringEncoding stringEncoding = NSUTF8StringEncoding; - if (response.textEncodingName) { - CFStringEncoding encoding = CFStringConvertIANACharSetNameToEncoding((CFStringRef)response.textEncodingName); - if (encoding != kCFStringEncodingInvalidId) { - stringEncoding = CFStringConvertEncodingToNSStringEncoding(encoding); - } - } - - NSString *string = [[NSString alloc] initWithData:data encoding:stringEncoding]; - if (success) { - string = success(response, string); - } - - return [string dataUsingEncoding:stringEncoding]; - } failure:failure]; -} - -- (void)loadRequest:(NSURLRequest *)request - MIMEType:(NSString *)MIMEType - textEncodingName:(NSString *)textEncodingName - progress:(void (^)(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress - success:(NSData * (^)(NSHTTPURLResponse *response, NSData *data))success - failure:(void (^)(NSError *error))failure -{ - NSParameterAssert(request); - - if (self.af_HTTPRequestOperation) { - [self.af_HTTPRequestOperation cancel]; - } - - request = [self.requestSerializer requestBySerializingRequest:request withParameters:nil error:nil]; - - self.af_HTTPRequestOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; - self.af_HTTPRequestOperation.responseSerializer = self.responseSerializer; - - __weak __typeof(self)weakSelf = self; - [self.af_HTTPRequestOperation setDownloadProgressBlock:progress]; - [self.af_HTTPRequestOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id __unused responseObject) { - NSData *data = success ? success(operation.response, operation.responseData) : operation.responseData; - -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Wgnu" - __strong __typeof(weakSelf) strongSelf = weakSelf; - [strongSelf loadData:data MIMEType:(MIMEType ?: [operation.response MIMEType]) textEncodingName:(textEncodingName ?: [operation.response textEncodingName]) baseURL:[operation.response URL]]; - - if ([strongSelf.delegate respondsToSelector:@selector(webViewDidFinishLoad:)]) { - [strongSelf.delegate webViewDidFinishLoad:strongSelf]; - } - -#pragma clang diagnostic pop - } failure:^(AFHTTPRequestOperation * __unused operation, NSError *error) { - if (failure) { - failure(error); - } - }]; - - [self.af_HTTPRequestOperation start]; - - if ([self.delegate respondsToSelector:@selector(webViewDidStartLoad:)]) { - [self.delegate webViewDidStartLoad:self]; - } -} - -@end - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h deleted file mode 100644 index 58b12828396..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.h +++ /dev/null @@ -1,25 +0,0 @@ -// -// EXPRuntimeMatcher.h -// Expecta -// -// Created by Luke Redpath on 26/03/2012. -// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. -// - -#import -#import "EXPMatcher.h" -#import "EXPDefines.h" - -@interface EXPBlockDefinedMatcher : NSObject { - EXPBoolBlock prerequisiteBlock; - EXPBoolBlock matchBlock; - EXPStringBlock failureMessageForToBlock; - EXPStringBlock failureMessageForNotToBlock; -} - -@property(nonatomic, copy) EXPBoolBlock prerequisiteBlock; -@property(nonatomic, copy) EXPBoolBlock matchBlock; -@property(nonatomic, copy) EXPStringBlock failureMessageForToBlock; -@property(nonatomic, copy) EXPStringBlock failureMessageForNotToBlock; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m deleted file mode 100644 index 89bba37732f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPBlockDefinedMatcher.m +++ /dev/null @@ -1,60 +0,0 @@ -// -// EXPRuntimeMatcher.m -// Expecta -// -// Created by Luke Redpath on 26/03/2012. -// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. -// - -#import "EXPBlockDefinedMatcher.h" - -@implementation EXPBlockDefinedMatcher - -- (void)dealloc -{ - self.prerequisiteBlock = nil; - self.matchBlock = nil; - self.failureMessageForToBlock = nil; - self.failureMessageForNotToBlock = nil; - - [super dealloc]; -} - -@synthesize prerequisiteBlock; -@synthesize matchBlock; -@synthesize failureMessageForToBlock; -@synthesize failureMessageForNotToBlock; - -- (BOOL)meetsPrerequesiteFor:(id)actual -{ - if (self.prerequisiteBlock) { - return self.prerequisiteBlock(); - } - return YES; -} - -- (BOOL)matches:(id)actual -{ - if (self.matchBlock) { - return self.matchBlock(); - } - return YES; -} - -- (NSString *)failureMessageForTo:(id)actual -{ - if (self.failureMessageForToBlock) { - return self.failureMessageForToBlock(); - } - return nil; -} - -- (NSString *)failureMessageForNotTo:(id)actual -{ - if (self.failureMessageForNotToBlock) { - return self.failureMessageForNotToBlock(); - } - return nil; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h deleted file mode 100644 index 52af721913c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDefines.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// EXPDefines.h -// Expecta -// -// Created by Luke Redpath on 26/03/2012. -// Copyright (c) 2012 Peter Jihoon Kim. All rights reserved. -// - -#ifndef Expecta_EXPDefines_h -#define Expecta_EXPDefines_h - -typedef void (^EXPBasicBlock)(); -typedef id (^EXPIdBlock)(); -typedef BOOL (^EXPBoolBlock)(); -typedef NSString *(^EXPStringBlock)(); - -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h deleted file mode 100644 index 4bd231c5700..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.h +++ /dev/null @@ -1,13 +0,0 @@ -#import - -@interface EXPDoubleTuple : NSObject { - double *_values; - size_t _size; -} - -@property (nonatomic, assign) double *values; -@property (nonatomic, assign) size_t size; - -- (instancetype)initWithDoubleValues:(double *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m deleted file mode 100644 index 829e354221b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPDoubleTuple.m +++ /dev/null @@ -1,42 +0,0 @@ -#import "EXPDoubleTuple.h" - -@implementation EXPDoubleTuple - -@synthesize values = _values, size = _size; - -- (instancetype)initWithDoubleValues:(double *)values size:(size_t)size { - if ((self = [super init])) { - self.values = malloc(sizeof(double) * size); - memcpy(self.values, values, sizeof(double) * size); - self.size = size; - } - return self; -} - -- (void)dealloc { - free(self.values); - [super dealloc]; -} - -- (BOOL)isEqual:(id)object { - if (![object isKindOfClass:[EXPDoubleTuple class]]) return NO; - EXPDoubleTuple *other = (EXPDoubleTuple *)object; - if (self.size == other.size) { - for (int i = 0; i < self.size; ++i) { - if (self.values[i] != other.values[i]) return NO; - } - return YES; - } - return NO; -} - -- (NSString *)description { - if (self.size == 2) { - return [NSString stringWithFormat:@"Double tuple: {%f, %f}", self.values[0], self.values[1]]; - } else if (self.size == 4) { - return [NSString stringWithFormat:@"Double tuple: {%f, %f, %f, %f}", self.values[0], self.values[1], self.values[2], self.values[3]]; - } - return [NSString stringWithFormat:@"Double tuple of unexpected size %zd, sadly", self.size]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h deleted file mode 100644 index 985c1200d50..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.h +++ /dev/null @@ -1,45 +0,0 @@ -#import -#import "EXPMatcher.h" -#import "EXPDefines.h" - -@interface EXPExpect : NSObject { - EXPIdBlock _actualBlock; - id _testCase; - int _lineNumber; - char *_fileName; - BOOL _negative; - BOOL _asynchronous; - NSTimeInterval _timeout; -} - -@property(nonatomic, copy) EXPIdBlock actualBlock; -@property(nonatomic, readonly) id actual; -@property(nonatomic, assign) id testCase; -@property(nonatomic) int lineNumber; -@property(nonatomic) const char *fileName; -@property(nonatomic) BOOL negative; -@property(nonatomic) BOOL asynchronous; -@property(nonatomic) NSTimeInterval timeout; - -@property(nonatomic, readonly) EXPExpect *to; -@property(nonatomic, readonly) EXPExpect *toNot; -@property(nonatomic, readonly) EXPExpect *notTo; -@property(nonatomic, readonly) EXPExpect *will; -@property(nonatomic, readonly) EXPExpect *willNot; -@property(nonatomic, readonly) EXPExpect *(^after)(NSTimeInterval timeInterval); - -- (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName NS_DESIGNATED_INITIALIZER; -+ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName; - -- (void)applyMatcher:(id)matcher; -- (void)applyMatcher:(id)matcher to:(NSObject **)actual; - -@end - -@interface EXPDynamicPredicateMatcher : NSObject { - EXPExpect *_expectation; - SEL _selector; -} -- (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector NS_DESIGNATED_INITIALIZER; -@property (nonatomic, readonly, copy) void (^dispatch)(void); -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m deleted file mode 100644 index 729794d6934..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPExpect.m +++ /dev/null @@ -1,214 +0,0 @@ -#import "EXPExpect.h" -#import "NSObject+Expecta.h" -#import "Expecta.h" -#import "EXPUnsupportedObject.h" -#import "EXPMatcher.h" -#import "EXPBlockDefinedMatcher.h" -#import - -@implementation EXPExpect - -@dynamic - actual, - to, - toNot, - notTo, - will, - willNot, - after; - -@synthesize - actualBlock=_actualBlock, - testCase=_testCase, - negative=_negative, - asynchronous=_asynchronous, - timeout=_timeout, - lineNumber=_lineNumber, - fileName=_fileName; - -- (instancetype)initWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName { - self = [super init]; - if(self) { - self.actualBlock = actualBlock; - self.testCase = testCase; - self.negative = NO; - self.asynchronous = NO; - self.timeout = [Expecta asynchronousTestTimeout]; - self.lineNumber = lineNumber; - self.fileName = fileName; - } - return self; -} - -- (void)dealloc -{ - _actualBlock = nil; - [super dealloc]; -} - -+ (EXPExpect *)expectWithActualBlock:(id)actualBlock testCase:(id)testCase lineNumber:(int)lineNumber fileName:(const char *)fileName { - return [[[EXPExpect alloc] initWithActualBlock:actualBlock testCase:(id)testCase lineNumber:lineNumber fileName:fileName] autorelease]; -} - -#pragma mark - - -- (EXPExpect *)to { - return self; -} - -- (EXPExpect *)toNot { - self.negative = !self.negative; - return self; -} - -- (EXPExpect *)notTo { - return [self toNot]; -} - -- (EXPExpect *)will { - self.asynchronous = YES; - return self; -} - -- (EXPExpect *)willNot { - return self.will.toNot; -} - -- (EXPExpect *(^)(NSTimeInterval))after -{ - EXPExpect * (^block)(NSTimeInterval) = [^EXPExpect *(NSTimeInterval timeout) { - self.asynchronous = YES; - self.timeout = timeout; - return self; - } copy]; - - return [block autorelease]; -} - -#pragma mark - - -- (id)actual { - if(self.actualBlock) { - return self.actualBlock(); - } - return nil; -} - -- (void)applyMatcher:(id)matcher -{ - id actual = [self actual]; - [self applyMatcher:matcher to:&actual]; -} - -- (void)applyMatcher:(id)matcher to:(NSObject **)actual { - if([*actual isKindOfClass:[EXPUnsupportedObject class]]) { - EXPFail(self.testCase, self.lineNumber, self.fileName, - [NSString stringWithFormat:@"expecting a %@ is not supported", ((EXPUnsupportedObject *)*actual).type]); - } else { - BOOL failed = NO; - if([matcher respondsToSelector:@selector(meetsPrerequesiteFor:)] && - ![matcher meetsPrerequesiteFor:*actual]) { - failed = YES; - } else { - BOOL matchResult = NO; - if(self.asynchronous) { - NSTimeInterval timeOut = self.timeout; - NSDate *expiryDate = [NSDate dateWithTimeIntervalSinceNow:timeOut]; - while(1) { - matchResult = [matcher matches:*actual]; - failed = self.negative ? matchResult : !matchResult; - if(!failed || ([(NSDate *)[NSDate date] compare:expiryDate] == NSOrderedDescending)) { - break; - } - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; - OSMemoryBarrier(); - *actual = self.actual; - } - } else { - matchResult = [matcher matches:*actual]; - } - failed = self.negative ? matchResult : !matchResult; - } - if(failed) { - NSString *message = nil; - - if(self.negative) { - if ([matcher respondsToSelector:@selector(failureMessageForNotTo:)]) { - message = [matcher failureMessageForNotTo:*actual]; - } - } else { - if ([matcher respondsToSelector:@selector(failureMessageForTo:)]) { - message = [matcher failureMessageForTo:*actual]; - } - } - if (message == nil) { - message = @"Match Failed."; - } - - EXPFail(self.testCase, self.lineNumber, self.fileName, message); - } - } - self.negative = NO; -} - -#pragma mark - Dynamic predicate dispatch - -- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector -{ - if ([self.actual respondsToSelector:aSelector]) { - return [self.actual methodSignatureForSelector:aSelector]; - } - return [super methodSignatureForSelector:aSelector]; -} - -- (void)forwardInvocation:(NSInvocation *)anInvocation -{ - if ([self.actual respondsToSelector:anInvocation.selector]) { - EXPDynamicPredicateMatcher *matcher = [[EXPDynamicPredicateMatcher alloc] initWithExpectation:self selector:anInvocation.selector]; - [anInvocation setSelector:@selector(dispatch)]; - [anInvocation invokeWithTarget:matcher]; - [matcher release]; - } - else { - [super forwardInvocation:anInvocation]; - } -} - -@end - -@implementation EXPDynamicPredicateMatcher - -- (instancetype)initWithExpectation:(EXPExpect *)expectation selector:(SEL)selector -{ - if ((self = [super init])) { - _expectation = expectation; - _selector = selector; - } - return self; -} - -- (BOOL)matches:(id)actual -{ - return (BOOL)[actual performSelector:_selector]; -} - -- (NSString *)failureMessageForTo:(id)actual -{ - return [NSString stringWithFormat:@"expected %@ to be true", NSStringFromSelector(_selector)]; -} - -- (NSString *)failureMessageForNotTo:(id)actual -{ - return [NSString stringWithFormat:@"expected %@ to be false", NSStringFromSelector(_selector)]; -} - -- (void (^)(void))dispatch -{ - __block id blockExpectation = _expectation; - - return [[^{ - [blockExpectation applyMatcher:self]; - } copy] autorelease]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h deleted file mode 100644 index ea8ee810b6b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.h +++ /dev/null @@ -1,13 +0,0 @@ -#import - -@interface EXPFloatTuple : NSObject { - float *_values; - size_t _size; -} - -@property (nonatomic, assign) float *values; -@property (nonatomic, assign) size_t size; - -- (instancetype)initWithFloatValues:(float *)values size:(size_t)size NS_DESIGNATED_INITIALIZER; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m deleted file mode 100644 index 8e8505bca8c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPFloatTuple.m +++ /dev/null @@ -1,52 +0,0 @@ -#import "EXPFloatTuple.h" - -@implementation EXPFloatTuple - -@synthesize values = _values, size = _size; - -- (instancetype)initWithFloatValues:(float *)values size:(size_t)size { - if ((self = [super init])) { - self.values = malloc(sizeof(float) * size); - memcpy(self.values, values, sizeof(float) * size); - self.size = size; - } - return self; -} - -- (void)dealloc { - free(self.values); - [super dealloc]; -} - -- (BOOL)isEqual:(id)object { - if (![object isKindOfClass:[EXPFloatTuple class]]) return NO; - EXPFloatTuple *other = (EXPFloatTuple *)object; - if (self.size == other.size) { - for (int i = 0; i < self.size; ++i) { - if (self.values[i] != other.values[i]) return NO; - } - return YES; - } - return NO; -} - -- (NSUInteger)hash -{ - NSUInteger prime = 31; - NSUInteger hash = 0; - for (int i=0; i - -@protocol EXPMatcher - -- (BOOL)matches:(id)actual; - -@optional -- (BOOL)meetsPrerequesiteFor:(id)actual; -- (NSString *)failureMessageForTo:(id)actual; -- (NSString *)failureMessageForNotTo:(id)actual; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h deleted file mode 100644 index 3ad0561efae..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.h +++ /dev/null @@ -1,11 +0,0 @@ -#import - -@interface EXPUnsupportedObject : NSObject { - NSString *_type; -} - -@property (nonatomic, retain) NSString *type; - -- (instancetype)initWithType:(NSString *)type NS_DESIGNATED_INITIALIZER; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m deleted file mode 100644 index 4312beff177..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/EXPUnsupportedObject.m +++ /dev/null @@ -1,20 +0,0 @@ -#import "EXPUnsupportedObject.h" - -@implementation EXPUnsupportedObject - -@synthesize type=_type; - -- (instancetype)initWithType:(NSString *)type { - self = [super init]; - if(self) { - self.type = type; - } - return self; -} - -- (void)dealloc { - self.type = nil; - [super dealloc]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h deleted file mode 100644 index 6e5188e621d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Expecta.h +++ /dev/null @@ -1,15 +0,0 @@ -#import - -//! Project version number for Expecta. -FOUNDATION_EXPORT double ExpectaVersionNumber; - -//! Project version string for Expecta. -FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; - -#import -#import -#import - -// Enable shorthand by default -#define expect(...) EXP_expect((__VA_ARGS__)) -#define failure(...) EXP_failure((__VA_ARGS__)) \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h deleted file mode 100644 index ef2a38aafbc..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.h +++ /dev/null @@ -1,18 +0,0 @@ -#import - -#define EXPObjectify(value) _EXPObjectify(@encode(__typeof__((value))), (value)) -#define EXP_expect(actual) _EXP_expect(self, __LINE__, __FILE__, ^id{ return EXPObjectify((actual)); }) -#define EXPMatcherInterface(matcherName, matcherArguments) _EXPMatcherInterface(matcherName, matcherArguments) -#define EXPMatcherImplementationBegin(matcherName, matcherArguments) _EXPMatcherImplementationBegin(matcherName, matcherArguments) -#define EXPMatcherImplementationEnd _EXPMatcherImplementationEnd -#define EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) - -#define EXP_failure(message) EXPFail(self, __LINE__, __FILE__, message) - - -@interface Expecta : NSObject - -+ (NSTimeInterval)asynchronousTestTimeout; -+ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m deleted file mode 100644 index b51e00a9be5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaObject.m +++ /dev/null @@ -1,15 +0,0 @@ -#import "ExpectaObject.h" - -@implementation Expecta - -static NSTimeInterval _asynchronousTestTimeout = 1.0; - -+ (NSTimeInterval)asynchronousTestTimeout { - return _asynchronousTestTimeout; -} - -+ (void)setAsynchronousTestTimeout:(NSTimeInterval)timeout { - _asynchronousTestTimeout = timeout; -} - -@end \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h deleted file mode 100644 index fb0ef4f460e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.h +++ /dev/null @@ -1,73 +0,0 @@ -#import "EXPExpect.h" -#import "EXPBlockDefinedMatcher.h" - -#ifdef __cplusplus -extern "C" { -#endif - -id _EXPObjectify(const char *type, ...); -EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock); - -void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message); -NSString *EXPDescribeObject(id obj); - -void EXP_prerequisite(EXPBoolBlock block); -void EXP_match(EXPBoolBlock block); -void EXP_failureMessageForTo(EXPStringBlock block); -void EXP_failureMessageForNotTo(EXPStringBlock block); - -#if __has_feature(objc_arc) -#define _EXP_release(x) -#define _EXP_autorelease(x) (x) - -#else -#define _EXP_release(x) [x release] -#define _EXP_autorelease(x) [x autorelease] -#endif - -// workaround for the categories bug: http://developer.apple.com/library/mac/#qa/qa1490/_index.html -#define EXPFixCategoriesBug(name) \ -__attribute__((constructor)) static void EXPFixCategoriesBug##name() {} - -#define _EXPMatcherInterface(matcherName, matcherArguments) \ -@interface EXPExpect (matcherName##Matcher) \ -@property (nonatomic, readonly) void(^ matcherName) matcherArguments; \ -@end - -#define _EXPMatcherImplementationBegin(matcherName, matcherArguments) \ -EXPFixCategoriesBug(EXPMatcher##matcherName##Matcher); \ -@implementation EXPExpect (matcherName##Matcher) \ -@dynamic matcherName;\ -- (void(^) matcherArguments) matcherName { \ - EXPBlockDefinedMatcher *matcher = [[EXPBlockDefinedMatcher alloc] init]; \ - [[[NSThread currentThread] threadDictionary] setObject:matcher forKey:@"EXP_currentMatcher"]; \ - __block id actual = self.actual; \ - __block void (^prerequisite)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_prerequisite(block); }; \ - __block void (^match)(EXPBoolBlock block) = ^(EXPBoolBlock block) { EXP_match(block); }; \ - __block void (^failureMessageForTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForTo(block); }; \ - __block void (^failureMessageForNotTo)(EXPStringBlock block) = ^(EXPStringBlock block) { EXP_failureMessageForNotTo(block); }; \ - prerequisite(nil); match(nil); failureMessageForTo(nil); failureMessageForNotTo(nil); \ - void (^matcherBlock) matcherArguments = [^ matcherArguments { \ - { - -#define _EXPMatcherImplementationEnd \ - } \ - [self applyMatcher:matcher to:&actual]; \ - } copy]; \ - _EXP_release(matcher); \ - return _EXP_autorelease(matcherBlock); \ -} \ -@end - -#define _EXPMatcherAliasImplementation(newMatcherName, oldMatcherName, matcherArguments) \ -EXPFixCategoriesBug(EXPMatcher##newMatcherName##Matcher); \ -@implementation EXPExpect (newMatcherName##Matcher) \ -@dynamic newMatcherName;\ -- (void(^) matcherArguments) newMatcherName { \ - return [self oldMatcherName]; \ -}\ -@end - -#ifdef __cplusplus -} -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m deleted file mode 100644 index 8abe415eda2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/ExpectaSupport.m +++ /dev/null @@ -1,176 +0,0 @@ -#import "ExpectaSupport.h" -#import "NSValue+Expecta.h" -#import "NSObject+Expecta.h" -#import "EXPUnsupportedObject.h" -#import "EXPFloatTuple.h" -#import "EXPDoubleTuple.h" -#import "EXPDefines.h" -#import - -@interface NSObject (ExpectaXCTestRecordFailure) - -// suppress warning -- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected; - -@end - -id _EXPObjectify(const char *type, ...) { - va_list v; - va_start(v, type); - id obj = nil; - if(strcmp(type, @encode(char)) == 0) { - char actual = (char)va_arg(v, int); - obj = @(actual); - } else if(strcmp(type, @encode(_Bool)) == 0) { - _Static_assert(sizeof(_Bool) <= sizeof(int), "Expected _Bool to be subject to vararg type promotion"); - _Bool actual = (_Bool)va_arg(v, int); - obj = @(actual); - } else if(strcmp(type, @encode(double)) == 0) { - double actual = (double)va_arg(v, double); - obj = @(actual); - } else if(strcmp(type, @encode(float)) == 0) { - float actual = (float)va_arg(v, double); - obj = @(actual); - } else if(strcmp(type, @encode(int)) == 0) { - int actual = (int)va_arg(v, int); - obj = @(actual); - } else if(strcmp(type, @encode(long)) == 0) { - long actual = (long)va_arg(v, long); - obj = @(actual); - } else if(strcmp(type, @encode(long long)) == 0) { - long long actual = (long long)va_arg(v, long long); - obj = @(actual); - } else if(strcmp(type, @encode(short)) == 0) { - short actual = (short)va_arg(v, int); - obj = @(actual); - } else if(strcmp(type, @encode(unsigned char)) == 0) { - unsigned char actual = (unsigned char)va_arg(v, unsigned int); - obj = @(actual); - } else if(strcmp(type, @encode(unsigned int)) == 0) { - unsigned int actual = (int)va_arg(v, unsigned int); - obj = @(actual); - } else if(strcmp(type, @encode(unsigned long)) == 0) { - unsigned long actual = (unsigned long)va_arg(v, unsigned long); - obj = @(actual); - } else if(strcmp(type, @encode(unsigned long long)) == 0) { - unsigned long long actual = (unsigned long long)va_arg(v, unsigned long long); - obj = @(actual); - } else if(strcmp(type, @encode(unsigned short)) == 0) { - unsigned short actual = (unsigned short)va_arg(v, unsigned int); - obj = @(actual); - } else if(strstr(type, @encode(EXPBasicBlock)) != NULL) { - // @encode(EXPBasicBlock) returns @? as of clang 4.1. - // This condition must occur before the test for id/class type, - // otherwise blocks will be treated as vanilla objects. - id actual = va_arg(v, EXPBasicBlock); - obj = [[actual copy] autorelease]; - } else if((strstr(type, @encode(id)) != NULL) || (strstr(type, @encode(Class)) != 0)) { - id actual = va_arg(v, id); - obj = actual; - } else if(strcmp(type, @encode(__typeof__(nil))) == 0) { - obj = nil; - } else if(strstr(type, "ff}{") != NULL) { //TODO: of course this only works for a 2x2 e.g. CGRect - obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[4]) size:4] autorelease]; - } else if(strstr(type, "=ff}") != NULL) { - obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[2]) size:2] autorelease]; - } else if(strstr(type, "=ffff}") != NULL) { - obj = [[[EXPFloatTuple alloc] initWithFloatValues:(float *)va_arg(v, float[4]) size:4] autorelease]; - } else if(strstr(type, "dd}{") != NULL) { //TODO: same here - obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[4]) size:4] autorelease]; - } else if(strstr(type, "=dd}") != NULL) { - obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[2]) size:2] autorelease]; - } else if(strstr(type, "=dddd}") != NULL) { - obj = [[[EXPDoubleTuple alloc] initWithDoubleValues:(double *)va_arg(v, double[4]) size:4] autorelease]; - } else if(type[0] == '{') { - EXPUnsupportedObject *actual = [[[EXPUnsupportedObject alloc] initWithType:@"struct"] autorelease]; - obj = actual; - } else if(type[0] == '(') { - EXPUnsupportedObject *actual = [[[EXPUnsupportedObject alloc] initWithType:@"union"] autorelease]; - obj = actual; - } else { - void *actual = va_arg(v, void *); - obj = (actual == NULL ? nil :[NSValue valueWithPointer:actual]); - } - if([obj isKindOfClass:[NSValue class]] && ![obj isKindOfClass:[NSNumber class]]) { - [(NSValue *)obj set_EXP_objCType:type]; - } - va_end(v); - return obj; -} - -EXPExpect *_EXP_expect(id testCase, int lineNumber, const char *fileName, EXPIdBlock actualBlock) { - return [EXPExpect expectWithActualBlock:actualBlock testCase:testCase lineNumber:lineNumber fileName:fileName]; -} - -void EXPFail(id testCase, int lineNumber, const char *fileName, NSString *message) { - NSLog(@"%s:%d %@", fileName, lineNumber, message); - NSString *reason = [NSString stringWithFormat:@"%s:%d %@", fileName, lineNumber, message]; - NSException *exception = [NSException exceptionWithName:@"Expecta Error" reason:reason userInfo:nil]; - - if(testCase && [testCase respondsToSelector:@selector(recordFailureWithDescription:inFile:atLine:expected:)]){ - [testCase recordFailureWithDescription:message - inFile:@(fileName) - atLine:lineNumber - expected:NO]; - } else { - [exception raise]; - } -} - -NSString *EXPDescribeObject(id obj) { - if(obj == nil) { - return @"nil/null"; - } else if([obj isKindOfClass:[NSValue class]] && ![obj isKindOfClass:[NSNumber class]]) { - const char *type = [(NSValue *)obj _EXP_objCType]; - if(type) { - if(strcmp(type, @encode(SEL)) == 0) { - return [NSString stringWithFormat:@"@selector(%@)", NSStringFromSelector([obj pointerValue])]; - } else if(strcmp(type, @encode(Class)) == 0) { - return NSStringFromClass([obj pointerValue]); - } - } - } - NSString *description = [obj description]; - if([obj isKindOfClass:[NSArray class]]) { - NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; - for(id o in obj) { - [arr addObject:EXPDescribeObject(o)]; - } - description = [NSString stringWithFormat:@"(%@)", [arr componentsJoinedByString:@", "]]; - } else if([obj isKindOfClass:[NSSet class]] || [obj isKindOfClass:[NSOrderedSet class]]) { - NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; - for(id o in obj) { - [arr addObject:EXPDescribeObject(o)]; - } - description = [NSString stringWithFormat:@"{(%@)}", [arr componentsJoinedByString:@", "]]; - } else if([obj isKindOfClass:[NSDictionary class]]) { - NSMutableArray *arr = [NSMutableArray arrayWithCapacity:[obj count]]; - for(id k in obj) { - id v = obj[k]; - [arr addObject:[NSString stringWithFormat:@"%@ = %@;",EXPDescribeObject(k), EXPDescribeObject(v)]]; - } - description = [NSString stringWithFormat:@"{%@}", [arr componentsJoinedByString:@" "]]; - } else if([obj isKindOfClass:[NSAttributedString class]]) { - description = [obj string]; - } else { - description = [description stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"]; - } - return description; -} - -void EXP_prerequisite(EXPBoolBlock block) { - [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setPrerequisiteBlock:block]; -} - -void EXP_match(EXPBoolBlock block) { - [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setMatchBlock:block]; -} - -void EXP_failureMessageForTo(EXPStringBlock block) { - [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setFailureMessageForToBlock:block]; -} - -void EXP_failureMessageForNotTo(EXPStringBlock block) { - [[[NSThread currentThread] threadDictionary][@"EXP_currentMatcher"] setFailureMessageForNotToBlock:block]; -} - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h deleted file mode 100644 index 5780ff6322c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.h +++ /dev/null @@ -1,4 +0,0 @@ -#import - -BOOL EXPIsValuePointer(NSValue *value); -BOOL EXPIsNumberFloat(NSNumber *number); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m deleted file mode 100644 index cec0343447d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatcherHelpers.m +++ /dev/null @@ -1,9 +0,0 @@ -#import "EXPMatcherHelpers.h" - -BOOL EXPIsValuePointer(NSValue *value) { - return [value objCType][0] == @encode(void *)[0]; -} - -BOOL EXPIsNumberFloat(NSNumber *number) { - return strcmp([number objCType], @encode(float)) == 0; -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h deleted file mode 100644 index f683d6b085a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h +++ /dev/null @@ -1,7 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beCloseToWithin, (id expected, id within)); -EXPMatcherInterface(beCloseToWithin, (id expected, id within)); - -#define beCloseTo(expected) _beCloseToWithin(EXPObjectify((expected)), nil) -#define beCloseToWithin(expected, range) _beCloseToWithin(EXPObjectify((expected)), EXPObjectify((range))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m deleted file mode 100644 index c55431aa686..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.m +++ /dev/null @@ -1,49 +0,0 @@ -#import "EXPMatchers+beCloseTo.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beCloseToWithin, (id expected, id within)) { - prerequisite(^BOOL{ - return [actual isKindOfClass:[NSNumber class]] && - [expected isKindOfClass:[NSNumber class]] && - ([within isKindOfClass:[NSNumber class]] || (within == nil)); - }); - - match(^BOOL{ - double actualValue = [actual doubleValue]; - double expectedValue = [expected doubleValue]; - - if (within != nil) { - double withinValue = [within doubleValue]; - double lowerBound = expectedValue - withinValue; - double upperBound = expectedValue + withinValue; - return (actualValue >= lowerBound) && (actualValue <= upperBound); - } else { - double diff = fabs(actualValue - expectedValue); - actualValue = fabs(actualValue); - expectedValue = fabs(expectedValue); - double largest = (expectedValue > actualValue) ? expectedValue : actualValue; - return (diff <= largest * FLT_EPSILON); - } - }); - - failureMessageForTo(^NSString *{ - if (within) { - return [NSString stringWithFormat:@"expected %@ to be close to %@ within %@", - EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; - } else { - return [NSString stringWithFormat:@"expected %@ to be close to %@", - EXPDescribeObject(actual), EXPDescribeObject(expected)]; - } - }); - - failureMessageForNotTo(^NSString *{ - if (within) { - return [NSString stringWithFormat:@"expected %@ not to be close to %@ within %@", - EXPDescribeObject(actual), EXPDescribeObject(expected), EXPDescribeObject(within)]; - } else { - return [NSString stringWithFormat:@"expected %@ not to be close to %@", - EXPDescribeObject(actual), EXPDescribeObject(expected)]; - } - }); -} -EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h deleted file mode 100644 index 89c8e003e18..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beFalsy, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m deleted file mode 100644 index 382cab8b9da..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beFalsy.m +++ /dev/null @@ -1,24 +0,0 @@ -#import "EXPMatchers+beFalsy.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(beFalsy, (void)) { - match(^BOOL{ - if([actual isKindOfClass:[NSNumber class]]) { - return ![(NSNumber *)actual boolValue]; - } else if([actual isKindOfClass:[NSValue class]]) { - if(EXPIsValuePointer((NSValue *)actual)) { - return ![(NSValue *)actual pointerValue]; - } - } - return !actual; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: a falsy value, got: %@, which is truthy", EXPDescribeObject(actual)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: a non-falsy value, got: %@, which is falsy", EXPDescribeObject(actual)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h deleted file mode 100644 index a2f9fbac4ad..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beGreaterThan, (id expected)); -EXPMatcherInterface(beGreaterThan, (id expected)); - -#define beGreaterThan(expected) _beGreaterThan(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m deleted file mode 100644 index d7253878b8e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.m +++ /dev/null @@ -1,20 +0,0 @@ -#import "EXPMatchers+beGreaterThan.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beGreaterThan, (id expected)) { - match(^BOOL{ - if ([actual respondsToSelector:@selector(compare:)]) { - return [actual compare:expected] == NSOrderedDescending; - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ not to be greater than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h deleted file mode 100644 index 3e91c64cd73..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beGreaterThanOrEqualTo, (id expected)); -EXPMatcherInterface(beGreaterThanOrEqualTo, (id expected)); - -#define beGreaterThanOrEqualTo(expected) _beGreaterThanOrEqualTo(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m deleted file mode 100644 index 32763449cad..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m +++ /dev/null @@ -1,20 +0,0 @@ -#import "EXPMatchers+beGreaterThanOrEqualTo.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beGreaterThanOrEqualTo, (id expected)) { - match(^BOOL{ - if ([actual respondsToSelector:@selector(compare:)]) { - return [actual compare:expected] != NSOrderedAscending; - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ not to be greater than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h deleted file mode 100644 index d13619f84fa..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beIdenticalTo, (void *expected)); -EXPMatcherInterface(beIdenticalTo, (void *expected)); // to aid code completion - -#if __has_feature(objc_arc) -#define beIdenticalTo(expected) _beIdenticalTo((__bridge void*)expected) -#else -#define beIdenticalTo(expected) _beIdenticalTo(expected) -#endif diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m deleted file mode 100644 index b62b0fe6a1f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.m +++ /dev/null @@ -1,24 +0,0 @@ -#import "EXPMatchers+equal.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beIdenticalTo, (void *expected)) { - match(^BOOL{ - if(actual == expected) { - return YES; - } else if([actual isKindOfClass:[NSValue class]] && EXPIsValuePointer((NSValue *)actual)) { - if([(NSValue *)actual pointerValue] == expected) { - return YES; - } - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: <%p>, got: <%p>", expected, actual]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: not <%p>, got: <%p>", expected, actual]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h deleted file mode 100644 index 8ea990e23b3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); -EXPMatcherInterface(beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)); - -#define beInTheRangeOf(expectedLowerBound, expectedUpperBound) _beInTheRangeOf(EXPObjectify((expectedLowerBound)), EXPObjectify((expectedUpperBound))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m deleted file mode 100644 index 1631f24806a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.m +++ /dev/null @@ -1,30 +0,0 @@ -#import "EXPMatchers+beInTheRangeOf.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beInTheRangeOf, (id expectedLowerBound, id expectedUpperBound)) { - match(^BOOL{ - if ([actual respondsToSelector:@selector(compare:)]) { - NSComparisonResult compareLowerBound = [expectedLowerBound compare: actual]; - NSComparisonResult compareUpperBound = [expectedUpperBound compare: actual]; - if (compareLowerBound == NSOrderedSame) { - return YES; - } - if (compareUpperBound == NSOrderedSame) { - return YES; - } - if ((compareLowerBound == NSOrderedAscending) && (compareUpperBound == NSOrderedDescending)) { - return YES; - } - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ not to be in the range [%@, %@] (inclusive)", EXPDescribeObject(actual), EXPDescribeObject(expectedLowerBound), EXPDescribeObject(expectedUpperBound)]; - }); -} -EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h deleted file mode 100644 index a8e8175dc52..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beInstanceOf, (Class expected)); -EXPMatcherInterface(beAnInstanceOf, (Class expected)); -EXPMatcherInterface(beMemberOf, (Class expected)); -EXPMatcherInterface(beAMemberOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m deleted file mode 100644 index 9535e1e719e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.m +++ /dev/null @@ -1,31 +0,0 @@ -#import "EXPMatchers+beInstanceOf.h" - -EXPMatcherImplementationBegin(beInstanceOf, (Class expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - - prerequisite(^BOOL{ - return !(actualIsNil || expectedIsNil); - }); - - match(^BOOL{ - return [actual isMemberOfClass:expected]; - }); - - failureMessageForTo(^NSString *{ - if(actualIsNil) return @"the actual value is nil/null"; - if(expectedIsNil) return @"the expected value is nil/null"; - return [NSString stringWithFormat:@"expected: an instance of %@, got: an instance of %@", [expected class], [actual class]]; - }); - - failureMessageForNotTo(^NSString *{ - if(actualIsNil) return @"the actual value is nil/null"; - if(expectedIsNil) return @"the expected value is nil/null"; - return [NSString stringWithFormat:@"expected: not an instance of %@, got: an instance of %@", [expected class], [actual class]]; - }); -} -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(beAnInstanceOf, beInstanceOf, (Class expected)); -EXPMatcherAliasImplementation(beMemberOf, beInstanceOf, (Class expected)); -EXPMatcherAliasImplementation(beAMemberOf, beInstanceOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h deleted file mode 100644 index b8623e0b584..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beKindOf, (Class expected)); -EXPMatcherInterface(beAKindOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m deleted file mode 100644 index f13ffb54a8d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beKindOf.m +++ /dev/null @@ -1,29 +0,0 @@ -#import "EXPMatchers+beKindOf.h" - -EXPMatcherImplementationBegin(beKindOf, (Class expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - - prerequisite(^BOOL{ - return !(actualIsNil || expectedIsNil); - }); - - match(^BOOL{ - return [actual isKindOfClass:expected]; - }); - - failureMessageForTo(^NSString *{ - if(actualIsNil) return @"the actual value is nil/null"; - if(expectedIsNil) return @"the expected value is nil/null"; - return [NSString stringWithFormat:@"expected: a kind of %@, got: an instance of %@, which is not a kind of %@", [expected class], [actual class], [expected class]]; - }); - - failureMessageForNotTo(^NSString *{ - if(actualIsNil) return @"the actual value is nil/null"; - if(expectedIsNil) return @"the expected value is nil/null"; - return [NSString stringWithFormat:@"expected: not a kind of %@, got: an instance of %@, which is a kind of %@", [expected class], [actual class], [expected class]]; - }); -} -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(beAKindOf, beKindOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h deleted file mode 100644 index 5ed0a24c326..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beLessThan, (id expected)); -EXPMatcherInterface(beLessThan, (id expected)); - -#define beLessThan(expected) _beLessThan(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m deleted file mode 100644 index 39b68830db8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThan.m +++ /dev/null @@ -1,20 +0,0 @@ -#import "EXPMatchers+beLessThan.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beLessThan, (id expected)) { - match(^BOOL{ - if ([actual respondsToSelector:@selector(compare:)]) { - return [actual compare:expected] == NSOrderedAscending; - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ not to be less than %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h deleted file mode 100644 index 2c31341503f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h +++ /dev/null @@ -1,6 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_beLessThanOrEqualTo, (id expected)); -EXPMatcherInterface(beLessThanOrEqualTo, (id expected)); - -#define beLessThanOrEqualTo(expected) _beLessThanOrEqualTo(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m deleted file mode 100644 index 401c194bdf1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m +++ /dev/null @@ -1,20 +0,0 @@ -#import "EXPMatchers+beLessThanOrEqualTo.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_beLessThanOrEqualTo, (id expected)) { - match(^BOOL{ - if ([actual respondsToSelector:@selector(compare:)]) { - return [actual compare:expected] != NSOrderedDescending; - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ not to be less than or equal to %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h deleted file mode 100644 index 6d781620db2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beNil, (void)); -EXPMatcherInterface(beNull, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m deleted file mode 100644 index 161067ff03c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beNil.m +++ /dev/null @@ -1,18 +0,0 @@ -#import "EXPMatchers+beNil.h" - -EXPMatcherImplementationBegin(beNil, (void)) { - match(^BOOL{ - return actual == nil; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: nil/null, got: %@", EXPDescribeObject(actual)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: not nil/null, got: %@", EXPDescribeObject(actual)]; - }); -} -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(beNull, beNil, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h deleted file mode 100644 index 65401c59395..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beSubclassOf, (Class expected)); -EXPMatcherInterface(beASubclassOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m deleted file mode 100644 index d4976d582ba..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.m +++ /dev/null @@ -1,29 +0,0 @@ -#import "EXPMatchers+beSubclassOf.h" -#import "NSValue+Expecta.h" -#import - -EXPMatcherImplementationBegin(beSubclassOf, (Class expected)) { - __block BOOL actualIsClass = YES; - - prerequisite(^BOOL { - actualIsClass = class_isMetaClass(object_getClass(actual)); - return actualIsClass; - }); - - match(^BOOL{ - return [actual isSubclassOfClass:expected]; - }); - - failureMessageForTo(^NSString *{ - if(!actualIsClass) return @"the actual value is not a Class"; - return [NSString stringWithFormat:@"expected: a subclass of %@, got: a class %@, which is not a subclass of %@", [expected class], actual, [expected class]]; - }); - - failureMessageForNotTo(^NSString *{ - if(!actualIsClass) return @"the actual value is not a Class"; - return [NSString stringWithFormat:@"expected: not a subclass of %@, got: a class %@, which is a subclass of %@", [expected class], actual, [expected class]]; - }); -} -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(beASubclassOf, beSubclassOf, (Class expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h deleted file mode 100644 index f9a47ba6619..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beSupersetOf, (id subset)); - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m deleted file mode 100644 index f4d05c09dad..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.m +++ /dev/null @@ -1,62 +0,0 @@ -#import "EXPMatchers+contain.h" - -EXPMatcherImplementationBegin(beSupersetOf, (id subset)) { - BOOL actualIsCompatible = [actual isKindOfClass:[NSDictionary class]] || [actual respondsToSelector:@selector(containsObject:)]; - BOOL subsetIsNil = (subset == nil); - - // For some instances the isKindOfClass: method returns false, even though - // they are both actually dictionaries. e.g. Comparing a NSCFDictionary and a - // NSDictionary. - // Or in cases when you compare NSMutableArray (which implementation is __NSArrayM:NSMutableArray:NSArray) - // and NSArray (which implementation is __NSArrayI:NSArray) - BOOL bothAreIdenticalCollectionClasses = ([actual isKindOfClass:[NSDictionary class]] && [subset isKindOfClass:[NSDictionary class]]) || - ([actual isKindOfClass:[NSArray class]] && [subset isKindOfClass:[NSArray class]]) || - ([actual isKindOfClass:[NSSet class]] && [subset isKindOfClass:[NSSet class]]) || - ([actual isKindOfClass:[NSOrderedSet class]] && [subset isKindOfClass:[NSOrderedSet class]]); - - BOOL classMatches = bothAreIdenticalCollectionClasses || [subset isKindOfClass:[actual class]]; - - prerequisite(^BOOL{ - return actualIsCompatible && !subsetIsNil && classMatches; - }); - - match(^BOOL{ - if(!actualIsCompatible) return NO; - - if([actual isKindOfClass:[NSDictionary class]]) { - for (id key in subset) { - id actualValue = [actual valueForKey:key]; - id subsetValue = [subset valueForKey:key]; - - if (![subsetValue isEqual:actualValue]) return NO; - } - } else { - for (id object in subset) { - if (![actual containsObject:object]) return NO; - } - } - - return YES; - }); - - failureMessageForTo(^NSString *{ - if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; - - if(subsetIsNil) return @"the expected value is nil/null"; - - if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; - - return [NSString stringWithFormat:@"expected %@ to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; - }); - - failureMessageForNotTo(^NSString *{ - if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSDictionary and does not implement -containsObject:", EXPDescribeObject(actual)]; - - if(subsetIsNil) return @"the expected value is nil/null"; - - if(!classMatches) return [NSString stringWithFormat:@"%@ does not match the class of %@", EXPDescribeObject(subset), EXPDescribeObject(actual)]; - - return [NSString stringWithFormat:@"expected %@ not to be a superset of %@", EXPDescribeObject(actual), EXPDescribeObject(subset)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h deleted file mode 100644 index 1e4e78f9b0e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beTruthy, (void)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m deleted file mode 100644 index 02fa6e79f3a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beTruthy.m +++ /dev/null @@ -1,24 +0,0 @@ -#import "EXPMatchers+beTruthy.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(beTruthy, (void)) { - match(^BOOL{ - if([actual isKindOfClass:[NSNumber class]]) { - return !![(NSNumber *)actual boolValue]; - } else if([actual isKindOfClass:[NSValue class]]) { - if(EXPIsValuePointer((NSValue *)actual)) { - return !![(NSValue *)actual pointerValue]; - } - } - return !!actual; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: a truthy value, got: %@, which is falsy", EXPDescribeObject(actual)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: a non-truthy value, got: %@, which is truthy", EXPDescribeObject(actual)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h deleted file mode 100644 index 07ddd6c2dc8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(beginWith, (id expected)); -EXPMatcherInterface(startWith, (id expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m deleted file mode 100644 index a7c9e5996c3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+beginWith.m +++ /dev/null @@ -1,51 +0,0 @@ -#import "EXPMatchers+beginWith.h" - -EXPMatcherImplementationBegin(beginWith, (id expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same - BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) - || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) - || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); - - prerequisite(^BOOL { - return actualAndExpectedAreCompatible; - }); - - match(^BOOL { - if ([actual isKindOfClass:[NSString class]]) { - return [actual hasPrefix:expected]; - } else if ([actual isKindOfClass:[NSArray class]]) { - if ([expected count] > [actual count] || [expected count] == 0) { - return NO; - } - NSArray *subArray = [actual subarrayWithRange:NSMakeRange(0, [expected count])]; - return [subArray isEqualToArray:expected]; - } else { - if ([expected count] > [actual count] || [expected count] == 0) { - return NO; - } - - NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange(0, [expected count]) copyItems:NO]; - return [subset isEqualToOrderedSet:expected]; - } - }); - - failureMessageForTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNil) return @"the expected value is nil/null"; - if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; - return [NSString stringWithFormat:@"expected: %@ to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNil) return @"the expected value is nil/null"; - if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; - - return [NSString stringWithFormat:@"expected: %@ not to begin with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(startWith, beginWith, (id expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h deleted file mode 100644 index efc7b9823be..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(conformTo, (Protocol *expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m deleted file mode 100644 index b88014d6504..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+conformTo.m +++ /dev/null @@ -1,33 +0,0 @@ -#import "EXPMatchers+conformTo.h" -#import "NSValue+Expecta.h" -#import - -EXPMatcherImplementationBegin(conformTo, (Protocol *expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - - prerequisite(^BOOL{ - return !(actualIsNil || expectedIsNil); - }); - - match(^BOOL{ - return [actual conformsToProtocol:expected]; - }); - - failureMessageForTo(^NSString *{ - if(actualIsNil) return @"the object is nil/null"; - if(expectedIsNil) return @"the protocol is nil/null"; - - NSString *name = NSStringFromProtocol(expected); - return [NSString stringWithFormat:@"expected: %@ to conform to %@", actual, name]; - }); - - failureMessageForNotTo(^NSString *{ - if(actualIsNil) return @"the object is nil/null"; - if(expectedIsNil) return @"the protocol is nil/null"; - - NSString *name = NSStringFromProtocol(expected); - return [NSString stringWithFormat:@"expected: %@ not to conform to %@", actual, name]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h deleted file mode 100644 index 580314612eb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_contain, (id expected)); -EXPMatcherInterface(contain, (id expected)); // to aid code completion -#define contain(expected) _contain(EXPObjectify((expected))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m deleted file mode 100644 index b8a6f869048..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+contain.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "EXPMatchers+contain.h" - -EXPMatcherImplementationBegin(_contain, (id expected)) { - BOOL actualIsCompatible = [actual isKindOfClass:[NSString class]] || [actual conformsToProtocol:@protocol(NSFastEnumeration)]; - BOOL expectedIsNil = (expected == nil); - - prerequisite(^BOOL{ - return actualIsCompatible && !expectedIsNil; - }); - - match(^BOOL{ - if(actualIsCompatible) { - if([actual isKindOfClass:[NSString class]]) { - return [(NSString *)actual rangeOfString:[expected description]].location != NSNotFound; - } else { - for (id object in actual) { - if ([object isEqual:expected]) { - return YES; - } - } - } - } - return NO; - }); - - failureMessageForTo(^NSString *{ - if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; - if(expectedIsNil) return @"the expected value is nil/null"; - return [NSString stringWithFormat:@"expected %@ to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString or NSFastEnumeration", EXPDescribeObject(actual)]; - if(expectedIsNil) return @"the expected value is nil/null"; - return [NSString stringWithFormat:@"expected %@ not to contain %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h deleted file mode 100644 index 228cea95dd2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(endWith, (id expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m deleted file mode 100644 index f34bd9002e1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+endWith.m +++ /dev/null @@ -1,49 +0,0 @@ -#import "EXPMatchers+endWith.h" - -EXPMatcherImplementationBegin(endWith, (id expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - //This condition allows the comparison of an immutable string or ordered collection to the mutable type of the same - BOOL actualAndExpectedAreCompatible = (([actual isKindOfClass:[NSString class]] && [expected isKindOfClass:[NSString class]]) - || ([actual isKindOfClass:[NSArray class]] && [expected isKindOfClass:[NSArray class]]) - || ([actual isKindOfClass:[NSOrderedSet class]] && [expected isKindOfClass:[NSOrderedSet class]])); - - prerequisite(^BOOL { - return actualAndExpectedAreCompatible; - }); - - match(^BOOL { - if ([actual isKindOfClass:[NSString class]]) { - return [actual hasSuffix:expected]; - } else if ([actual isKindOfClass:[NSArray class]]) { - if ([expected count] > [actual count] || [expected count] == 0) { - return NO; - } - NSArray *subArray = [actual subarrayWithRange:NSMakeRange([actual count] - [expected count], [expected count])]; - return [subArray isEqualToArray:expected]; - } else { - if ([expected count] > [actual count] || [expected count] == 0) { - return NO; - } - - NSOrderedSet *subset = [NSOrderedSet orderedSetWithOrderedSet:actual range:NSMakeRange([actual count] - [expected count], [expected count]) copyItems:NO]; - return [subset isEqualToOrderedSet:expected]; - } - }); - - failureMessageForTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNil) return @"the expected value is nil/null"; - if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; - return [NSString stringWithFormat:@"expected: %@ to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNil) return @"the expected value is nil/null"; - if (!actualAndExpectedAreCompatible) return [NSString stringWithFormat:@"%@ and %@ are not instances of one of %@, %@, or %@", EXPDescribeObject(actual), EXPDescribeObject(expected), [NSString class], [NSArray class], [NSOrderedSet class]]; - - return [NSString stringWithFormat:@"expected: %@ not to end with %@", EXPDescribeObject(actual), EXPDescribeObject(expected)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h deleted file mode 100644 index b4047c0eadd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.h +++ /dev/null @@ -1,5 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(_equal, (id expected)); -EXPMatcherInterface(equal, (id expected)); // to aid code completion -#define equal(...) _equal(EXPObjectify((__VA_ARGS__))) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m deleted file mode 100644 index a610df02903..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+equal.m +++ /dev/null @@ -1,31 +0,0 @@ -#import "EXPMatchers+equal.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(_equal, (id expected)) { - match(^BOOL{ - if((actual == expected) || [actual isEqual:expected]) { - return YES; - } else if([actual isKindOfClass:[NSNumber class]] && [expected isKindOfClass:[NSNumber class]]) { - if([actual isKindOfClass:[NSDecimalNumber class]] || [expected isKindOfClass:[NSDecimalNumber class]]) { - NSDecimalNumber *actualDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) actual decimalValue]]; - NSDecimalNumber *expectedDecimalNumber = [NSDecimalNumber decimalNumberWithDecimal:[(NSNumber *) expected decimalValue]]; - return [actualDecimalNumber isEqualToNumber:expectedDecimalNumber]; - } - else { - if(EXPIsNumberFloat((NSNumber *)actual) || EXPIsNumberFloat((NSNumber *)expected)) { - return [(NSNumber *)actual floatValue] == [(NSNumber *)expected floatValue]; - } - } - } - return NO; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: not %@, got: %@", EXPDescribeObject(expected), EXPDescribeObject(actual)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h deleted file mode 100644 index 2e9aef570ea..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h +++ /dev/null @@ -1,10 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(haveCountOf, (NSUInteger expected)); -EXPMatcherInterface(haveCount, (NSUInteger expected)); -EXPMatcherInterface(haveACountOf, (NSUInteger expected)); -EXPMatcherInterface(haveLength, (NSUInteger expected)); -EXPMatcherInterface(haveLengthOf, (NSUInteger expected)); -EXPMatcherInterface(haveALengthOf, (NSUInteger expected)); - -#define beEmpty() haveCountOf(0) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m deleted file mode 100644 index ecc483173cd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.m +++ /dev/null @@ -1,42 +0,0 @@ -#import "EXPMatchers+haveCountOf.h" - -EXPMatcherImplementationBegin(haveCountOf, (NSUInteger expected)) { - BOOL actualIsStringy = [actual isKindOfClass:[NSString class]] || [actual isKindOfClass:[NSAttributedString class]]; - BOOL actualIsCompatible = actualIsStringy || [actual respondsToSelector:@selector(count)]; - - prerequisite(^BOOL{ - return actualIsCompatible; - }); - - NSUInteger (^count)(id) = ^(id actual) { - if(actualIsStringy) { - return [actual length]; - } else { - return [actual count]; - } - }; - - match(^BOOL{ - if(actualIsCompatible) { - return count(actual) == expected; - } - return NO; - }); - - failureMessageForTo(^NSString *{ - if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; - return [NSString stringWithFormat:@"expected %@ to have a count of %zi but got %zi", EXPDescribeObject(actual), expected, count(actual)]; - }); - - failureMessageForNotTo(^NSString *{ - if(!actualIsCompatible) return [NSString stringWithFormat:@"%@ is not an instance of NSString, NSAttributedString, NSArray, NSSet, NSOrderedSet, or NSDictionary", EXPDescribeObject(actual)]; - return [NSString stringWithFormat:@"expected %@ not to have a count of %zi", EXPDescribeObject(actual), expected]; - }); -} -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(haveCount, haveCountOf, (NSUInteger expected)); -EXPMatcherAliasImplementation(haveACountOf, haveCountOf, (NSUInteger expected)); -EXPMatcherAliasImplementation(haveLength, haveCountOf, (NSUInteger expected)); -EXPMatcherAliasImplementation(haveLengthOf, haveCountOf, (NSUInteger expected)); -EXPMatcherAliasImplementation(haveALengthOf, haveCountOf, (NSUInteger expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h deleted file mode 100644 index 4f0e8e475f4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(match, (NSString *expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m deleted file mode 100644 index a21746731b9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+match.m +++ /dev/null @@ -1,38 +0,0 @@ -#import "EXPMatchers+match.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(match, (NSString *expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - - __block NSRegularExpression *regex = nil; - __block NSError *regexError = nil; - - prerequisite (^BOOL { - BOOL nilInput = (actualIsNil || expectedIsNil); - if (!nilInput) { - regex = [NSRegularExpression regularExpressionWithPattern:expected options:0 error:®exError]; - } - return !nilInput && regex; - }); - - match(^BOOL { - NSRange range = [regex rangeOfFirstMatchInString:actual options:0 range:NSMakeRange(0, [actual length])]; - return !NSEqualRanges(range, NSMakeRange(NSNotFound, 0)); - }); - - failureMessageForTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNil) return @"the expression is nil/null"; - if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; - return [NSString stringWithFormat:@"expected: %@ to match to %@", EXPDescribeObject(actual), expected]; - }); - - failureMessageForNotTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNil) return @"the expression is nil/null"; - if (regexError) return [NSString stringWithFormat:@"unable to create regular expression from given parameter: %@", [regexError localizedDescription]]; - return [NSString stringWithFormat:@"expected: %@ not to match to %@", EXPDescribeObject(actual), expected]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h deleted file mode 100644 index cdba4a34754..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(postNotification, (id expectedNotification)); -EXPMatcherInterface(notify, (id expectedNotification)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m deleted file mode 100644 index 6e517c410ac..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+postNotification.m +++ /dev/null @@ -1,88 +0,0 @@ -#import "EXPMatchers+postNotification.h" - -@implementation NSNotification (EXPEquality) - -- (BOOL)exp_isFunctionallyEqualTo:(NSNotification *)otherNotification -{ - if (![otherNotification isKindOfClass:[NSNotification class]]) return NO; - - BOOL namesMatch = [otherNotification.name isEqualToString:self.name]; - - BOOL objectsMatch = YES; - if (otherNotification.object || self.object) { - objectsMatch = [otherNotification.object isEqual:self.object]; - } - - BOOL userInfoMatches = YES; - if (otherNotification.userInfo || self.userInfo) { - userInfoMatches = [otherNotification.userInfo isEqual:self.userInfo]; - } - - return (namesMatch && objectsMatch && userInfoMatches); -} - -@end - -EXPMatcherImplementationBegin(postNotification, (id expected)){ - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - BOOL isNotification = [expected isKindOfClass:[NSNotification class]]; - BOOL isName = [expected isKindOfClass:[NSString class]]; - - __block NSString *expectedName; - __block BOOL expectedNotificationOccurred = NO; - __block id observer; - - prerequisite(^BOOL{ - expectedNotificationOccurred = NO; - if (actualIsNil || expectedIsNil) return NO; - if (isNotification) { - expectedName = [expected name]; - }else if(isName) { - expectedName = expected; - }else{ - return NO; - } - - observer = [[NSNotificationCenter defaultCenter] addObserverForName:expectedName object:nil queue:nil usingBlock:^(NSNotification *note){ - if (isNotification) { - expectedNotificationOccurred |= [expected exp_isFunctionallyEqualTo:note]; - }else{ - expectedNotificationOccurred = YES; - } - }]; - ((EXPBasicBlock)actual)(); - return YES; - }); - - match(^BOOL{ - if(expectedNotificationOccurred) { - [[NSNotificationCenter defaultCenter] removeObserver:observer]; - } - return expectedNotificationOccurred; - }); - - failureMessageForTo(^NSString *{ - if (observer) { - [[NSNotificationCenter defaultCenter] removeObserver:observer]; - } - if(actualIsNil) return @"the actual value is nil/null"; - if(expectedIsNil) return @"the expected value is nil/null"; - if(!(isNotification || isName)) return @"the actual value is not a notification or string"; - return [NSString stringWithFormat:@"expected: %@, got: none",expectedName]; - }); - - failureMessageForNotTo(^NSString *{ - if (observer) { - [[NSNotificationCenter defaultCenter] removeObserver:observer]; - } - if(actualIsNil) return @"the actual value is nil/null"; - if(expectedIsNil) return @"the expected value is nil/null"; - if(!(isNotification || isName)) return @"the actual value is not a notification or string"; - return [NSString stringWithFormat:@"expected: none, got: %@", expectedName]; - }); -} - -EXPMatcherImplementationEnd - -EXPMatcherAliasImplementation(notify, postNotification, (id expectedNotification)) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h deleted file mode 100644 index 1f7fae02cac..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.h +++ /dev/null @@ -1,4 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(raise, (NSString *expectedExceptionName)); -#define raiseAny() raise(nil) diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m deleted file mode 100644 index 26f3c55fdf4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raise.m +++ /dev/null @@ -1,30 +0,0 @@ -#import "EXPMatchers+raise.h" -#import "EXPDefines.h" - -EXPMatcherImplementationBegin(raise, (NSString *expectedExceptionName)) { - __block NSException *exceptionCaught = nil; - - match(^BOOL{ - BOOL expectedExceptionCaught = NO; - @try { - ((EXPBasicBlock)actual)(); - } @catch(NSException *e) { - exceptionCaught = e; - expectedExceptionCaught = (expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]; - } - return expectedExceptionCaught; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@, got: %@", - expectedExceptionName ? expectedExceptionName : @"any exception", - exceptionCaught ? [exceptionCaught name] : @"no exception"]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@, got: %@", - expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", - exceptionCaught ? [exceptionCaught name] : @"no exception"]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h deleted file mode 100644 index 2cf5a5d2474..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m deleted file mode 100644 index 3943d383957..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.m +++ /dev/null @@ -1,35 +0,0 @@ -#import "EXPMatchers+raiseWithReason.h" -#import "EXPDefines.h" - -EXPMatcherImplementationBegin(raiseWithReason, (NSString *expectedExceptionName, NSString *expectedReason)) { - __block NSException *exceptionCaught = nil; - - match(^BOOL{ - BOOL expectedExceptionCaught = NO; - @try { - ((EXPBasicBlock)actual)(); - } @catch(NSException *e) { - exceptionCaught = e; - expectedExceptionCaught = (((expectedExceptionName == nil) || [[exceptionCaught name] isEqualToString:expectedExceptionName]) && - ((expectedReason == nil) || ([[exceptionCaught reason] isEqualToString:expectedReason]))); - } - return expectedExceptionCaught; - }); - - failureMessageForTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", - expectedExceptionName ?: @"any exception", - expectedReason ?: @"any reason", - exceptionCaught ? [exceptionCaught name] : @"no exception", - exceptionCaught ? [exceptionCaught reason] : @""]; - }); - - failureMessageForNotTo(^NSString *{ - return [NSString stringWithFormat:@"expected: %@ (%@), got: %@ (%@)", - expectedExceptionName ? [NSString stringWithFormat:@"not %@", expectedExceptionName] : @"no exception", - expectedReason ? [NSString stringWithFormat:@"not '%@'", expectedReason] : @"no reason", - exceptionCaught ? [exceptionCaught name] : @"no exception", - exceptionCaught ? [exceptionCaught reason] : @"no reason"]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h deleted file mode 100644 index 279131dd718..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.h +++ /dev/null @@ -1,3 +0,0 @@ -#import "Expecta.h" - -EXPMatcherInterface(respondTo, (SEL expected)); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m deleted file mode 100644 index d294113ff11..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers+respondTo.m +++ /dev/null @@ -1,28 +0,0 @@ -#import "EXPMatchers+respondTo.h" -#import "EXPMatcherHelpers.h" - -EXPMatcherImplementationBegin(respondTo, (SEL expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNull = (expected == NULL); - - prerequisite (^BOOL { - return !(actualIsNil || expectedIsNull); - }); - - match(^BOOL { - return [actual respondsToSelector:expected]; - }); - - failureMessageForTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNull) return @"the selector is null"; - return [NSString stringWithFormat:@"expected: %@ to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; - }); - - failureMessageForNotTo(^NSString *{ - if (actualIsNil) return @"the object is nil/null"; - if (expectedIsNull) return @"the selector is null"; - return [NSString stringWithFormat:@"expected: %@ not to respond to %@", EXPDescribeObject(actual), NSStringFromSelector(expected)]; - }); -} -EXPMatcherImplementationEnd diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h deleted file mode 100644 index ed6ef85f1f1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/Matchers/EXPMatchers.h +++ /dev/null @@ -1,25 +0,0 @@ -#import "EXPMatchers+beNil.h" -#import "EXPMatchers+equal.h" -#import "EXPMatchers+beInstanceOf.h" -#import "EXPMatchers+beKindOf.h" -#import "EXPMatchers+beSubclassOf.h" -#import "EXPMatchers+conformTo.h" -#import "EXPMatchers+beTruthy.h" -#import "EXPMatchers+beFalsy.h" -#import "EXPMatchers+contain.h" -#import "EXPMatchers+beSupersetOf.h" -#import "EXPMatchers+haveCountOf.h" -#import "EXPMatchers+beIdenticalTo.h" -#import "EXPMatchers+beGreaterThan.h" -#import "EXPMatchers+beGreaterThanOrEqualTo.h" -#import "EXPMatchers+beLessThan.h" -#import "EXPMatchers+beLessThanOrEqualTo.h" -#import "EXPMatchers+beInTheRangeOf.h" -#import "EXPMatchers+beCloseTo.h" -#import "EXPMatchers+raise.h" -#import "EXPMatchers+raiseWithReason.h" -#import "EXPMatchers+respondTo.h" -#import "EXPMatchers+postNotification.h" -#import "EXPMatchers+beginWith.h" -#import "EXPMatchers+endWith.h" -#import "EXPMatchers+match.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h deleted file mode 100644 index 5920e3115e8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSObject+Expecta.h +++ /dev/null @@ -1,10 +0,0 @@ -#import - -@interface NSObject (Expecta) - -- (void)recordFailureWithDescription:(NSString *)description - inFile:(NSString *)filename - atLine:(NSUInteger)lineNumber - expected:(BOOL)expected; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h deleted file mode 100644 index e8ff6a4c583..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface NSValue (Expecta) - -@property (nonatomic) const char *_EXP_objCType; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m deleted file mode 100644 index f6609964a95..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/Expecta/NSValue+Expecta.m +++ /dev/null @@ -1,21 +0,0 @@ -#import "NSValue+Expecta.h" -#import -#import "Expecta.h" - -EXPFixCategoriesBug(NSValue_Expecta); - -@implementation NSValue (Expecta) - -static char _EXP_typeKey; - -- (const char *)_EXP_objCType { - return [(NSString *)objc_getAssociatedObject(self, &_EXP_typeKey) cStringUsingEncoding:NSASCIIStringEncoding]; -} - -- (void)set_EXP_objCType:(const char *)_EXP_objCType { - objc_setAssociatedObject(self, &_EXP_typeKey, - @(_EXP_objCType), - OBJC_ASSOCIATION_COPY_NONATOMIC); -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE deleted file mode 100644 index a036c85fc12..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2011-2015 Specta Team - https://github.com/specta - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md deleted file mode 100644 index c3eb64862ea..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Expecta/README.md +++ /dev/null @@ -1,293 +0,0 @@ -#Expecta - -[![Build Status](http://img.shields.io/travis/specta/expecta/master.svg?style=flat)](https://travis-ci.org/specta/expecta) -[![Pod Version](http://img.shields.io/cocoapods/v/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/) -[![Pod Platform](http://img.shields.io/cocoapods/p/Expecta.svg?style=flat)](http://cocoadocs.org/docsets/Expecta/) -[![Pod License](http://img.shields.io/cocoapods/l/Expecta.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0.html) - -A matcher framework for Objective-C and Cocoa. - -## Introduction - -The main advantage of using Expecta over other matcher frameworks is that you do not have to specify the data types. Also, the syntax of Expecta matchers is much more readable and does not suffer from parenthesitis. - -```objective-c -expect(@"foo").to.equal(@"foo"); // `to` is a syntactic sugar and can be safely omitted. -expect(foo).notTo.equal(1); -expect([bar isBar]).to.equal(YES); -expect(baz).to.equal(3.14159); -``` - -Expecta is framework-agnostic: it works well with XCTest and XCTest-compatible test frameworks such as [Specta](http://github.com/petejkim/specta/). - - -## Setup - -You can setup Expecta using [Carthage](https://github.com/Carthage/Carthage), [CocoaPods](http://github.com/CocoaPods/CocoaPods) or [completely manually](#setting-up-manually). - -### Carthage - -1. Add Expecta to your project's `Cartfile.private`: - - ```ruby - github "specta/expecta" "master" - ``` - -2. Run `carthage update` in your project directory. -3. Drag the appropriate **Expecta.framework** for your platform (located in `Carthage/Build/`) into your application’s Xcode project, and add it to your test target(s). - -### CocoaPods - -1. Add Expecta to your project's `Podfile`: - - ```ruby - target :MyApp do - # Your app's dependencies - end - - target :MyAppTests do - pod 'Expecta', '~> 0.2.4' - end - ``` - -2. Run `pod update` or `pod install` in your project directory. - -### Setting Up Manually - -1. Clone Expecta from Github. -2. Run `rake` in your project directory to build the frameworks and libraries. -3. Add a Cocoa or Cocoa Touch Unit Testing Bundle target to your Xcode project if you don't already have one. -4. For **OS X projects**, copy and add `Expecta.framework` in the `Products/osx` folder to your project's test target. - - For **iOS projects**, copy and add `Expecta.framework` in the `Products/ios` folder to your project's test target. - - You can also use `libExpecta.a` if you prefer to link Expecta as a static library — iOS 7.x and below require this. - -6. Add `-ObjC` and `-all_load` to the **Other Linker Flags** build setting for the test target in your Xcode project. -7. You can now use Expecta in your test classes by adding the following import: - - ```objective-c - @import Expecta; // If you're using Expecta.framework - - // OR - - #import // If you're using the static library, or the framework - ``` - -## Built-in Matchers - -> `expect(x).to.equal(y);` compares objects or primitives x and y and passes if they are identical (==) or equivalent isEqual:). - -> `expect(x).to.beIdenticalTo(y);` compares objects x and y and passes if they are identical and have the same memory address. - -> `expect(x).to.beNil();` passes if x is nil. - -> `expect(x).to.beTruthy();` passes if x evaluates to true (non-zero). - -> `expect(x).to.beFalsy();` passes if x evaluates to false (zero). - -> `expect(x).to.contain(y);` passes if an instance of NSArray or NSString x contains y. - -> `expect(x).to.beSupersetOf(y);` passes if an instance of NSArray, NSSet, NSDictionary or NSOrderedSet x contains all elements of y. - -> `expect(x).to.haveCountOf(y);` passes if an instance of NSArray, NSSet, NSDictionary or NSString x has a count or length of y. - -> `expect(x).to.beEmpty();` passes if an instance of NSArray, NSSet, NSDictionary or NSString x has a count or length of . - -> `expect(x).to.beInstanceOf([Foo class]);` passes if x is an instance of a class Foo. - -> `expect(x).to.beKindOf([Foo class]);` passes if x is an instance of a class Foo or if x is an instance of any class that inherits from the class Foo. - -> `expect([Foo class]).to.beSubclassOf([Bar class]);` passes if the class Foo is a subclass of the class Bar or if it is identical to the class Bar. Use beKindOf() for class clusters. - -> `expect(x).to.beLessThan(y);` passes if `x` is less than `y`. - -> `expect(x).to.beLessThanOrEqualTo(y);` passes if `x` is less than or equal to `y`. - -> `expect(x).to.beGreaterThan(y);` passes if `x` is greater than `y`. - -> `expect(x).to.beGreaterThanOrEqualTo(y);` passes if `x` is greater than or equal to `y`. - -> `expect(x).to.beInTheRangeOf(y,z);` passes if `x` is in the range of `y` and `z`. - -> `expect(x).to.beCloseTo(y);` passes if `x` is close to `y`. - -> `expect(x).to.beCloseToWithin(y, z);` passes if `x` is close to `y` within `z`. - -> `expect(^{ /* code */ }).to.raise(@"ExceptionName");` passes if a given block of code raises an exception named `ExceptionName`. - -> `expect(^{ /* code */ }).to.raiseAny();` passes if a given block of code raises any exception. - -> `expect(x).to.conformTo(y);` passes if `x` conforms to the protocol `y`. - -> `expect(x).to.respondTo(y);` passes if `x` responds to the selector `y`. - -> `expect(^{ /* code */ }).to.notify(@"NotificationName");` passes if a given block of code generates an NSNotification amed `NotificationName`. - -> `expect(^{ /* code */ }).to.notify(notification);` passes if a given block of code generates an NSNotification equal to the passed `notification`. - -> `expect(x).to.beginWith(y);` passes if an instance of NSString, NSArray, or NSOrderedSet `x` begins with `y`. Also liased by `startWith` - -> `expect(x).to.endWith(y);` passes if an instance of NSString, NSArray, or NSOrderedSet `x` ends with `y`. - -> `expect(x).to.match(y);` passes if an instance of NSString `x` matches regular expression (given as NSString) `y` one or more times. - -## Inverting Matchers - -Every matcher's criteria can be inverted by prepending `.notTo` or `.toNot`: - ->`expect(x).notTo.equal(y);` compares objects or primitives x and y and passes if they are *not* equivalent. - -## Asynchronous Testing - -Every matcher can be made to perform asynchronous testing by prepending `.will`, `.willNot` or `after(...)`: - ->`expect(x).will.beNil();` passes if x becomes nil before the default timeout. -> ->`expect(x).willNot.beNil();` passes if x becomes non-nil before the default timeout. -> ->`expect(x).after(3).to.beNil();` passes if x becoms nil after 3.0 seconds. -> ->`expect(x).after(2.5).notTo.equal(42);` passes if x doesn't equal 42 after 2.5 seconds. - -The default timeout is 1.0 second and is used for all matchers if not otherwise specified. This setting can be changed by calling `[Expecta setAsynchronousTestTimeout:x]`, where `x` is the desired timeout in seconds. - -```objective-c -describe(@"Foo", ^{ - beforeAll(^{ - // All asynchronous matching using `will` and `willNot` - // will have a timeout of 2.0 seconds - [Expecta setAsynchronousTestTimeout:2]; - }); - - it(@"will not be nil", ^{ - // Test case where default timeout is used - expect(foo).willNot.beNil(); - }); - - it(@"should equal 42 after 3 seconds", ^{ - // Signle case where timeout differs from the default - expect(foo).after(3).to.equal(42); - }); -}); -``` - -## Forced Failing - -You can fail a test by using the `failure` attribute. This can be used to test branching. - -> `failure(@"This should not happen");` outright fails a test. - - -## Writing New Matchers - -Writing a new matcher is easy with special macros provided by Expecta. Take a look at how `.beKindOf()` matcher is defined: - -`EXPMatchers+beKindOf.h` - -```objective-c -#import "Expecta.h" - -EXPMatcherInterface(beKindOf, (Class expected)); -// 1st argument is the name of the matcher function -// 2nd argument is the list of arguments that may be passed in the function -// call. -// Multiple arguments are fine. (e.g. (int foo, float bar)) - -#define beAKindOf beKindOf -``` - -`EXPMatchers+beKindOf.m` - -```objective-c -#import "EXPMatchers+beKindOf.h" - -EXPMatcherImplementationBegin(beKindOf, (Class expected)) { - BOOL actualIsNil = (actual == nil); - BOOL expectedIsNil = (expected == nil); - - prerequisite(^BOOL { - return !(actualIsNil || expectedIsNil); - // Return `NO` if matcher should fail whether or not the result is inverted - // using `.Not`. - }); - - match(^BOOL { - return [actual isKindOfClass:expected]; - // Return `YES` if the matcher should pass, `NO` if it should not. - // The actual value/object is passed as `actual`. - // Please note that primitive values will be wrapped in NSNumber/NSValue. - }); - - failureMessageForTo(^NSString * { - if (actualIsNil) - return @"the actual value is nil/null"; - if (expectedIsNil) - return @"the expected value is nil/null"; - return [NSString - stringWithFormat:@"expected: a kind of %@, " - "got: an instance of %@, which is not a kind of %@", - [expected class], [actual class], [expected class]]; - // Return the message to be displayed when the match function returns `YES`. - }); - - failureMessageForNotTo(^NSString * { - if (actualIsNil) - return @"the actual value is nil/null"; - if (expectedIsNil) - return @"the expected value is nil/null"; - return [NSString - stringWithFormat:@"expected: not a kind of %@, " - "got: an instance of %@, which is a kind of %@", - [expected class], [actual class], [expected class]]; - // Return the message to be displayed when the match function returns `NO`. - }); -} -EXPMatcherImplementationEnd -``` - -## Dynamic Predicate Matchers - -It is possible to add predicate matchers by simply defining the matcher interface, with the matcher implementation being handled at runtime by delegating to the predicate method on your object. - -For instance, if you have the following class: - -```objc -@interface LightSwitch : NSObject -@property (nonatomic, assign, getter=isTurnedOn) BOOL turnedOn; -@end - -@implementation LightSwitch -@synthesize turnedOn; -@end -``` - -The normal way to write an assertion that the switch is turned on would be: - -```objc -expect([lightSwitch isTurnedOn]).to.beTruthy(); -``` - -However, if we define a custom predicate matcher: - -```objc -EXPMatcherInterface(isTurnedOn, (void)); -``` - -(Note: we haven't defined the matcher implementation, just it's interface) - -You can now write your assertion as follows: - -```objc -expect(lightSwitch).isTurnedOn(); -``` - -## Contribution Guidelines - -* Please use only spaces and indent 2 spaces at a time. -* Please prefix instance variable names with a single underscore (`_`). -* Please prefix custom classes and functions defined in the global scope with `EXP`. - -## License - -Copyright (c) 2012-2015 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE). diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h deleted file mode 120000 index ac762c82387..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h deleted file mode 120000 index 9dcc623c638..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPRequestOperationManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h deleted file mode 120000 index 56feb9fb85e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFHTTPSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 120000 index 67519d98485..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h deleted file mode 120000 index 68fc7744f28..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworkReachabilityManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h deleted file mode 120000 index a5a38da7dc9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h deleted file mode 120000 index fd1322db9c2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFSecurityPolicy.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h deleted file mode 120000 index d9b35fb754f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLConnectionOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h deleted file mode 120000 index ca8209b81f9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLRequestSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h deleted file mode 120000 index e36a765d826..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLResponseSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h deleted file mode 120000 index 835101de7bf..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/AFURLSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h deleted file mode 120000 index c534ebfb02a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIActivityIndicatorView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h deleted file mode 120000 index f9928133851..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIAlertView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h deleted file mode 120000 index 8f2e221939a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIButton+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h deleted file mode 120000 index a95d67380f1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h deleted file mode 120000 index 95017cce573..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIKit+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h deleted file mode 120000 index 730b167dcde..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIProgressView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h deleted file mode 120000 index 8efd8262093..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIRefreshControl+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h deleted file mode 120000 index c8df6ef17b8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/AFNetworking/UIWebView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h deleted file mode 120000 index ebefa87b183..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPBlockDefinedMatcher.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPBlockDefinedMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h deleted file mode 120000 index 22add0cdca0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPDefines.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h deleted file mode 120000 index 54aa0b5e627..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPDoubleTuple.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPDoubleTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h deleted file mode 120000 index a677bddfca1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPExpect.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPExpect.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h deleted file mode 120000 index 2b405694a4d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPFloatTuple.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPFloatTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h deleted file mode 120000 index 3b20a122ce1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcher.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h deleted file mode 120000 index 697385b078a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatcherHelpers.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h deleted file mode 120000 index 0eed377cb9d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beCloseTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h deleted file mode 120000 index 92643c49a0e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beFalsy.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h deleted file mode 120000 index 1ccc62b4aca..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThan.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h deleted file mode 120000 index db5bf966aed..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h deleted file mode 120000 index 6e17ea43ee0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beIdenticalTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h deleted file mode 120000 index 362d8a7f6df..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInTheRangeOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h deleted file mode 120000 index 4dd60632f6d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beInstanceOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h deleted file mode 120000 index 113c7d3725c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beKindOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h deleted file mode 120000 index 675e86a5663..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThan.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h deleted file mode 120000 index c16df2f05a1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beLessThanOrEqualTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h deleted file mode 120000 index 9f65a6c12aa..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beNil.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h deleted file mode 120000 index 27aa7bea5c6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSubclassOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h deleted file mode 120000 index ea3f770a19a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beSupersetOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h deleted file mode 120000 index 192ac764ef7..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beTruthy.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h deleted file mode 120000 index 2efba8fea39..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+beginWith.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h deleted file mode 120000 index 062fb51d7e7..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+conformTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h deleted file mode 120000 index 3661fe5f30c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+contain.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h deleted file mode 120000 index 7e6c9cf1c9c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+endWith.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h deleted file mode 120000 index 7bee788667d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+equal.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h deleted file mode 120000 index f46d23adf9c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+haveCountOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h deleted file mode 120000 index 18f995de6cd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+match.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+match.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h deleted file mode 120000 index c9422e3e726..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+postNotification.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h deleted file mode 120000 index 901e04c192b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raise.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h deleted file mode 120000 index 5b063b64e12..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+raiseWithReason.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h deleted file mode 120000 index e7a5fad1391..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers+respondTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h deleted file mode 120000 index a454dc4083e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPMatchers.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h deleted file mode 120000 index 60fae89f1c5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/EXPUnsupportedObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPUnsupportedObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h deleted file mode 120000 index 45ef877d842..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/Expecta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h deleted file mode 120000 index 36a99e13b27..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/ExpectaObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h deleted file mode 120000 index c59d3fc609f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/ExpectaSupport.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/ExpectaSupport.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h deleted file mode 120000 index 55c3635a699..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSObject+Expecta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/NSObject+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h deleted file mode 120000 index ee557b848d6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Expecta/NSValue+Expecta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/NSValue+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h deleted file mode 120000 index 624c6b8f44e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601.h +++ /dev/null @@ -1 +0,0 @@ -../../../ISO8601/ISO8601/ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h deleted file mode 120000 index f5a75430779..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/ISO8601Serialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../ISO8601/ISO8601/ISO8601Serialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h deleted file mode 120000 index bd1ba879903..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/ISO8601/NSDate+ISO8601.h +++ /dev/null @@ -1 +0,0 @@ -../../../ISO8601/ISO8601/NSDate+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h deleted file mode 120000 index 9f3f086f96a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h deleted file mode 120000 index f07aa339805..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONHTTPClient.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h deleted file mode 120000 index ad42377ed19..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONKeyMapper.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h deleted file mode 120000 index b2109ddc067..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel+networking.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h deleted file mode 120000 index 06a87feab9b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h deleted file mode 120000 index 3769776cbe6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelArray.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModelArray.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h deleted file mode 120000 index faee5d5bfe0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelClassProperty.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h deleted file mode 120000 index 476fbdd25c3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelError.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModelError.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h deleted file mode 120000 index ae3423a3289..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONModelLib.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelLib.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h deleted file mode 120000 index 4517ac33392..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/JSONValueTransformer.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h deleted file mode 120000 index b396c93dfbe..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/JSONModel/NSArray+JSONModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h deleted file mode 120000 index dbb535a6021..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCallSite.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTCallSite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h deleted file mode 120000 index 659770480c5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTCompiledExample.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTCompiledExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h deleted file mode 120000 index 79a18d4c5e1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExample.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h deleted file mode 120000 index 1effac57bfb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExampleGroup.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTExampleGroup.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h deleted file mode 120000 index 64df734234a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTExcludeGlobalBeforeAfterEach.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h deleted file mode 120000 index 7f83b65ff3d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTGlobalBeforeAfterEach.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h deleted file mode 120000 index 579d360e639..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSharedExampleGroups.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTSharedExampleGroups.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h deleted file mode 120000 index 3b1679ae8c1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTSpec.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTSpec.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h deleted file mode 120000 index 2f607e468cc..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SPTTestSuite.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTTestSuite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h deleted file mode 120000 index 111c968e99b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/Specta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h deleted file mode 120000 index fd1ad375682..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaDSL.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SpectaDSL.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h deleted file mode 120000 index 9428b13249f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SpectaTypes.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h deleted file mode 120000 index 576248091bd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/SpectaUtility.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SpectaUtility.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h deleted file mode 120000 index bb4a8e02612..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTest+Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/XCTest+Private.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h deleted file mode 120000 index 95f58cccde8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/Specta/XCTestCase+Specta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/XCTestCase+Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h deleted file mode 120000 index 3d3793de6d2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/JSONValueTransformer+ISO8601.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/JSONValueTransformer+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h deleted file mode 120000 index 18a025dde73..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGApiClient.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGApiClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h deleted file mode 120000 index edb0ca0ccf9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGCategory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGCategory.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h deleted file mode 120000 index 1a9e71d1043..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGConfiguration.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGConfiguration.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h deleted file mode 120000 index 36276ef6196..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGFile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGFile.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h deleted file mode 120000 index 73b578f883d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONRequestSerializer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGJSONRequestSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h deleted file mode 120000 index 741bf952369..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGJSONResponseSerializer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGJSONResponseSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h deleted file mode 120000 index e5ca8eeea0b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMyresult.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGMyresult.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h deleted file mode 120000 index 1e182c9b1ea..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGMythingApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGMythingApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h deleted file mode 120000 index 8ccdcf8160f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h deleted file mode 120000 index 1c8de308c64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGOrder.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGOrder.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h deleted file mode 120000 index 6492918f32e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPet.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGPet.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h deleted file mode 120000 index 6820750d235..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGPetApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGPetApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h deleted file mode 120000 index f5153362a77..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGQueryParamCollection.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGQueryParamCollection.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h deleted file mode 120000 index d3f01868cfa..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGStoreApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGStoreApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h deleted file mode 120000 index 1880256cb36..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGTag.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGTag.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h deleted file mode 120000 index 7f88cdc4511..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUser.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGUser.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h deleted file mode 120000 index bd97f82eebf..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Private/SwaggerClient/SWGUserApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGUserApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h deleted file mode 120000 index ac762c82387..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPRequestOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h deleted file mode 120000 index 9dcc623c638..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPRequestOperationManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPRequestOperationManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h deleted file mode 120000 index 56feb9fb85e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFHTTPSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFHTTPSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h deleted file mode 120000 index 67519d98485..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkActivityIndicatorManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h deleted file mode 120000 index 68fc7744f28..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworkReachabilityManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworkReachabilityManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h deleted file mode 120000 index a5a38da7dc9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h deleted file mode 120000 index fd1322db9c2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFSecurityPolicy.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFSecurityPolicy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h deleted file mode 120000 index d9b35fb754f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLConnectionOperation.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLConnectionOperation.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h deleted file mode 120000 index ca8209b81f9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLRequestSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLRequestSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h deleted file mode 120000 index e36a765d826..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLResponseSerialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLResponseSerialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h deleted file mode 120000 index 835101de7bf..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/AFURLSessionManager.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/AFNetworking/AFURLSessionManager.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h deleted file mode 120000 index c534ebfb02a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIActivityIndicatorView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h deleted file mode 120000 index f9928133851..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIAlertView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIAlertView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h deleted file mode 120000 index 8f2e221939a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIButton+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIButton+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h deleted file mode 120000 index a95d67380f1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIImageView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIImageView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h deleted file mode 120000 index 95017cce573..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIKit+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIKit+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h deleted file mode 120000 index 730b167dcde..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIProgressView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIProgressView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h deleted file mode 120000 index 8efd8262093..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIRefreshControl+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIRefreshControl+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h deleted file mode 120000 index c8df6ef17b8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/AFNetworking/UIWebView+AFNetworking.h +++ /dev/null @@ -1 +0,0 @@ -../../../AFNetworking/UIKit+AFNetworking/UIWebView+AFNetworking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h deleted file mode 120000 index ebefa87b183..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPBlockDefinedMatcher.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPBlockDefinedMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h deleted file mode 120000 index 22add0cdca0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDefines.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPDefines.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h deleted file mode 120000 index 54aa0b5e627..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPDoubleTuple.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPDoubleTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h deleted file mode 120000 index a677bddfca1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPExpect.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPExpect.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h deleted file mode 120000 index 2b405694a4d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPFloatTuple.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPFloatTuple.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h deleted file mode 120000 index 3b20a122ce1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcher.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPMatcher.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h deleted file mode 120000 index 697385b078a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatcherHelpers.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatcherHelpers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h deleted file mode 120000 index 0eed377cb9d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beCloseTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beCloseTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h deleted file mode 120000 index 92643c49a0e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beFalsy.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beFalsy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h deleted file mode 120000 index 1ccc62b4aca..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThan.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h deleted file mode 120000 index db5bf966aed..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beGreaterThanOrEqualTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h deleted file mode 120000 index 6e17ea43ee0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beIdenticalTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beIdenticalTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h deleted file mode 120000 index 362d8a7f6df..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInTheRangeOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beInTheRangeOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h deleted file mode 120000 index 4dd60632f6d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beInstanceOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beInstanceOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h deleted file mode 120000 index 113c7d3725c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beKindOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beKindOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h deleted file mode 120000 index 675e86a5663..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThan.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThan.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h deleted file mode 120000 index c16df2f05a1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beLessThanOrEqualTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h deleted file mode 120000 index 9f65a6c12aa..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beNil.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beNil.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h deleted file mode 120000 index 27aa7bea5c6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSubclassOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beSubclassOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h deleted file mode 120000 index ea3f770a19a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beSupersetOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beSupersetOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h deleted file mode 120000 index 192ac764ef7..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beTruthy.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beTruthy.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h deleted file mode 120000 index 2efba8fea39..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+beginWith.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+beginWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h deleted file mode 120000 index 062fb51d7e7..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+conformTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+conformTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h deleted file mode 120000 index 3661fe5f30c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+contain.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+contain.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h deleted file mode 120000 index 7e6c9cf1c9c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+endWith.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+endWith.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h deleted file mode 120000 index 7bee788667d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+equal.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+equal.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h deleted file mode 120000 index f46d23adf9c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+haveCountOf.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+haveCountOf.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h deleted file mode 120000 index 18f995de6cd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+match.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+match.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h deleted file mode 120000 index c9422e3e726..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+postNotification.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+postNotification.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h deleted file mode 120000 index 901e04c192b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raise.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+raise.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h deleted file mode 120000 index 5b063b64e12..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+raiseWithReason.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+raiseWithReason.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h deleted file mode 120000 index e7a5fad1391..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers+respondTo.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers+respondTo.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h deleted file mode 120000 index a454dc4083e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPMatchers.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Matchers/EXPMatchers.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h deleted file mode 120000 index 60fae89f1c5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/EXPUnsupportedObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/EXPUnsupportedObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h deleted file mode 120000 index 45ef877d842..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/Expecta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h deleted file mode 120000 index 36a99e13b27..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/ExpectaObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h deleted file mode 120000 index c59d3fc609f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/ExpectaSupport.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/ExpectaSupport.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h deleted file mode 120000 index 55c3635a699..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSObject+Expecta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/NSObject+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h deleted file mode 120000 index ee557b848d6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Expecta/NSValue+Expecta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Expecta/Expecta/NSValue+Expecta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h deleted file mode 120000 index 624c6b8f44e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601.h +++ /dev/null @@ -1 +0,0 @@ -../../../ISO8601/ISO8601/ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h deleted file mode 120000 index f5a75430779..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/ISO8601Serialization.h +++ /dev/null @@ -1 +0,0 @@ -../../../ISO8601/ISO8601/ISO8601Serialization.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h deleted file mode 120000 index bd1ba879903..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/ISO8601/NSDate+ISO8601.h +++ /dev/null @@ -1 +0,0 @@ -../../../ISO8601/ISO8601/NSDate+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h deleted file mode 120000 index 9f3f086f96a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONAPI.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h deleted file mode 120000 index f07aa339805..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONHTTPClient.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h deleted file mode 120000 index ad42377ed19..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONKeyMapper.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h deleted file mode 120000 index b2109ddc067..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel+networking.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h deleted file mode 120000 index 06a87feab9b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h deleted file mode 120000 index 3769776cbe6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelArray.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModelArray.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h deleted file mode 120000 index faee5d5bfe0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelClassProperty.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h deleted file mode 120000 index 476fbdd25c3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelError.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModel/JSONModelError.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h deleted file mode 120000 index ae3423a3289..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONModelLib.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelLib.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h deleted file mode 120000 index 4517ac33392..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/JSONValueTransformer.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h deleted file mode 120000 index b396c93dfbe..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/JSONModel/NSArray+JSONModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h deleted file mode 120000 index dbb535a6021..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCallSite.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTCallSite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h deleted file mode 120000 index 659770480c5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTCompiledExample.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTCompiledExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h deleted file mode 120000 index 79a18d4c5e1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExample.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTExample.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h deleted file mode 120000 index 1effac57bfb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExampleGroup.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTExampleGroup.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h deleted file mode 120000 index 64df734234a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTExcludeGlobalBeforeAfterEach.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h deleted file mode 120000 index 7f83b65ff3d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTGlobalBeforeAfterEach.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h deleted file mode 120000 index 579d360e639..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSharedExampleGroups.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTSharedExampleGroups.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h deleted file mode 120000 index 3b1679ae8c1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTSpec.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTSpec.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h deleted file mode 120000 index 2f607e468cc..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SPTTestSuite.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SPTTestSuite.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h deleted file mode 120000 index 111c968e99b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/Specta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h deleted file mode 120000 index fd1ad375682..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaDSL.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SpectaDSL.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h deleted file mode 120000 index 9428b13249f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaTypes.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SpectaTypes.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h deleted file mode 120000 index 576248091bd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/SpectaUtility.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/SpectaUtility.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h deleted file mode 120000 index bb4a8e02612..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTest+Private.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/XCTest+Private.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h deleted file mode 120000 index 95f58cccde8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/Specta/XCTestCase+Specta.h +++ /dev/null @@ -1 +0,0 @@ -../../../Specta/Specta/Specta/XCTestCase+Specta.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h deleted file mode 120000 index 3d3793de6d2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/JSONValueTransformer+ISO8601.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/JSONValueTransformer+ISO8601.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h deleted file mode 120000 index 18a025dde73..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGApiClient.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGApiClient.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h deleted file mode 120000 index edb0ca0ccf9..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGCategory.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGCategory.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h deleted file mode 120000 index 1a9e71d1043..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGConfiguration.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGConfiguration.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h deleted file mode 120000 index 36276ef6196..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGFile.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGFile.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h deleted file mode 120000 index 73b578f883d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONRequestSerializer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGJSONRequestSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h deleted file mode 120000 index 741bf952369..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGJSONResponseSerializer.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGJSONResponseSerializer.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h deleted file mode 120000 index e5ca8eeea0b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMyresult.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGMyresult.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h deleted file mode 120000 index 1e182c9b1ea..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGMythingApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGMythingApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h deleted file mode 120000 index 8ccdcf8160f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGObject.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGObject.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h deleted file mode 120000 index 1c8de308c64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGOrder.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGOrder.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h deleted file mode 120000 index 6492918f32e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPet.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGPet.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h deleted file mode 120000 index 6820750d235..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGPetApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGPetApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h deleted file mode 120000 index f5153362a77..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGQueryParamCollection.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGQueryParamCollection.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h deleted file mode 120000 index d3f01868cfa..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGStoreApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGStoreApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h deleted file mode 120000 index 1880256cb36..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGTag.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGTag.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h deleted file mode 120000 index 7f88cdc4511..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUser.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGUser.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h deleted file mode 120000 index bd97f82eebf..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Headers/Public/SwaggerClient/SWGUserApi.h +++ /dev/null @@ -1 +0,0 @@ -../../../../../SwaggerClient/SWGUserApi.h \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h deleted file mode 100644 index fe5e6015b6d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601.h +++ /dev/null @@ -1,22 +0,0 @@ -// -// ISO8601.h -// ISO8601 -// -// Created by Sam Soffes on 7/30/14. -// Copyright (c) 2014 Sam Soffes. All rights reserved. -// - -#if __has_feature(modules) - @import Foundation; -#else - #import -#endif - -//! Project version number for ISO8601. -FOUNDATION_EXPORT double ISO8601VersionNumber; - -//! Project version string for ISO8601. -FOUNDATION_EXPORT const unsigned char ISO8601VersionString[]; - -#import -#import diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h deleted file mode 100644 index 5980bd77758..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// ISO8601Serialization.h -// ISO8601 -// -// Created by Sam Soffes on 7/30/14. -// Copyright (c) 2014 Sam Soffes. All rights reserved. -// - -#if __has_feature(modules) - @import Foundation; -#else - #import -#endif - -@interface ISO8601Serialization : NSObject - -#pragma mark - Reading - -/** - Create date components from an ISO8601 string. - - @param string An ISO8601 string. - - @return An object containing the date components for a given ISO8601 string. - */ -+ (NSDateComponents *)dateComponentsForString:(NSString *)string; - - -#pragma mark - Writing - -/** - Create an ISO8601 string from date components. - - @param components Date components to use. - - @return A string containing the date components as an ISO8601 string. - */ -+ (NSString *)stringForDateComponents:(NSDateComponents *)components; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m deleted file mode 100644 index a129fb207ff..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/ISO8601Serialization.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// ISO8601Serialization.m -// ISO8601 -// -// Created by Sam Soffes on 7/30/14. -// Copyright (c) 2014 Sam Soffes. All rights reserved. -// - -#import "ISO8601Serialization.h" - -@implementation ISO8601Serialization - -+ (NSDateComponents *)dateComponentsForString:(NSString *)string { - NSScanner *scanner = [[NSScanner alloc] initWithString:string]; - scanner.charactersToBeSkipped = nil; - - NSDateComponents *dateComponents = [[NSDateComponents alloc] init]; - - // Year - NSInteger year; - if (![scanner scanInteger:&year]) { - return nil; - } - dateComponents.year = year; - - // Month - if (![scanner scanString:@"-" intoString:nil]) { - return dateComponents; - } - - NSInteger month; - if (![scanner scanInteger:&month]) { - return dateComponents; - } - dateComponents.month = month; - - // Day - if (![scanner scanString:@"-" intoString:nil]) { - return dateComponents; - } - - NSInteger day; - if (![scanner scanInteger:&day]) { - return dateComponents; - } - dateComponents.day = day; - - // Time - if (![scanner scanCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"T "] intoString:nil]) { - return dateComponents; - } - - // Hour - NSInteger hour; - if (![scanner scanInteger:&hour]) { - return dateComponents; - } - dateComponents.hour = hour; - - // Minute - if (![scanner scanString:@":" intoString:nil]) { - return dateComponents; - } - - NSInteger minute; - if (![scanner scanInteger:&minute]) { - return dateComponents; - } - dateComponents.minute = minute; - - // Second - NSUInteger scannerLocation = scanner.scanLocation; - if ([scanner scanString:@":" intoString:nil]) { - NSInteger second; - if (![scanner scanInteger:&second]) { - return dateComponents; - } - dateComponents.second = second; - } else { - scanner.scanLocation = scannerLocation; - } - - // Zulu - scannerLocation = scanner.scanLocation; - [scanner scanUpToString:@"Z" intoString:nil]; - if ([scanner scanString:@"Z" intoString:nil]) { - // Z stands for the Zulu (Z in the NATO phonetic alphabet) time zone. UTC and the Zulu time - // zone are synonymous. - dateComponents.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; - return dateComponents; - } - - // Move back to end of time - scanner.scanLocation = scannerLocation; - - // Look for offset - NSCharacterSet *signs = [NSCharacterSet characterSetWithCharactersInString:@"+-"]; - [scanner scanUpToCharactersFromSet:signs intoString:nil]; - NSString *sign; - if (![scanner scanCharactersFromSet:signs intoString:&sign]) { - return dateComponents; - } - - // Offset hour - NSInteger timeZoneOffset = 0; - NSInteger timeZoneOffsetHour = 0; - NSInteger timeZoneOffsetMinute = 0; - if (![scanner scanInteger:&timeZoneOffsetHour]) { - return dateComponents; - } - - // Check for colon - BOOL colonExists = [scanner scanString:@":" intoString:nil]; - if (!colonExists && timeZoneOffsetHour > 14) { - timeZoneOffsetMinute = timeZoneOffsetHour % 100; - timeZoneOffsetHour = floor(timeZoneOffsetHour / 100); - } else { - // Offset minute - [scanner scanInteger:&timeZoneOffsetMinute]; - } - - timeZoneOffset = (timeZoneOffsetHour * 60 * 60) + (timeZoneOffsetMinute * 60); - dateComponents.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:timeZoneOffset * ([sign isEqualToString:@"-"] ? -1 : 1)]; - - return dateComponents; -} - - -+ (NSString *)stringForDateComponents:(NSDateComponents *)components { - NSString *string = [[NSString alloc] initWithFormat:@"%04li-%02i-%02iT%02i:%02i:%02i", (long)components.year, - (int)components.month, (int)components.day, (int)components.hour, (int)components.minute, - (int)components.second]; - - NSTimeZone *timeZone = components.timeZone; - if (!timeZone) { - return string; - } - - if (timeZone.secondsFromGMT != 0) { - NSInteger hoursOffset = timeZone.secondsFromGMT / 3600; - - // TODO: Assuming whole hour offsets at the moment - NSUInteger secondsOffset = 0; - - NSString *sign = (hoursOffset >= 0) ? @"+" : @"-"; - return [string stringByAppendingFormat:@"%@%02i:%02i", sign, abs((int)hoursOffset), (int)secondsOffset]; - } - - return [string stringByAppendingString:@"Z"]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h deleted file mode 100644 index d26c8271f54..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.h +++ /dev/null @@ -1,65 +0,0 @@ -// -// NSDate+ISO8601.h -// ISO8601 -// -// Created by Sam Soffes on 7/30/14. -// Copyright (c) 2014 Sam Soffes. All rights reserved. -// - -#if __has_feature(modules) - @import Foundation; -#else - #import -#endif - -@interface NSDate (ISO8601) - -#pragma mark - Simple - -/** - Returns a new date represented by an ISO8601 string. - - @param string An ISO8601 string. - - @return A date represented by the ISO8601 string. - */ -+ (NSDate *)dateWithISO8601String:(NSString *)string; - -/** - Returns a string representation of the receiver in ISO8601 format. - - @return A string representation of the receiver in ISO8601 format in the current calendar's time - zone. - */ -- (NSString *)ISO8601String; - - -#pragma mark - Advanced - -/** - Returns a new date represented by an ISO8601 string as well as the time zone. - - @param string An ISO8601 string. - - @param timeZone Upon return, contains the time zone or `nil` if none was specified. - - @param calendar The calender to use for converting the date to date components. If `nil` is specified, the current - calendar is used. - - @return A date represented by the ISO8601 string. - */ -+ (NSDate *)dateWithISO8601String:(NSString *)string timeZone:(inout NSTimeZone **)timeZone usingCalendar:(NSCalendar *)calendar; - -/** - Returns a string representation of the receiver in ISO8601 format. - - @param timeZone The time zone to use. If `nil` is specified, UTC will be used. - - @param calendar The calender to use for converting the date to date components. If `nil` is specified, the current - calendar is used. - - @return A string representation of the receiver in ISO8601 format in `timeZone`. - */ -- (NSString *)ISO8601StringWithTimeZone:(NSTimeZone *)timeZone usingCalendar:(NSCalendar *)calendar; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m deleted file mode 100644 index 32789e9dc64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/ISO8601/NSDate+ISO8601.m +++ /dev/null @@ -1,69 +0,0 @@ -// -// NSDate+ISO8601.m -// ISO8601 -// -// Created by Sam Soffes on 7/30/14. -// Copyright (c) 2014 Sam Soffes. All rights reserved. -// - -#import "NSDate+ISO8601.h" -#import "ISO8601Serialization.h" - -@implementation NSDate (ISO8601) - -#pragma mark - Reading - -+ (NSDate *)dateWithISO8601String:(NSString *)string { - return [self dateWithISO8601String:string timeZone:nil usingCalendar:nil]; -} - - -+ (NSDate *)dateWithISO8601String:(NSString *)string timeZone:(inout NSTimeZone *__autoreleasing *)timeZone usingCalendar:(NSCalendar *)calendar { - NSDateComponents *components = [ISO8601Serialization dateComponentsForString:string]; - if (components == nil) { - return nil; - } - - if (!calendar) { - calendar = [NSCalendar currentCalendar]; - } - - NSTimeZone *UTCTimeZone = [NSTimeZone timeZoneWithName:@"UTC"]; - - if (timeZone) { - *timeZone = components.timeZone ? components.timeZone : UTCTimeZone; - } - - // Use a UTC calendar to generate the date - calendar.timeZone = UTCTimeZone; - - return [calendar dateFromComponents:components]; -} - - -#pragma mark - Writing - -- (NSString *)ISO8601String { - return [self ISO8601StringWithTimeZone:[NSTimeZone localTimeZone] usingCalendar:nil]; -} - - -- (NSString *)ISO8601StringWithTimeZone:(NSTimeZone *)timeZone usingCalendar:(NSCalendar *)calendar { - if (!calendar) { - calendar = [NSCalendar currentCalendar]; - } - - if (timeZone) { - calendar.timeZone = timeZone; - } else { - calendar.timeZone = [NSTimeZone timeZoneForSecondsFromGMT:0]; - } - - NSCalendarUnit units = (NSCalendarUnit)(NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | - NSCalendarUnitMinute | NSCalendarUnitSecond | NSCalendarUnitTimeZone); - - NSDateComponents *dateComponents = [calendar components:units fromDate:self]; - return [ISO8601Serialization stringForDateComponents:dateComponents]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE deleted file mode 100644 index e333978ed9f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2014 Sam Soffes, http://soff.es - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown b/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown deleted file mode 100644 index 2aeedd1683f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/ISO8601/Readme.markdown +++ /dev/null @@ -1,73 +0,0 @@ -# ISO8601 - -[![Version](https://img.shields.io/github/release/soffes/ISO8601.svg)](https://github.com/soffes/ISO8601/releases) [![Build Status](https://travis-ci.org/soffes/ISO8601.svg?branch=master)](https://travis-ci.org/soffes/ISO8601) [![Coverage Status](https://coveralls.io/repos/soffes/ISO8601/badge.svg?branch=master)](https://coveralls.io/r/soffes/ISO8601?branch=master) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![CocoaPods compatible](https://img.shields.io/cocoapods/v/ISO8601.svg)](https://cocoapods.org/pods/ISO8601) - -Fast [ISO8601](http://en.wikipedia.org/wiki/ISO8601) date parser and writer for iOS & Mac. - - -## Installation - -[Carthage](https://github.com/carthage/carthage) is the recommended way to install ISO8601. Add the following to your Cartfile: - -``` ruby -github "soffes/ISO8601" -``` - -You can also install with [CocoaPods](https://cocoapods.org): - -``` ruby -pod 'ISO8601' -``` - -For manual installation, I recommend adding the project as a subproject to your project or workspace and adding the framework as a target dependency. - - -## Usage - -First, import the appropriate header: - -``` objc -@import ISO8601; // Use #import if you're using CocoaPods -``` - -This library uses `NSDateComponents` for reading and writing. Here's an example: - -``` objc -// Reading -NSDateComponents *dateComponents = [ISO8601Serialization dateComponentsForString:@"1999-05-19T23:55:21+09:00"]; - -// Writing -NSString *ISO8601String = [ISO8601Serialization stringForDateComponents:dateComponents]; -``` - -There is an `NSDate` category for convenient conversion: - -``` objc -// Reading -NSDate *date = [NSDate dateWithISO8601String:@"1999-05-19T23:55:21+09:00"]; - -// Writing -NSString *ISO8601String = [date ISO8601String]; -``` - -If you require more control over conversion or need to know the input time zone, you can use the advanced methods the category provides: - - -``` objc -// Reading -NSTimeZone *timeZone; -NSDate *date = [NSDate dateWithISO8601String:@"1999-05-19T23:55:21+09:00" timeZone:&timeZone usingCalendar:calendarOrNil]; - -// Writing -NSString *ISO8601String = [date ISO8601StringWithTimeZone:timeZoneOrNil usingCalendar:calendarOrNil]; -``` - -## Notes - -`NSDateComponents` is the core data structure because `NSDate` doesn't perserve time zone information well. - -It's worth noting that a value in the `NSDateComponents` will be `nil` if it is not in the input string. For example, `1999-05-19T23:55:21` will have a `nil` time zone, but `1999-05-19T23:55:21+00:00` and `1999-05-19T23:55:21Z` will have a UTC time zone. - -The `+[NSDate dateWithISO8601String:]` category will always return a UTC date. If you want a date in another time zone, you should use `+[NSDate ISO8601StringWithTimeZone:usingCalendar:]` (you may pass `nil` for the calendar parameter to use the current calendar). - -Enjoy. diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h deleted file mode 100644 index 56f4cfa369b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.h +++ /dev/null @@ -1,334 +0,0 @@ -// -// JSONModel.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import - -#import "JSONModelError.h" -#import "JSONValueTransformer.h" -#import "JSONKeyMapper.h" - -///////////////////////////////////////////////////////////////////////////////////////////// -#if TARGET_IPHONE_SIMULATOR -#define JMLog( s, ... ) NSLog( @"[%@:%d] %@", [[NSString stringWithUTF8String:__FILE__] \ -lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] ) -#else -#define JMLog( s, ... ) -#endif -///////////////////////////////////////////////////////////////////////////////////////////// - -#pragma mark - Property Protocols -/** - * Protocol for defining properties in a JSON Model class that should not be considered at all - * neither while importing nor when exporting JSON. - * - * @property (strong, nonatomic) NSString<Ignore>* propertyName; - * - */ -@protocol Ignore -@end - -/** - * Protocol for defining optional properties in a JSON Model class. Use like below to define - * model properties that are not required to have values in the JSON input: - * - * @property (strong, nonatomic) NSString<Optional>* propertyName; - * - */ -@protocol Optional -@end - -/** - * Protocol for defining index properties in a JSON Model class. Use like below to define - * model properties that are considered the Model's identifier (id). - * - * @property (strong, nonatomic) NSString<Index>* propertyName; - * - */ -@protocol Index -@end - -/** - * Make all objects Optional compatible to avoid compiler warnings - */ -@interface NSObject(JSONModelPropertyCompatibility) -@end - -/** - * ConvertOnDemand enables lazy model initialization for NSArrays of models - * - * @property (strong, nonatomic) NSArray<JSONModel, ConvertOnDemand>* propertyName; - */ -@protocol ConvertOnDemand -@end - -/** - * Make all arrays ConvertOnDemand compatible to avoid compiler warnings - */ -@interface NSArray(JSONModelPropertyCompatibility) -@end - -///////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark - JSONModel protocol -/** - * A protocol describing an abstract JSONModel class - * JSONModel conforms to this protocol, so it can use itself abstractly - */ -@protocol AbstractJSONModelProtocol - -@required - /** - * All JSONModel classes should implement initWithDictionary: - * - * For most classes the default initWithDictionary: inherited from JSONModel itself - * should suffice, but developers have the option ot also overwrite it if needed. - * - * @param dict a dictionary holding JSON objects, to be imported in the model. - * @param err an error or NULL - */ - -(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError**)err; - - -/** - * All JSONModel classes should implement initWithData:error: - * - * For most classes the default initWithData: inherited from JSONModel itself - * should suffice, but developers have the option ot also overwrite it if needed. - * - * @param data representing a JSON response (usually fetched from web), to be imported in the model. - * @param err an error or NULL - */ --(instancetype)initWithData:(NSData*)data error:(NSError**)error; - -/** - * All JSONModel classes should be able to export themselves as a dictionary of - * JSON compliant objects. - * - * For most classes the inherited from JSONModel default toDictionary implementation - * should suffice. - * - * @return NSDictionary dictionary of JSON compliant objects - * @exception JSONModelTypeNotAllowedException thrown when one of your model's custom class properties - * does not have matching transformer method in an JSONValueTransformer. - */ - -(NSDictionary*)toDictionary; - - /** - * Export a model class to a dictionary, including only given properties - * - * @param propertyNames the properties to export; if nil, all properties exported - * @return NSDictionary dictionary of JSON compliant objects - * @exception JSONModelTypeNotAllowedException thrown when one of your model's custom class properties - * does not have matching transformer method in an JSONValueTransformer. - */ - -(NSDictionary*)toDictionaryWithKeys:(NSArray*)propertyNames; -@end - -///////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark - JSONModel interface -/** - * The JSONModel is an abstract model class, you should not instantiate it directly, - * as it does not have any properties, and therefore cannot serve as a data model. - * Instead you should subclass it, and define the properties you want your data model - * to have as properties of your own class. - */ -@interface JSONModel : NSObject - -/** @name Creating and initializing models */ - - /** - * Create a new model instance and initialize it with the JSON from a text parameter. The method assumes UTF8 encoded input text. - * @param string JSON text data - * @param err an initialization error or nil - * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, - * or a property type in your model is not supported by JSONValueTransformer and its categories - * @see initWithString:usingEncoding:error: for use of custom text encodings - */ - -(instancetype)initWithString:(NSString*)string error:(JSONModelError**)err; - - /** - * Create a new model instance and initialize it with the JSON from a text parameter using the given encoding. - * @param string JSON text data - * @param encoding the text encoding to use when parsing the string (see NSStringEncoding) - * @param err an initialization error or nil - * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, - * or a property type in your model is not supported by JSONValueTransformer and its categories - */ - -(instancetype)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err; - - -(instancetype)initWithDictionary:(NSDictionary*)dict error:(NSError **)err; - - -(instancetype)initWithData:(NSData *)data error:(NSError **)error; - -/** @name Exporting model contents */ - - /** - * Export the whole object to a dictionary - * @return dictionary containing the data model - */ - -(NSDictionary*)toDictionary; - - /** - * Export the whole object to a JSON data text string - * @return JSON text describing the data model - */ - -(NSString*)toJSONString; - - /** - * Export the whole object to a JSON data text string - * @return JSON text data describing the data model - */ - -(NSData*)toJSONData; - - /** - * Export the specified properties of the object to a dictionary - * @param propertyNames the properties to export; if nil, all properties exported - * @return dictionary containing the data model - */ - -(NSDictionary*)toDictionaryWithKeys:(NSArray*)propertyNames; - - /** - * Export the specified properties of the object to a JSON data text string - * @param propertyNames the properties to export; if nil, all properties exported - * @return JSON text describing the data model - */ - -(NSString*)toJSONStringWithKeys:(NSArray*)propertyNames; - - /** - * Export the specified properties of the object to a JSON data text string - * @param propertyNames the properties to export; if nil, all properties exported - * @return JSON text data describing the data model - */ - -(NSData*)toJSONDataWithKeys:(NSArray*)propertyNames; - -/** @name Batch methods */ - - /** - * If you have a list of dictionaries in a JSON feed, you can use this method to create an NSArray - * of model objects. Handy when importing JSON data lists. - * This method will loop over the input list and initialize a data model for every dictionary in the list. - * - * @param array list of dictionaries to be imported as models - * @return list of initialized data model objects - * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, - * or a property type in your model is not supported by JSONValueTransformer and its categories - * @exception JSONModelInvalidDataException thrown when the input data does not include all required keys - * @see arrayOfDictionariesFromModels: - */ - +(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array; - - +(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array error:(NSError**)err; - - +(NSMutableArray*)arrayOfModelsFromData:(NSData*)data error:(NSError**)err; - - /** - * If you have an NSArray of data model objects, this method takes it in and outputs a list of the - * matching dictionaries. This method does the opposite of arrayOfObjectsFromDictionaries: - * @param array list of JSONModel objects - * @return a list of NSDictionary objects - * @exception JSONModelTypeNotAllowedException thrown when unsported type is found in the incoming JSON, - * or a property type in your model is not supported by JSONValueTransformer and its categories - * @see arrayOfModelsFromDictionaries: - */ - +(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array; - - - -/** @name Comparing models */ - - /** - * The name of the model's property, which is considered the model's unique identifier. - * You can define Index property by using the Index protocol: - * @property (strong, nonatomic) NSString<Index>* id; - */ - -(NSString*)indexPropertyName; - - /** - * Overriden NSObject method to compare model objects. Compares the <Index> property of the two models, - * if an index property is defined. - * @param object a JSONModel instance to compare to for equality - */ - -(BOOL)isEqual:(id)object; - - /** - * Comparision method, which uses the defined <Index> property of the two models, to compare them. - * If there isn't an index property throws an exception. If the Index property does not have a compare: method - * also throws an exception. NSString and NSNumber have compare: methods, and in case the Index property is - * a another custom class, the programmer should create a custom compare: method then. - * @param object a JSONModel instance to compare to - */ - -(NSComparisonResult)compare:(id)object; - -/** @name Validation */ - - /** - * Overwrite the validate method in your own models if you need to perform some custom validation over the model data. - * This method gets called at the very end of the JSONModel initializer, thus the model is in the state that you would - * get it back when initialzed. Check the values of any property that needs to be validated and if any invalid values - * are encountered return NO and set the error parameter to an NSError object. If the model is valid return YES. - * - * NB: Only setting the error parameter is not enough to fail the validation, you also need to return a NO value. - * - * @param error a pointer to an NSError object, to pass back an error if needed - * @return a BOOL result, showing whether the model data validates or not. You can use the convenience method - * [JSONModelError errorModelIsInvalid] to set the NSError param if the data fails your custom validation - */ --(BOOL)validate:(NSError**)error; - -/** @name Key mapping */ - /** - * Overwrite in your models if your property names don't match your JSON key names. - * Lookup JSONKeyMapper docs for more details. - */ -+(JSONKeyMapper*)keyMapper; - -/** - * Sets a key mapper which affects ALL the models in your project. Use this if you need only one mapper to work - * with your API. For example if you are using the [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase] it is more - * likely that you will need to use it with ALL of your models. - * NB: Custom key mappers take precendence over the global key mapper. - * @param globalKeyMapper a key mapper to apply to all models in your project. - * - * Lookup JSONKeyMapper docs for more details. - */ -+(void)setGlobalKeyMapper:(JSONKeyMapper*)globalKeyMapper; - -/** - * Indicates whether the property with the given name is Optional. - * To have a model with all of its properties being Optional just return YES. - * This method returns by default NO, since the default behaviour is to have all properties required. - * @param propertyName the name of the property - * @return a BOOL result indicating whether the property is optional - */ -+(BOOL)propertyIsOptional:(NSString*)propertyName; - -/** - * Indicates whether the property with the given name is Ignored. - * To have a model with all of its properties being Ignored just return YES. - * This method returns by default NO, since the default behaviour is to have all properties required. - * @param propertyName the name of the property - * @return a BOOL result indicating whether the property is ignored - */ -+(BOOL)propertyIsIgnored:(NSString*)propertyName; - -/** - * Merges values from the given dictionary into the model instance. - * @param dict dictionary with values - * @param useKeyMapping if YES the method will use the model's key mapper and the global key mapper, if NO - * it'll just try to match the dictionary keys to the model's properties - */ --(void)mergeFromDictionary:(NSDictionary*)dict useKeyMapping:(BOOL)useKeyMapping; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m deleted file mode 100644 index 571af3121af..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModel.m +++ /dev/null @@ -1,1309 +0,0 @@ -// -// JSONModel.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#if !__has_feature(objc_arc) -#error The JSONMOdel framework is ARC only, you can enable ARC on per file basis. -#endif - - -#import -#import - - -#import "JSONModel.h" -#import "JSONModelClassProperty.h" -#import "JSONModelArray.h" - -#pragma mark - associated objects names -static const char * kMapperObjectKey; -static const char * kClassPropertiesKey; -static const char * kClassRequiredPropertyNamesKey; -static const char * kIndexPropertyNameKey; - -#pragma mark - class static variables -static NSArray* allowedJSONTypes = nil; -static NSArray* allowedPrimitiveTypes = nil; -static JSONValueTransformer* valueTransformer = nil; -static Class JSONModelClass = NULL; - -#pragma mark - model cache -static JSONKeyMapper* globalKeyMapper = nil; - -#pragma mark - JSONModel implementation -@implementation JSONModel -{ - NSString* _description; -} - -#pragma mark - initialization methods - -+(void)load -{ - static dispatch_once_t once; - dispatch_once(&once, ^{ - // initialize all class static objects, - // which are common for ALL JSONModel subclasses - - @autoreleasepool { - allowedJSONTypes = @[ - [NSString class], [NSNumber class], [NSDecimalNumber class], [NSArray class], [NSDictionary class], [NSNull class], //immutable JSON classes - [NSMutableString class], [NSMutableArray class], [NSMutableDictionary class] //mutable JSON classes - ]; - - allowedPrimitiveTypes = @[ - @"BOOL", @"float", @"int", @"long", @"double", @"short", - //and some famous aliases - @"NSInteger", @"NSUInteger", - @"Block" - ]; - - valueTransformer = [[JSONValueTransformer alloc] init]; - - // This is quite strange, but I found the test isSubclassOfClass: (line ~291) to fail if using [JSONModel class]. - // somewhat related: https://stackoverflow.com/questions/6524165/nsclassfromstring-vs-classnamednsstring - // //; seems to break the unit tests - - // Using NSClassFromString instead of [JSONModel class], as this was breaking unit tests, see below - //http://stackoverflow.com/questions/21394919/xcode-5-unit-test-seeing-wrong-class - JSONModelClass = NSClassFromString(NSStringFromClass(self)); - } - }); -} - --(void)__setup__ -{ - //if first instance of this model, generate the property list - if (!objc_getAssociatedObject(self.class, &kClassPropertiesKey)) { - [self __inspectProperties]; - } - - //if there's a custom key mapper, store it in the associated object - id mapper = [[self class] keyMapper]; - if ( mapper && !objc_getAssociatedObject(self.class, &kMapperObjectKey) ) { - objc_setAssociatedObject( - self.class, - &kMapperObjectKey, - mapper, - OBJC_ASSOCIATION_RETAIN // This is atomic - ); - } -} - --(id)init -{ - self = [super init]; - if (self) { - //do initial class setup - [self __setup__]; - } - return self; -} - --(instancetype)initWithData:(NSData *)data error:(NSError *__autoreleasing *)err -{ - //check for nil input - if (!data) { - if (err) *err = [JSONModelError errorInputIsNil]; - return nil; - } - //read the json - JSONModelError* initError = nil; - id obj = [NSJSONSerialization JSONObjectWithData:data - options:kNilOptions - error:&initError]; - - if (initError) { - if (err) *err = [JSONModelError errorBadJSON]; - return nil; - } - - //init with dictionary - id objModel = [self initWithDictionary:obj error:&initError]; - if (initError && err) *err = initError; - return objModel; -} - --(id)initWithString:(NSString*)string error:(JSONModelError**)err -{ - JSONModelError* initError = nil; - id objModel = [self initWithString:string usingEncoding:NSUTF8StringEncoding error:&initError]; - if (initError && err) *err = initError; - return objModel; -} - --(id)initWithString:(NSString *)string usingEncoding:(NSStringEncoding)encoding error:(JSONModelError**)err -{ - //check for nil input - if (!string) { - if (err) *err = [JSONModelError errorInputIsNil]; - return nil; - } - - JSONModelError* initError = nil; - id objModel = [self initWithData:[string dataUsingEncoding:encoding] error:&initError]; - if (initError && err) *err = initError; - return objModel; - -} - --(id)initWithDictionary:(NSDictionary*)dict error:(NSError**)err -{ - //check for nil input - if (!dict) { - if (err) *err = [JSONModelError errorInputIsNil]; - return nil; - } - - //invalid input, just create empty instance - if (![dict isKindOfClass:[NSDictionary class]]) { - if (err) *err = [JSONModelError errorInvalidDataWithMessage:@"Attempt to initialize JSONModel object using initWithDictionary:error: but the dictionary parameter was not an 'NSDictionary'."]; - return nil; - } - - //create a class instance - self = [self init]; - if (!self) { - - //super init didn't succeed - if (err) *err = [JSONModelError errorModelIsInvalid]; - return nil; - } - - //check incoming data structure - if (![self __doesDictionary:dict matchModelWithKeyMapper:self.__keyMapper error:err]) { - return nil; - } - - //import the data from a dictionary - if (![self __importDictionary:dict withKeyMapper:self.__keyMapper validation:YES error:err]) { - return nil; - } - - //run any custom model validation - if (![self validate:err]) { - return nil; - } - - //model is valid! yay! - return self; -} - --(JSONKeyMapper*)__keyMapper -{ - //get the model key mapper - return objc_getAssociatedObject(self.class, &kMapperObjectKey); -} - --(BOOL)__doesDictionary:(NSDictionary*)dict matchModelWithKeyMapper:(JSONKeyMapper*)keyMapper error:(NSError**)err -{ - //check if all required properties are present - NSArray* incomingKeysArray = [dict allKeys]; - NSMutableSet* requiredProperties = [self __requiredPropertyNames].mutableCopy; - NSSet* incomingKeys = [NSSet setWithArray: incomingKeysArray]; - - //transform the key names, if neccessary - if (keyMapper || globalKeyMapper) { - - NSMutableSet* transformedIncomingKeys = [NSMutableSet setWithCapacity: requiredProperties.count]; - NSString* transformedName = nil; - - //loop over the required properties list - for (JSONModelClassProperty* property in [self __properties__]) { - - transformedName = (keyMapper||globalKeyMapper) ? [self __mapString:property.name withKeyMapper:keyMapper importing:YES] : property.name; - - //chek if exists and if so, add to incoming keys - id value; - @try { - value = [dict valueForKeyPath:transformedName]; - } - @catch (NSException *exception) { - value = dict[transformedName]; - } - - if (value) { - [transformedIncomingKeys addObject: property.name]; - } - } - - //overwrite the raw incoming list with the mapped key names - incomingKeys = transformedIncomingKeys; - } - - //check for missing input keys - if (![requiredProperties isSubsetOfSet:incomingKeys]) { - - //get a list of the missing properties - [requiredProperties minusSet:incomingKeys]; - - //not all required properties are in - invalid input - JMLog(@"Incoming data was invalid [%@ initWithDictionary:]. Keys missing: %@", self.class, requiredProperties); - - if (err) *err = [JSONModelError errorInvalidDataWithMissingKeys:requiredProperties]; - return NO; - } - - //not needed anymore - incomingKeys= nil; - requiredProperties= nil; - - return YES; -} - --(NSString*)__mapString:(NSString*)string withKeyMapper:(JSONKeyMapper*)keyMapper importing:(BOOL)importing -{ - if (keyMapper) { - //custom mapper - NSString* mappedName = [keyMapper convertValue:string isImportingToModel:importing]; - if (globalKeyMapper && [mappedName isEqualToString: string]) { - mappedName = [globalKeyMapper convertValue:string isImportingToModel:importing]; - } - string = mappedName; - } else if (globalKeyMapper) { - //global keymapper - string = [globalKeyMapper convertValue:string isImportingToModel:importing]; - } - - return string; -} - --(BOOL)__importDictionary:(NSDictionary*)dict withKeyMapper:(JSONKeyMapper*)keyMapper validation:(BOOL)validation error:(NSError**)err -{ - //loop over the incoming keys and set self's properties - for (JSONModelClassProperty* property in [self __properties__]) { - - //convert key name ot model keys, if a mapper is provided - NSString* jsonKeyPath = (keyMapper||globalKeyMapper) ? [self __mapString:property.name withKeyMapper:keyMapper importing:YES] : property.name; - //JMLog(@"keyPath: %@", jsonKeyPath); - - //general check for data type compliance - id jsonValue; - @try { - jsonValue = [dict valueForKeyPath: jsonKeyPath]; - } - @catch (NSException *exception) { - jsonValue = dict[jsonKeyPath]; - } - - //check for Optional properties - if (isNull(jsonValue)) { - //skip this property, continue with next property - if (property.isOptional || !validation) continue; - - if (err) { - //null value for required property - NSString* msg = [NSString stringWithFormat:@"Value of required model key %@ is null", property.name]; - JSONModelError* dataErr = [JSONModelError errorInvalidDataWithMessage:msg]; - *err = [dataErr errorByPrependingKeyPathComponent:property.name]; - } - return NO; - } - - Class jsonValueClass = [jsonValue class]; - BOOL isValueOfAllowedType = NO; - - for (Class allowedType in allowedJSONTypes) { - if ( [jsonValueClass isSubclassOfClass: allowedType] ) { - isValueOfAllowedType = YES; - break; - } - } - - if (isValueOfAllowedType==NO) { - //type not allowed - JMLog(@"Type %@ is not allowed in JSON.", NSStringFromClass(jsonValueClass)); - - if (err) { - NSString* msg = [NSString stringWithFormat:@"Type %@ is not allowed in JSON.", NSStringFromClass(jsonValueClass)]; - JSONModelError* dataErr = [JSONModelError errorInvalidDataWithMessage:msg]; - *err = [dataErr errorByPrependingKeyPathComponent:property.name]; - } - return NO; - } - - //check if there's matching property in the model - if (property) { - - // check for custom setter, than the model doesn't need to do any guessing - // how to read the property's value from JSON - if ([self __customSetValue:jsonValue forProperty:property]) { - //skip to next JSON key - continue; - }; - - // 0) handle primitives - if (property.type == nil && property.structName==nil) { - - //generic setter - if (jsonValue != [self valueForKey:property.name]) { - [self setValue:jsonValue forKey: property.name]; - } - - //skip directly to the next key - continue; - } - - // 0.5) handle nils - if (isNull(jsonValue)) { - if ([self valueForKey:property.name] != nil) { - [self setValue:nil forKey: property.name]; - } - continue; - } - - - // 1) check if property is itself a JSONModel - if ([self __isJSONModelSubClass:property.type]) { - - //initialize the property's model, store it - JSONModelError* initErr = nil; - id value = [[property.type alloc] initWithDictionary: jsonValue error:&initErr]; - - if (!value) { - //skip this property, continue with next property - if (property.isOptional || !validation) continue; - - // Propagate the error, including the property name as the key-path component - if((err != nil) && (initErr != nil)) - { - *err = [initErr errorByPrependingKeyPathComponent:property.name]; - } - return NO; - } - if (![value isEqual:[self valueForKey:property.name]]) { - [self setValue:value forKey: property.name]; - } - - //for clarity, does the same without continue - continue; - - } else { - - // 2) check if there's a protocol to the property - // ) might or not be the case there's a built in transofrm for it - if (property.protocol) { - - //JMLog(@"proto: %@", p.protocol); - jsonValue = [self __transform:jsonValue forProperty:property error:err]; - if (!jsonValue) { - if ((err != nil) && (*err == nil)) { - NSString* msg = [NSString stringWithFormat:@"Failed to transform value, but no error was set during transformation. (%@)", property]; - JSONModelError* dataErr = [JSONModelError errorInvalidDataWithMessage:msg]; - *err = [dataErr errorByPrependingKeyPathComponent:property.name]; - } - return NO; - } - } - - // 3.1) handle matching standard JSON types - if (property.isStandardJSONType && [jsonValue isKindOfClass: property.type]) { - - //mutable properties - if (property.isMutable) { - jsonValue = [jsonValue mutableCopy]; - } - - //set the property value - if (![jsonValue isEqual:[self valueForKey:property.name]]) { - [self setValue:jsonValue forKey: property.name]; - } - continue; - } - - // 3.3) handle values to transform - if ( - (![jsonValue isKindOfClass:property.type] && !isNull(jsonValue)) - || - //the property is mutable - property.isMutable - || - //custom struct property - property.structName - ) { - - // searched around the web how to do this better - // but did not find any solution, maybe that's the best idea? (hardly) - Class sourceClass = [JSONValueTransformer classByResolvingClusterClasses:[jsonValue class]]; - - //JMLog(@"to type: [%@] from type: [%@] transformer: [%@]", p.type, sourceClass, selectorName); - - //build a method selector for the property and json object classes - NSString* selectorName = [NSString stringWithFormat:@"%@From%@:", - (property.structName? property.structName : property.type), //target name - sourceClass]; //source name - SEL selector = NSSelectorFromString(selectorName); - - //check for custom transformer - BOOL foundCustomTransformer = NO; - if ([valueTransformer respondsToSelector:selector]) { - foundCustomTransformer = YES; - } else { - //try for hidden custom transformer - selectorName = [NSString stringWithFormat:@"__%@",selectorName]; - selector = NSSelectorFromString(selectorName); - if ([valueTransformer respondsToSelector:selector]) { - foundCustomTransformer = YES; - } - } - - //check if there's a transformer with that name - if (foundCustomTransformer) { - - //it's OK, believe me... -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-performSelector-leaks" - //transform the value - jsonValue = [valueTransformer performSelector:selector withObject:jsonValue]; -#pragma clang diagnostic pop - - if (![jsonValue isEqual:[self valueForKey:property.name]]) { - [self setValue:jsonValue forKey: property.name]; - } - - } else { - - // it's not a JSON data type, and there's no transformer for it - // if property type is not supported - that's a programmer mistaked -> exception - @throw [NSException exceptionWithName:@"Type not allowed" - reason:[NSString stringWithFormat:@"%@ type not supported for %@.%@", property.type, [self class], property.name] - userInfo:nil]; - return NO; - } - - } else { - // 3.4) handle "all other" cases (if any) - if (![jsonValue isEqual:[self valueForKey:property.name]]) { - [self setValue:jsonValue forKey: property.name]; - } - } - } - } - } - - return YES; -} - -#pragma mark - property inspection methods - --(BOOL)__isJSONModelSubClass:(Class)class -{ -// http://stackoverflow.com/questions/19883472/objc-nsobject-issubclassofclass-gives-incorrect-failure -#ifdef UNIT_TESTING - return [@"JSONModel" isEqualToString: NSStringFromClass([class superclass])]; -#else - return [class isSubclassOfClass:JSONModelClass]; -#endif -} - -//returns a set of the required keys for the model --(NSMutableSet*)__requiredPropertyNames -{ - //fetch the associated property names - NSMutableSet* classRequiredPropertyNames = objc_getAssociatedObject(self.class, &kClassRequiredPropertyNamesKey); - - if (!classRequiredPropertyNames) { - classRequiredPropertyNames = [NSMutableSet set]; - [[self __properties__] enumerateObjectsUsingBlock:^(JSONModelClassProperty* p, NSUInteger idx, BOOL *stop) { - if (!p.isOptional) [classRequiredPropertyNames addObject:p.name]; - }]; - - //persist the list - objc_setAssociatedObject( - self.class, - &kClassRequiredPropertyNamesKey, - classRequiredPropertyNames, - OBJC_ASSOCIATION_RETAIN // This is atomic - ); - } - return classRequiredPropertyNames; -} - -//returns a list of the model's properties --(NSArray*)__properties__ -{ - //fetch the associated object - NSDictionary* classProperties = objc_getAssociatedObject(self.class, &kClassPropertiesKey); - if (classProperties) return [classProperties allValues]; - - //if here, the class needs to inspect itself - [self __setup__]; - - //return the property list - classProperties = objc_getAssociatedObject(self.class, &kClassPropertiesKey); - return [classProperties allValues]; -} - -//inspects the class, get's a list of the class properties --(void)__inspectProperties -{ - //JMLog(@"Inspect class: %@", [self class]); - - NSMutableDictionary* propertyIndex = [NSMutableDictionary dictionary]; - - //temp variables for the loops - Class class = [self class]; - NSScanner* scanner = nil; - NSString* propertyType = nil; - - // inspect inherited properties up to the JSONModel class - while (class != [JSONModel class]) { - //JMLog(@"inspecting: %@", NSStringFromClass(class)); - - unsigned int propertyCount; - objc_property_t *properties = class_copyPropertyList(class, &propertyCount); - - //loop over the class properties - for (unsigned int i = 0; i < propertyCount; i++) { - - JSONModelClassProperty* p = [[JSONModelClassProperty alloc] init]; - - //get property name - objc_property_t property = properties[i]; - const char *propertyName = property_getName(property); - p.name = @(propertyName); - - //JMLog(@"property: %@", p.name); - - //get property attributes - const char *attrs = property_getAttributes(property); - NSString* propertyAttributes = @(attrs); - NSArray* attributeItems = [propertyAttributes componentsSeparatedByString:@","]; - - //ignore read-only properties - if ([attributeItems containsObject:@"R"]) { - continue; //to next property - } - - //check for 64b BOOLs - if ([propertyAttributes hasPrefix:@"Tc,"]) { - //mask BOOLs as structs so they can have custom convertors - p.structName = @"BOOL"; - } - - scanner = [NSScanner scannerWithString: propertyAttributes]; - - //JMLog(@"attr: %@", [NSString stringWithCString:attrs encoding:NSUTF8StringEncoding]); - [scanner scanUpToString:@"T" intoString: nil]; - [scanner scanString:@"T" intoString:nil]; - - //check if the property is an instance of a class - if ([scanner scanString:@"@\"" intoString: &propertyType]) { - - [scanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@"\"<"] - intoString:&propertyType]; - - //JMLog(@"type: %@", propertyClassName); - p.type = NSClassFromString(propertyType); - p.isMutable = ([propertyType rangeOfString:@"Mutable"].location != NSNotFound); - p.isStandardJSONType = [allowedJSONTypes containsObject:p.type]; - - //read through the property protocols - while ([scanner scanString:@"<" intoString:NULL]) { - - NSString* protocolName = nil; - - [scanner scanUpToString:@">" intoString: &protocolName]; - - if ([protocolName isEqualToString:@"Optional"]) { - p.isOptional = YES; - } else if([protocolName isEqualToString:@"Index"]) { - p.isIndex = YES; - objc_setAssociatedObject( - self.class, - &kIndexPropertyNameKey, - p.name, - OBJC_ASSOCIATION_RETAIN // This is atomic - ); - } else if([protocolName isEqualToString:@"ConvertOnDemand"]) { - p.convertsOnDemand = YES; - } else if([protocolName isEqualToString:@"Ignore"]) { - p = nil; - } else { - p.protocol = protocolName; - } - - [scanner scanString:@">" intoString:NULL]; - } - - } - //check if the property is a structure - else if ([scanner scanString:@"{" intoString: &propertyType]) { - [scanner scanCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] - intoString:&propertyType]; - - p.isStandardJSONType = NO; - p.structName = propertyType; - - } - //the property must be a primitive - else { - - //the property contains a primitive data type - [scanner scanUpToCharactersFromSet:[NSCharacterSet characterSetWithCharactersInString:@","] - intoString:&propertyType]; - - //get the full name of the primitive type - propertyType = valueTransformer.primitivesNames[propertyType]; - - if (![allowedPrimitiveTypes containsObject:propertyType]) { - - //type not allowed - programmer mistaked -> exception - @throw [NSException exceptionWithName:@"JSONModelProperty type not allowed" - reason:[NSString stringWithFormat:@"Property type of %@.%@ is not supported by JSONModel.", self.class, p.name] - userInfo:nil]; - } - - } - - NSString *nsPropertyName = @(propertyName); - if([[self class] propertyIsOptional:nsPropertyName]){ - p.isOptional = YES; - } - - if([[self class] propertyIsIgnored:nsPropertyName]){ - p = nil; - } - - //few cases where JSONModel will ignore properties automatically - if ([propertyType isEqualToString:@"Block"]) { - p = nil; - } - - //add the property object to the temp index - if (p && ![propertyIndex objectForKey:p.name]) { - [propertyIndex setValue:p forKey:p.name]; - } - } - - free(properties); - - //ascend to the super of the class - //(will do that until it reaches the root class - JSONModel) - class = [class superclass]; - } - - //finally store the property index in the static property index - objc_setAssociatedObject( - self.class, - &kClassPropertiesKey, - [propertyIndex copy], - OBJC_ASSOCIATION_RETAIN // This is atomic - ); -} - -#pragma mark - built-in transformer methods -//few built-in transformations --(id)__transform:(id)value forProperty:(JSONModelClassProperty*)property error:(NSError**)err -{ - Class protocolClass = NSClassFromString(property.protocol); - if (!protocolClass) { - - //no other protocols on arrays and dictionaries - //except JSONModel classes - if ([value isKindOfClass:[NSArray class]]) { - @throw [NSException exceptionWithName:@"Bad property protocol declaration" - reason:[NSString stringWithFormat:@"<%@> is not allowed JSONModel property protocol, and not a JSONModel class.", property.protocol] - userInfo:nil]; - } - return value; - } - - //if the protocol is actually a JSONModel class - if ([self __isJSONModelSubClass:protocolClass]) { - - //check if it's a list of models - if ([property.type isSubclassOfClass:[NSArray class]]) { - - // Expecting an array, make sure 'value' is an array - if(![[value class] isSubclassOfClass:[NSArray class]]) - { - if(err != nil) - { - NSString* mismatch = [NSString stringWithFormat:@"Property '%@' is declared as NSArray<%@>* but the corresponding JSON value is not a JSON Array.", property.name, property.protocol]; - JSONModelError* typeErr = [JSONModelError errorInvalidDataWithTypeMismatch:mismatch]; - *err = [typeErr errorByPrependingKeyPathComponent:property.name]; - } - return nil; - } - - if (property.convertsOnDemand) { - //on demand conversion - value = [[JSONModelArray alloc] initWithArray:value modelClass:[protocolClass class]]; - - } else { - //one shot conversion - JSONModelError* arrayErr = nil; - value = [[protocolClass class] arrayOfModelsFromDictionaries:value error:&arrayErr]; - if((err != nil) && (arrayErr != nil)) - { - *err = [arrayErr errorByPrependingKeyPathComponent:property.name]; - return nil; - } - } - } - - //check if it's a dictionary of models - if ([property.type isSubclassOfClass:[NSDictionary class]]) { - - // Expecting a dictionary, make sure 'value' is a dictionary - if(![[value class] isSubclassOfClass:[NSDictionary class]]) - { - if(err != nil) - { - NSString* mismatch = [NSString stringWithFormat:@"Property '%@' is declared as NSDictionary<%@>* but the corresponding JSON value is not a JSON Object.", property.name, property.protocol]; - JSONModelError* typeErr = [JSONModelError errorInvalidDataWithTypeMismatch:mismatch]; - *err = [typeErr errorByPrependingKeyPathComponent:property.name]; - } - return nil; - } - - NSMutableDictionary* res = [NSMutableDictionary dictionary]; - - for (NSString* key in [value allKeys]) { - JSONModelError* initErr = nil; - id obj = [[[protocolClass class] alloc] initWithDictionary:value[key] error:&initErr]; - if (obj == nil) - { - // Propagate the error, including the property name as the key-path component - if((err != nil) && (initErr != nil)) - { - initErr = [initErr errorByPrependingKeyPathComponent:key]; - *err = [initErr errorByPrependingKeyPathComponent:property.name]; - } - return nil; - } - [res setValue:obj forKey:key]; - } - value = [NSDictionary dictionaryWithDictionary:res]; - } - } - - return value; -} - -//built-in reverse transormations (export to JSON compliant objects) --(id)__reverseTransform:(id)value forProperty:(JSONModelClassProperty*)property -{ - Class protocolClass = NSClassFromString(property.protocol); - if (!protocolClass) return value; - - //if the protocol is actually a JSONModel class - if ([self __isJSONModelSubClass:protocolClass]) { - - //check if should export list of dictionaries - if (property.type == [NSArray class] || property.type == [NSMutableArray class]) { - NSMutableArray* tempArray = [NSMutableArray arrayWithCapacity: [(NSArray*)value count] ]; - for (NSObject* model in (NSArray*)value) { - if ([model respondsToSelector:@selector(toDictionary)]) { - [tempArray addObject: [model toDictionary]]; - } else - [tempArray addObject: model]; - } - return [tempArray copy]; - } - - //check if should export dictionary of dictionaries - if (property.type == [NSDictionary class] || property.type == [NSMutableDictionary class]) { - NSMutableDictionary* res = [NSMutableDictionary dictionary]; - for (NSString* key in [(NSDictionary*)value allKeys]) { - id model = value[key]; - [res setValue: [model toDictionary] forKey: key]; - } - return [NSDictionary dictionaryWithDictionary:res]; - } - } - - return value; -} - -#pragma mark - custom transformations --(BOOL)__customSetValue:(id)value forProperty:(JSONModelClassProperty*)property -{ - if (property.setterType == kNotInspected) { - //check for a custom property setter method - NSString* ucfirstName = [property.name stringByReplacingCharactersInRange:NSMakeRange(0,1) - withString:[[property.name substringToIndex:1] uppercaseString]]; - NSString* selectorName = [NSString stringWithFormat:@"set%@With%@:", ucfirstName, - [JSONValueTransformer classByResolvingClusterClasses:[value class]] - ]; - - SEL customPropertySetter = NSSelectorFromString(selectorName); - - //check if there's a custom selector like this - if (![self respondsToSelector: customPropertySetter]) { - property.setterType = kNo; - return NO; - } - - //cache the custom setter selector - property.setterType = kCustom; - property.customSetter = customPropertySetter; - } - - if (property.setterType==kCustom) { - //call the custom setter - //https://github.com/steipete - ((void (*) (id, SEL, id))objc_msgSend)(self, property.customSetter, value); - return YES; - } - - return NO; -} - --(BOOL)__customGetValue:(id*)value forProperty:(JSONModelClassProperty*)property -{ - if (property.getterType == kNotInspected) { - //check for a custom property getter method - NSString* ucfirstName = [property.name stringByReplacingCharactersInRange: NSMakeRange(0,1) - withString: [[property.name substringToIndex:1] uppercaseString]]; - NSString* selectorName = [NSString stringWithFormat:@"JSONObjectFor%@", ucfirstName]; - - SEL customPropertyGetter = NSSelectorFromString(selectorName); - if (![self respondsToSelector: customPropertyGetter]) { - property.getterType = kNo; - return NO; - } - - property.getterType = kCustom; - property.customGetter = customPropertyGetter; - - } - - if (property.getterType==kCustom) { - //call the custom getter - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Warc-performSelector-leaks" - *value = [self performSelector:property.customGetter]; - #pragma clang diagnostic pop - return YES; - } - - return NO; -} - -#pragma mark - persistance --(void)__createDictionariesForKeyPath:(NSString*)keyPath inDictionary:(NSMutableDictionary**)dict -{ - //find if there's a dot left in the keyPath - NSUInteger dotLocation = [keyPath rangeOfString:@"."].location; - if (dotLocation==NSNotFound) return; - - //inspect next level - NSString* nextHierarchyLevelKeyName = [keyPath substringToIndex: dotLocation]; - NSDictionary* nextLevelDictionary = (*dict)[nextHierarchyLevelKeyName]; - - if (nextLevelDictionary==nil) { - //create non-existing next level here - nextLevelDictionary = [NSMutableDictionary dictionary]; - } - - //recurse levels - [self __createDictionariesForKeyPath:[keyPath substringFromIndex: dotLocation+1] - inDictionary:&nextLevelDictionary ]; - - //create the hierarchy level - [*dict setValue:nextLevelDictionary forKeyPath: nextHierarchyLevelKeyName]; -} - --(NSDictionary*)toDictionary -{ - return [self toDictionaryWithKeys:nil]; -} - --(NSString*)toJSONString -{ - return [self toJSONStringWithKeys:nil]; -} - --(NSData*)toJSONData -{ - return [self toJSONDataWithKeys:nil]; -} - -//exports the model as a dictionary of JSON compliant objects --(NSDictionary*)toDictionaryWithKeys:(NSArray*)propertyNames -{ - NSArray* properties = [self __properties__]; - NSMutableDictionary* tempDictionary = [NSMutableDictionary dictionaryWithCapacity:properties.count]; - - id value; - - //loop over all properties - for (JSONModelClassProperty* p in properties) { - - //skip if unwanted - if (propertyNames != nil && ![propertyNames containsObject:p.name]) - continue; - - //fetch key and value - NSString* keyPath = (self.__keyMapper||globalKeyMapper) ? [self __mapString:p.name withKeyMapper:self.__keyMapper importing:YES] : p.name; - value = [self valueForKey: p.name]; - - //JMLog(@"toDictionary[%@]->[%@] = '%@'", p.name, keyPath, value); - - if ([keyPath rangeOfString:@"."].location != NSNotFound) { - //there are sub-keys, introduce dictionaries for them - [self __createDictionariesForKeyPath:keyPath inDictionary:&tempDictionary]; - } - - //check for custom getter - if ([self __customGetValue:&value forProperty:p]) { - //custom getter, all done - [tempDictionary setValue:value forKeyPath:keyPath]; - continue; - } - - //export nil when they are not optional values as JSON null, so that the structure of the exported data - //is still valid if it's to be imported as a model again - if (isNull(value)) { - - if (p.isOptional) - { - [tempDictionary removeObjectForKey:keyPath]; - } - else - { - [tempDictionary setValue:[NSNull null] forKeyPath:keyPath]; - } - continue; - } - - //check if the property is another model - if ([value isKindOfClass:JSONModelClass]) { - - //recurse models - value = [(JSONModel*)value toDictionary]; - [tempDictionary setValue:value forKeyPath: keyPath]; - - //for clarity - continue; - - } else { - - // 1) check for built-in transformation - if (p.protocol) { - value = [self __reverseTransform:value forProperty:p]; - } - - // 2) check for standard types OR 2.1) primitives - if (p.structName==nil && (p.isStandardJSONType || p.type==nil)) { - - //generic get value - [tempDictionary setValue:value forKeyPath: keyPath]; - - continue; - } - - // 3) try to apply a value transformer - if (YES) { - - //create selector from the property's class name - NSString* selectorName = [NSString stringWithFormat:@"%@From%@:", @"JSONObject", p.type?p.type:p.structName]; - SEL selector = NSSelectorFromString(selectorName); - - BOOL foundCustomTransformer = NO; - if ([valueTransformer respondsToSelector:selector]) { - foundCustomTransformer = YES; - } else { - //try for hidden transformer - selectorName = [NSString stringWithFormat:@"__%@",selectorName]; - selector = NSSelectorFromString(selectorName); - if ([valueTransformer respondsToSelector:selector]) { - foundCustomTransformer = YES; - } - } - - //check if there's a transformer declared - if (foundCustomTransformer) { - - //it's OK, believe me... -#pragma clang diagnostic push -#pragma clang diagnostic ignored "-Warc-performSelector-leaks" - value = [valueTransformer performSelector:selector withObject:value]; -#pragma clang diagnostic pop - - [tempDictionary setValue:value forKeyPath: keyPath]; - - } else { - - //in this case most probably a custom property was defined in a model - //but no default reverse transofrmer for it - @throw [NSException exceptionWithName:@"Value transformer not found" - reason:[NSString stringWithFormat:@"[JSONValueTransformer %@] not found", selectorName] - userInfo:nil]; - return nil; - } - } - } - } - - return [tempDictionary copy]; -} - -//exports model to a dictionary and then to a JSON string --(NSData*)toJSONDataWithKeys:(NSArray*)propertyNames -{ - NSData* jsonData = nil; - NSError* jsonError = nil; - - @try { - NSDictionary* dict = [self toDictionaryWithKeys:propertyNames]; - jsonData = [NSJSONSerialization dataWithJSONObject:dict options:kNilOptions error:&jsonError]; - } - @catch (NSException *exception) { - //this should not happen in properly design JSONModel - //usually means there was no reverse transformer for a custom property - JMLog(@"EXCEPTION: %@", exception.description); - return nil; - } - - return jsonData; -} - --(NSString*)toJSONStringWithKeys:(NSArray*)propertyNames -{ - return [[NSString alloc] initWithData: [self toJSONDataWithKeys: propertyNames] - encoding: NSUTF8StringEncoding]; -} - -#pragma mark - import/export of lists -//loop over an NSArray of JSON objects and turn them into models -+(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array -{ - return [self arrayOfModelsFromDictionaries:array error:nil]; -} - -+(NSMutableArray*)arrayOfModelsFromData:(NSData *)data error:(NSError *__autoreleasing *)err -{ - id json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:err]; - if (!json || ![json isKindOfClass:[NSArray class]]) return nil; - - return [self arrayOfModelsFromDictionaries:json error:err]; -} - -// Same as above, but with error reporting -+(NSMutableArray*)arrayOfModelsFromDictionaries:(NSArray*)array error:(NSError**)err -{ - //bail early - if (isNull(array)) return nil; - - //parse dictionaries to objects - NSMutableArray* list = [NSMutableArray arrayWithCapacity: [array count]]; - - for (id d in array) - { - if ([d isKindOfClass:NSDictionary.class]) - { - JSONModelError* initErr = nil; - id obj = [[self alloc] initWithDictionary:d error:&initErr]; - if (obj == nil) - { - // Propagate the error, including the array index as the key-path component - if((err != nil) && (initErr != nil)) - { - NSString* path = [NSString stringWithFormat:@"[%lu]", (unsigned long)list.count]; - *err = [initErr errorByPrependingKeyPathComponent:path]; - } - return nil; - } - - [list addObject: obj]; - } else if ([d isKindOfClass:NSArray.class]) - { - [list addObjectsFromArray:[self arrayOfModelsFromDictionaries:d error:err]]; - } else - { - // This is very bad - } - - } - - return list; -} - -//loop over NSArray of models and export them to JSON objects -+(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array -{ - //bail early - if (isNull(array)) return nil; - - //convert to dictionaries - NSMutableArray* list = [NSMutableArray arrayWithCapacity: [array count]]; - - for (id object in array) { - - id obj = [object toDictionary]; - if (!obj) return nil; - - [list addObject: obj]; - } - return list; -} - -//loop over NSArray of models and export them to JSON objects with specific properties -+(NSMutableArray*)arrayOfDictionariesFromModels:(NSArray*)array propertyNamesToExport:(NSArray*)propertyNamesToExport; -{ - //bail early - if (isNull(array)) return nil; - - //convert to dictionaries - NSMutableArray* list = [NSMutableArray arrayWithCapacity: [array count]]; - - for (id object in array) { - - id obj = [object toDictionaryWithKeys:propertyNamesToExport]; - if (!obj) return nil; - - [list addObject: obj]; - } - return list; -} - -#pragma mark - custom comparison methods --(NSString*)indexPropertyName -{ - //custom getter for an associated object - return objc_getAssociatedObject(self.class, &kIndexPropertyNameKey); -} - --(BOOL)isEqual:(id)object -{ - //bail early if different classes - if (![object isMemberOfClass:[self class]]) return NO; - - if (self.indexPropertyName) { - //there's a defined ID property - id objectId = [object valueForKey: self.indexPropertyName]; - return [[self valueForKey: self.indexPropertyName] isEqual:objectId]; - } - - //default isEqual implementation - return [super isEqual:object]; -} - --(NSComparisonResult)compare:(id)object -{ - if (self.indexPropertyName) { - id objectId = [object valueForKey: self.indexPropertyName]; - if ([objectId respondsToSelector:@selector(compare:)]) { - return [[self valueForKey:self.indexPropertyName] compare:objectId]; - } - } - - //on purpose postponing the asserts for speed optimization - //these should not happen anyway in production conditions - NSAssert(self.indexPropertyName, @"Can't compare models with no property"); - NSAssert1(NO, @"The property of %@ is not comparable class.", [self class]); - return kNilOptions; -} - -- (NSUInteger)hash -{ - if (self.indexPropertyName) { - return [self.indexPropertyName hash]; - } - - return [super hash]; -} - -#pragma mark - custom data validation --(BOOL)validate:(NSError**)error -{ - return YES; -} - -#pragma mark - custom recursive description -//custom description method for debugging purposes --(NSString*)description -{ - NSMutableString* text = [NSMutableString stringWithFormat:@"<%@> \n", [self class]]; - - for (JSONModelClassProperty *p in [self __properties__]) { - - id value = ([p.name isEqualToString:@"description"])?self->_description:[self valueForKey:p.name]; - NSString* valueDescription = (value)?[value description]:@""; - - if (p.isStandardJSONType && ![value respondsToSelector:@selector(count)] && [valueDescription length]>60 && !p.convertsOnDemand) { - - //cap description for longer values - valueDescription = [NSString stringWithFormat:@"%@...", [valueDescription substringToIndex:59]]; - } - valueDescription = [valueDescription stringByReplacingOccurrencesOfString:@"\n" withString:@"\n "]; - [text appendFormat:@" [%@]: %@\n", p.name, valueDescription]; - } - - [text appendFormat:@"", [self class]]; - return text; -} - -#pragma mark - key mapping -+(JSONKeyMapper*)keyMapper -{ - return nil; -} - -+(void)setGlobalKeyMapper:(JSONKeyMapper*)globalKeyMapperParam -{ - globalKeyMapper = globalKeyMapperParam; -} - -+(BOOL)propertyIsOptional:(NSString*)propertyName -{ - return NO; -} - -+(BOOL)propertyIsIgnored:(NSString *)propertyName -{ - return NO; -} - -#pragma mark - working with incomplete models --(void)mergeFromDictionary:(NSDictionary*)dict useKeyMapping:(BOOL)useKeyMapping -{ - [self __importDictionary:dict withKeyMapper:(useKeyMapping)? self.__keyMapper:nil validation:NO error:nil]; -} - -#pragma mark - NSCopying, NSCoding --(instancetype)copyWithZone:(NSZone *)zone -{ - return [NSKeyedUnarchiver unarchiveObjectWithData: - [NSKeyedArchiver archivedDataWithRootObject:self] - ]; -} - --(instancetype)initWithCoder:(NSCoder *)decoder -{ - NSString* json = [decoder decodeObjectForKey:@"json"]; - - JSONModelError *error = nil; - self = [self initWithString:json error:&error]; - if (error) { - JMLog(@"%@",[error localizedDescription]); - } - return self; -} - --(void)encodeWithCoder:(NSCoder *)encoder -{ - [encoder encodeObject:self.toJSONString forKey:@"json"]; -} - -+ (BOOL)supportsSecureCoding -{ - return YES; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h deleted file mode 100644 index e858ad78c5f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.h +++ /dev/null @@ -1,60 +0,0 @@ -// -// JSONModelArray.h -// -// @version 0.8.0 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import - -/** - * **Don't make instances of JSONModelArray yourself, except you know what you are doing.** - * - * You get automatically JSONModelArray instances, when you declare a convert on demand property, like so: - * - * @property (strong, nonatomic) NSArray<JSONModel, ConvertOnDemand>* list; - * - * The class stores its contents as they come from JSON, and upon the first request - * of each of the objects stored in the array, it'll be converted to the target model class. - * Thus saving time upon the very first model creation. - */ -@interface JSONModelArray : NSObject - -/** - * Don't make instances of JSONModelArray yourself, except you know what you are doing. - * - * @param array an array of NSDictionary objects - * @param cls the JSONModel sub-class you'd like the NSDictionaries to be converted to on demand - */ -- (id)initWithArray:(NSArray *)array modelClass:(Class)cls; - -- (id)objectAtIndex:(NSUInteger)index; -- (id)objectAtIndexedSubscript:(NSUInteger)index; -- (void)forwardInvocation:(NSInvocation *)anInvocation; -- (NSUInteger)count; -- (id)firstObject; -- (id)lastObject; - -/** - * Looks up the array's contents and tries to find a JSONModel object - * with matching index property value to the indexValue param. - * - * Will return nil if no matching model is found. Will return nil if there's no index property - * defined on the models found in the array (will sample the first object, assuming the array - * contains homogenous collection of objects) - * - * @param indexValue the id value to search for - * @return the found model or nil - */ -- (id)modelWithIndexValue:(id)indexValue; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m deleted file mode 100644 index 88eddc7ad49..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelArray.m +++ /dev/null @@ -1,145 +0,0 @@ -// -// JSONModelArray.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONModelArray.h" -#import "JSONModel.h" - -@implementation JSONModelArray -{ - NSMutableArray* _storage; - Class _targetClass; -} - --(id)initWithArray:(NSArray *)array modelClass:(Class)cls -{ - self = [super init]; - - if (self) { - _storage = [NSMutableArray arrayWithArray:array]; - _targetClass = cls; - } - return self; -} - --(id)firstObject -{ - return [self objectAtIndex:0]; -} - --(id)lastObject -{ - return [self objectAtIndex:_storage.count - 1]; -} - --(id)objectAtIndex:(NSUInteger)index -{ - return [self objectAtIndexedSubscript:index]; -} - --(id)objectAtIndexedSubscript:(NSUInteger)index -{ - id object = _storage[index]; - if (![object isMemberOfClass:_targetClass]) { - NSError* err = nil; - object = [[_targetClass alloc] initWithDictionary:object error:&err]; - if (object) { - _storage[index] = object; - } - } - return object; -} - --(void)forwardInvocation:(NSInvocation *)anInvocation -{ - [anInvocation invokeWithTarget:_storage]; -} - --(id)forwardingTargetForSelector:(SEL)selector -{ - static NSArray* overridenMethods = nil; - if (!overridenMethods) overridenMethods = @[@"initWithArray:modelClass:",@"objectAtIndex:",@"objectAtIndexedSubscript:", @"count",@"modelWithIndexValue:",@"description",@"mutableCopy",@"firstObject",@"lastObject",@"countByEnumeratingWithState:objects:count:"]; - if ([overridenMethods containsObject:NSStringFromSelector(selector)]) { - return self; - } - return _storage; -} - --(NSUInteger)count -{ - return _storage.count; -} - --(id)modelWithIndexValue:(id)indexValue -{ - if (self.count==0) return nil; - if (![_storage[0] indexPropertyName]) return nil; - - for (JSONModel* model in _storage) { - if ([[model valueForKey:model.indexPropertyName] isEqual:indexValue]) { - return model; - } - } - - return nil; -} - --(id)mutableCopy -{ - //it's already mutable - return self; -} - -#pragma mark - description --(NSString*)description -{ - NSMutableString* res = [NSMutableString stringWithFormat:@"\n", [_targetClass description]]; - for (id m in _storage) { - [res appendString: [m description]]; - [res appendString: @",\n"]; - } - [res appendFormat:@"\n"]; - return res; -} - --(NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state - objects:(id __unsafe_unretained [])stackbuf - count:(NSUInteger)stackbufLength -{ - NSUInteger count = 0; - - unsigned long countOfItemsAlreadyEnumerated = state->state; - - if (countOfItemsAlreadyEnumerated == 0) { - state->mutationsPtr = &state->extra[0]; - } - - if (countOfItemsAlreadyEnumerated < [self count]) { - state->itemsPtr = stackbuf; - while ((countOfItemsAlreadyEnumerated < [self count]) && (count < stackbufLength)) { - stackbuf[count] = [self objectAtIndex:countOfItemsAlreadyEnumerated]; - countOfItemsAlreadyEnumerated++; - count++; - } - } else { - count = 0; - } - - state->state = countOfItemsAlreadyEnumerated; - - return count; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h deleted file mode 100644 index 7e470707554..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.h +++ /dev/null @@ -1,77 +0,0 @@ -// -// JSONModelClassProperty.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import - -enum kCustomizationTypes { - kNotInspected = 0, - kCustom, - kNo - }; - -typedef enum kCustomizationTypes PropertySetterType; -typedef enum kCustomizationTypes PropertyGetterType; - -/** - * **You do not need to instantiate this class yourself.** This class is used internally by JSONModel - * to inspect the declared properties of your model class. - * - * Class to contain the information, representing a class property - * It features the property's name, type, whether it's a required property, - * and (optionally) the class protocol - */ -@interface JSONModelClassProperty : NSObject - -/** The name of the declared property (not the ivar name) */ -@property (copy, nonatomic) NSString* name; - -/** A property class type */ -@property (assign, nonatomic) Class type; - -/** Struct name if a struct */ -@property (strong, nonatomic) NSString* structName; - -/** The name of the protocol the property conforms to (or nil) */ -@property (copy, nonatomic) NSString* protocol; - -/** If YES, it can be missing in the input data, and the input would be still valid */ -@property (assign, nonatomic) BOOL isOptional; - -/** If YES - don't call any transformers on this property's value */ -@property (assign, nonatomic) BOOL isStandardJSONType; - -/** If YES - create a mutable object for the value of the property */ -@property (assign, nonatomic) BOOL isMutable; - -/** If YES - create models on demand for the array members */ -@property (assign, nonatomic) BOOL convertsOnDemand; - -/** If YES - the value of this property determines equality to other models */ -@property (assign, nonatomic) BOOL isIndex; - -/** The status of property getter introspection in a model */ -@property (assign, nonatomic) PropertyGetterType getterType; - -/** a custom getter for this property, found in the owning model */ -@property (assign, nonatomic) SEL customGetter; - -/** The status of property setter introspection in a model */ -@property (assign, nonatomic) PropertySetterType setterType; - -/** a custom setter for this property, found in the owning model */ -@property (assign, nonatomic) SEL customSetter; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m deleted file mode 100644 index 0fe9158261d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelClassProperty.m +++ /dev/null @@ -1,48 +0,0 @@ -// -// JSONModelClassProperty.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONModelClassProperty.h" - -@implementation JSONModelClassProperty - --(NSString*)description -{ - //build the properties string for the current class property - NSMutableArray* properties = [NSMutableArray arrayWithCapacity:8]; - - if (self.isIndex) [properties addObject:@"Index"]; - if (self.isOptional) [properties addObject:@"Optional"]; - if (self.isMutable) [properties addObject:@"Mutable"]; - if (self.convertsOnDemand) [properties addObject:@"ConvertOnDemand"]; - if (self.isStandardJSONType) [properties addObject:@"Standard JSON type"]; - if (self.customSetter) [properties addObject:[NSString stringWithFormat: @"Setter = %@", NSStringFromSelector(self.customSetter)]]; - if (self.customGetter) [properties addObject:[NSString stringWithFormat: @"Getter = %@", NSStringFromSelector(self.customGetter)]]; - - NSString* propertiesString = @""; - if (properties.count>0) { - propertiesString = [NSString stringWithFormat:@"(%@)", [properties componentsJoinedByString:@", "]]; - } - - //return the name, type and additional properties - return [NSString stringWithFormat:@"@property %@%@ %@ %@", - self.type?[NSString stringWithFormat:@"%@*",self.type]:(self.structName?self.structName:@"primitive"), - self.protocol?[NSString stringWithFormat:@"<%@>", self.protocol]:@"", - self.name, - propertiesString - ]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h deleted file mode 100644 index 36f41ef55bd..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.h +++ /dev/null @@ -1,112 +0,0 @@ -// -// JSONModelError.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import - -///////////////////////////////////////////////////////////////////////////////////////////// -typedef NS_ENUM(int, kJSONModelErrorTypes) -{ - kJSONModelErrorInvalidData = 1, - kJSONModelErrorBadResponse = 2, - kJSONModelErrorBadJSON = 3, - kJSONModelErrorModelIsInvalid = 4, - kJSONModelErrorNilInput = 5 -}; - -///////////////////////////////////////////////////////////////////////////////////////////// -/** The domain name used for the JSONModelError instances */ -extern NSString* const JSONModelErrorDomain; - -/** - * If the model JSON input misses keys that are required, check the - * userInfo dictionary of the JSONModelError instance you get back - - * under the kJSONModelMissingKeys key you will find a list of the - * names of the missing keys. - */ -extern NSString* const kJSONModelMissingKeys; - -/** - * If JSON input has a different type than expected by the model, check the - * userInfo dictionary of the JSONModelError instance you get back - - * under the kJSONModelTypeMismatch key you will find a description - * of the mismatched types. - */ -extern NSString* const kJSONModelTypeMismatch; - -/** - * If an error occurs in a nested model, check the userInfo dictionary of - * the JSONModelError instance you get back - under the kJSONModelKeyPath - * key you will find key-path at which the error occurred. - */ -extern NSString* const kJSONModelKeyPath; - -///////////////////////////////////////////////////////////////////////////////////////////// -/** - * Custom NSError subclass with shortcut methods for creating - * the common JSONModel errors - */ -@interface JSONModelError : NSError - -@property (strong, nonatomic) NSHTTPURLResponse* httpResponse; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorInvalidData = 1 - */ -+(id)errorInvalidDataWithMessage:(NSString*)message; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorInvalidData = 1 - * @param keys a set of field names that were required, but not found in the input - */ -+(id)errorInvalidDataWithMissingKeys:(NSSet*)keys; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorInvalidData = 1 - * @param A description of the type mismatch that was encountered. - */ -+(id)errorInvalidDataWithTypeMismatch:(NSString*)mismatchDescription; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorBadResponse = 2 - */ -+(id)errorBadResponse; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorBadJSON = 3 - */ -+(id)errorBadJSON; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorModelIsInvalid = 4 - */ -+(id)errorModelIsInvalid; - -/** - * Creates a JSONModelError instance with code kJSONModelErrorNilInput = 5 - */ -+(id)errorInputIsNil; - -/** - * Creates a new JSONModelError with the same values plus information about the key-path of the error. - * Properties in the new error object are the same as those from the receiver, - * except that a new key kJSONModelKeyPath is added to the userInfo dictionary. - * This key contains the component string parameter. If the key is already present - * then the new error object has the component string prepended to the existing value. - */ -- (instancetype)errorByPrependingKeyPathComponent:(NSString*)component; - -///////////////////////////////////////////////////////////////////////////////////////////// -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m deleted file mode 100644 index de80446af67..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModel/JSONModelError.m +++ /dev/null @@ -1,93 +0,0 @@ -// -// JSONModelError.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONModelError.h" - -NSString* const JSONModelErrorDomain = @"JSONModelErrorDomain"; -NSString* const kJSONModelMissingKeys = @"kJSONModelMissingKeys"; -NSString* const kJSONModelTypeMismatch = @"kJSONModelTypeMismatch"; -NSString* const kJSONModelKeyPath = @"kJSONModelKeyPath"; - -@implementation JSONModelError - -+(id)errorInvalidDataWithMessage:(NSString*)message -{ - message = [NSString stringWithFormat:@"Invalid JSON data: %@", message]; - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorInvalidData - userInfo:@{NSLocalizedDescriptionKey:message}]; -} - -+(id)errorInvalidDataWithMissingKeys:(NSSet *)keys -{ - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorInvalidData - userInfo:@{NSLocalizedDescriptionKey:@"Invalid JSON data. Required JSON keys are missing from the input. Check the error user information.",kJSONModelMissingKeys:[keys allObjects]}]; -} - -+(id)errorInvalidDataWithTypeMismatch:(NSString*)mismatchDescription -{ - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorInvalidData - userInfo:@{NSLocalizedDescriptionKey:@"Invalid JSON data. The JSON type mismatches the expected type. Check the error user information.",kJSONModelTypeMismatch:mismatchDescription}]; -} - -+(id)errorBadResponse -{ - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorBadResponse - userInfo:@{NSLocalizedDescriptionKey:@"Bad network response. Probably the JSON URL is unreachable."}]; -} - -+(id)errorBadJSON -{ - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorBadJSON - userInfo:@{NSLocalizedDescriptionKey:@"Malformed JSON. Check the JSONModel data input."}]; -} - -+(id)errorModelIsInvalid -{ - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorModelIsInvalid - userInfo:@{NSLocalizedDescriptionKey:@"Model does not validate. The custom validation for the input data failed."}]; -} - -+(id)errorInputIsNil -{ - return [JSONModelError errorWithDomain:JSONModelErrorDomain - code:kJSONModelErrorNilInput - userInfo:@{NSLocalizedDescriptionKey:@"Initializing model with nil input object."}]; -} - -- (instancetype)errorByPrependingKeyPathComponent:(NSString*)component -{ - // Create a mutable copy of the user info so that we can add to it and update it - NSMutableDictionary* userInfo = [self.userInfo mutableCopy]; - - // Create or update the key-path - NSString* existingPath = userInfo[kJSONModelKeyPath]; - NSString* separator = [existingPath hasPrefix:@"["] ? @"" : @"."; - NSString* updatedPath = (existingPath == nil) ? component : [component stringByAppendingFormat:@"%@%@", separator, existingPath]; - userInfo[kJSONModelKeyPath] = updatedPath; - - // Create the new error - return [JSONModelError errorWithDomain:self.domain - code:self.code - userInfo:[NSDictionary dictionaryWithDictionary:userInfo]]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h deleted file mode 100644 index d4e18dab242..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.h +++ /dev/null @@ -1,40 +0,0 @@ -// -// NSArray+JSONModel.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - - -#import -#import "JSONModel.h" - -/** - * Exposes invisible JSONModelArray methods - */ -@interface NSArray(JSONModel) - -/** - * Looks up the array's contents and tries to find a JSONModel object - * with matching index property value to the indexValue param. - * - * Will return nil if no matching model is found. Will return nil if there's no index property - * defined on the models found in the array (will sample the first object, assuming the array - * contains homogenous collection of objects) - * - * @param indexValue the id value to search for - * @return the found model or nil - * @exception NSException throws exception if you call this method on an instance, which is not actually a JSONModelArray - */ -- (id)modelWithIndexValue:(id)indexValue; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m deleted file mode 100644 index 41475a474e1..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelCategories/NSArray+JSONModel.m +++ /dev/null @@ -1,28 +0,0 @@ -// -// NSArray+JSONModel.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - - -#import "NSArray+JSONModel.h" - -@implementation NSArray(JSONModel) - -- (id)modelWithIndexValue:(id)indexValue -{ - NSAssert(NO, @"call modelWithIndexValue: on a ConvertOnDemand property, which is defined like that: @property (strong, nonatomic) NSArray* list;"); - return nil; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h deleted file mode 100644 index b8f5a17868b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelLib.h +++ /dev/null @@ -1,35 +0,0 @@ -// -// JSONModelLib.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import - -//JSONModel transformations -#import "JSONValueTransformer.h" -#import "JSONKeyMapper.h" - -//basic JSONModel classes -#import "JSONModelError.h" -#import "JSONModelClassProperty.h" -#import "JSONModel.h" - -//network classes -#import "JSONHTTPClient.h" -#import "JSONModel+networking.h" -#import "JSONAPI.h" - -//models array -#import "NSArray+JSONModel.h" -#import "JSONModelArray.h" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h deleted file mode 100644 index dd27aa23eab..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.h +++ /dev/null @@ -1,90 +0,0 @@ -// -// JSONAPI.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import -#import "JSONHTTPClient.h" - -///////////////////////////////////////////////////////////////////////////////////////////// - -/** - * @discussion Class for working with JSON APIs. It builds upon the JSONHTTPClient class - * and facilitates making requests to the same web host. Also features helper - * method for making calls to a JSON RPC service - */ -@interface JSONAPI : NSObject - -///////////////////////////////////////////////////////////////////////////////////////////// - -/** @name Configuring the API */ -/** - * Sets the API url - * @param base the API url as a string - */ -+(void)setAPIBaseURLWithString:(NSString*)base; - -/** - * Sets the default content type for the requests/responses - * @param ctype The content-type as a string. Some possible types, - * depending on the service: application/json, text/json, x-application/javascript, etc. - */ -+(void)setContentType:(NSString*)ctype; - -///////////////////////////////////////////////////////////////////////////////////////////// - -/** @name Making GET API requests */ -/** - * Makes an asynchronious GET request to the API - * @param path the URL path to add to the base API URL for this HTTP call - * @param params the variables to pass to the API - * @param completeBlock a JSONObjectBlock block to execute upon completion - */ -+(void)getWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; - -///////////////////////////////////////////////////////////////////////////////////////////// - -/** @name Making POST API requests */ -/** - * Makes a POST request to the API - * @param path the URL path to add to the base API URL for this HTTP call - * @param params the variables to pass to the API - * @param completeBlock a JSONObjectBlock block to execute upon completion - */ -+(void)postWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; - -///////////////////////////////////////////////////////////////////////////////////////////// - -/** @name JSON RPC methods */ -/** - * Makes an asynchronious JSON RPC request to the API. Read more: http://www.jsonrpc.org - * @param method the HTTP method name; GET or POST only - * @param args the list of arguments to pass to the API - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)rpcWithMethodName:(NSString*)method andArguments:(NSArray*)args completion:(JSONObjectBlock)completeBlock; - -/** @name JSON RPC (2.0) request method */ -/** - * Makes an asynchronious JSON RPC 2.0 request to the API. Read more: http://www.jsonrpc.org - * @param method the HTTP method name; GET or POST only - * @param params the params to pass to the API - an NSArray or an NSDictionary, - * depending whether you're using named or unnamed parameters - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)rpc2WithMethodName:(NSString*)method andParams:(id)params completion:(JSONObjectBlock)completeBlock; - -///////////////////////////////////////////////////////////////////////////////////////////// - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m deleted file mode 100644 index 212803d7bd3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONAPI.m +++ /dev/null @@ -1,152 +0,0 @@ -// -// JSONAPI.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONAPI.h" - -#pragma mark - helper error model class -@interface JSONAPIRPCErrorModel: JSONModel -@property (assign, nonatomic) int code; -@property (strong, nonatomic) NSString* message; -@property (strong, nonatomic) id data; -@end - -#pragma mark - static variables - -static JSONAPI* sharedInstance = nil; -static long jsonRpcId = 0; - -#pragma mark - JSONAPI() private interface - -@interface JSONAPI () -@property (strong, nonatomic) NSString* baseURLString; -@end - -#pragma mark - JSONAPI implementation - -@implementation JSONAPI - -#pragma mark - initialize - -+(void)initialize -{ - static dispatch_once_t once; - dispatch_once(&once, ^{ - sharedInstance = [[JSONAPI alloc] init]; - }); -} - -#pragma mark - api config methods - -+(void)setAPIBaseURLWithString:(NSString*)base -{ - sharedInstance.baseURLString = base; -} - -+(void)setContentType:(NSString*)ctype -{ - [JSONHTTPClient setRequestContentType: ctype]; -} - -#pragma mark - GET methods -+(void)getWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock -{ - NSString* fullURL = [NSString stringWithFormat:@"%@%@", sharedInstance.baseURLString, path]; - - [JSONHTTPClient getJSONFromURLWithString: fullURL params:params completion:^(NSDictionary *json, JSONModelError *e) { - completeBlock(json, e); - }]; -} - -#pragma mark - POST methods -+(void)postWithPath:(NSString*)path andParams:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock -{ - NSString* fullURL = [NSString stringWithFormat:@"%@%@", sharedInstance.baseURLString, path]; - - [JSONHTTPClient postJSONFromURLWithString: fullURL params:params completion:^(NSDictionary *json, JSONModelError *e) { - completeBlock(json, e); - }]; -} - -#pragma mark - RPC methods -+(void)__rpcRequestWithObject:(id)jsonObject completion:(JSONObjectBlock)completeBlock -{ - - NSData* jsonRequestData = [NSJSONSerialization dataWithJSONObject:jsonObject - options:kNilOptions - error:nil]; - NSString* jsonRequestString = [[NSString alloc] initWithData:jsonRequestData encoding: NSUTF8StringEncoding]; - - NSAssert(sharedInstance.baseURLString, @"API base URL not set"); - [JSONHTTPClient postJSONFromURLWithString: sharedInstance.baseURLString - bodyString: jsonRequestString - completion:^(NSDictionary *json, JSONModelError* e) { - - if (completeBlock) { - //handle the rpc response - NSDictionary* result = json[@"result"]; - - if (!result) { - JSONAPIRPCErrorModel* error = [[JSONAPIRPCErrorModel alloc] initWithDictionary:json[@"error"] error:nil]; - if (error) { - //custom server error - if (!error.message) error.message = @"Generic json rpc error"; - e = [JSONModelError errorWithDomain:JSONModelErrorDomain - code:error.code - userInfo: @{ NSLocalizedDescriptionKey : error.message}]; - } else { - //generic error - e = [JSONModelError errorBadResponse]; - } - } - - //invoke the callback - completeBlock(result, e); - } - }]; -} - -+(void)rpcWithMethodName:(NSString*)method andArguments:(NSArray*)args completion:(JSONObjectBlock)completeBlock -{ - NSAssert(method, @"No method specified"); - if (!args) args = @[]; - - [self __rpcRequestWithObject:@{ - //rpc 1.0 - @"id": @(++jsonRpcId), - @"params": args, - @"method": method - } completion:completeBlock]; -} - -+(void)rpc2WithMethodName:(NSString*)method andParams:(id)params completion:(JSONObjectBlock)completeBlock -{ - NSAssert(method, @"No method specified"); - if (!params) params = @[]; - - [self __rpcRequestWithObject:@{ - //rpc 2.0 - @"jsonrpc": @"2.0", - @"id": @(++jsonRpcId), - @"params": params, - @"method": method - } completion:completeBlock]; -} - -@end - -#pragma mark - helper rpc error model class implementation -@implementation JSONAPIRPCErrorModel -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h deleted file mode 100644 index a2129fb8ff2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.h +++ /dev/null @@ -1,175 +0,0 @@ -// -// JSONModelHTTPClient.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONModel.h" - -#pragma mark - definitions - -/** - * HTTP Request methods - */ -extern NSString* const kHTTPMethodGET; -extern NSString* const kHTTPMethodPOST; - -/** - * Content-type strings - */ -extern NSString* const kContentTypeAutomatic; -extern NSString* const kContentTypeJSON; -extern NSString* const kContentTypeWWWEncoded; - -/** - * A block type to handle incoming JSON object and an error. - * You pass it to methods which fetch JSON asynchroniously. When the operation is finished - * you receive back the fetched JSON (or nil) and an error (or nil) - * - * @param json object derived from a JSON string - * @param err JSONModelError or nil - */ -typedef void (^JSONObjectBlock)(id json, JSONModelError* err); - -///////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark - configuration methods - -/** - * @discussion A very thin HTTP client that can do GET and POST HTTP requests. - * It fetches only JSON data and also deserializes it using NSJSONSerialization. - */ -@interface JSONHTTPClient : NSObject - -///////////////////////////////////////////////////////////////////////////////////////////// - - -/** @name HTTP Client configuration */ -/** - * Returns a modifyable dictionary of the client's default HTTP headers. - * @result A mutable dictionary of pairs - HTTP header names and values. - * @discussion You can use the result to modify the http client headers like so: - *
    - * NSMutableDictionary* headers = [JSONHTTPClient requestHeaders];
    - * headers[@"APIToken"] = @"MySecretTokenValue";
    - * 
    - */ -+(NSMutableDictionary*)requestHeaders; - -/** - * Sets the default encoding of the request body. - * See NSStringEncoding for a list of supported encodings - * @param encoding text encoding constant - */ -+(void)setDefaultTextEncoding:(NSStringEncoding)encoding; - -/** - * Sets the policies for caching HTTP data - * See NSURLRequestCachePolicy for a list of the pre-defined policies - * @param policy the caching policy - */ -+(void)setCachingPolicy:(NSURLRequestCachePolicy)policy; - -/** - * Sets the timeout for network calls - * @param seconds the amount of seconds to wait before considering the call failed - */ -+(void)setTimeoutInSeconds:(int)seconds; - -/** - * A method to set the default conent type of the request body - * By default the content type is set to kContentTypeAutomatic - * which checks the body request and decides between "application/json" - * and "application/x-www-form-urlencoded" - */ -+(void)setRequestContentType:(NSString*)contentTypeString; - -///////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark - GET asynchronious JSON calls - -/** @name Making asynchronious HTTP requests */ -/** - * Makes GET request to the given URL address and fetches a JSON response. - * @param urlString the URL as a string - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)getJSONFromURLWithString:(NSString*)urlString completion:(JSONObjectBlock)completeBlock; - -/** - * Makes GET request to the given URL address and fetches a JSON response. Sends the params as a query string variables. - * @param urlString the URL as a string - * @param params a dictionary of key / value pairs to be send as variables to the request - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)getJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; - -/** - * Makes a request to the given URL address and fetches a JSON response. - * @param urlString the URL as a string - * @param method the method of the request as a string - * @param params a dictionary of key / value pairs to be send as variables to the request - * @param bodyString the body of the POST request as a string - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary*)params orBodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock; - -/** - * Makes a request to the given URL address and fetches a JSON response. - * @param urlString the URL as a string - * @param method the method of the request as a string - * @param params a dictionary of key / value pairs to be send as variables to the request - * @param bodyString the body of the POST request as a string - * @param headers the headers to set on the request - overrides those in +requestHeaders - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary*)params orBodyString:(NSString*)bodyString headers:(NSDictionary*)headers completion:(JSONObjectBlock)completeBlock; - -/** - * Makes a request to the given URL address and fetches a JSON response. - * @param urlString the URL as a string - * @param method the method of the request as a string - * @param params a dictionary of key / value pairs to be send as variables to the request - * @param bodyData the body of the POST request as raw binary data - * @param headers the headers to set on the request - overrides those in +requestHeaders - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary *)params orBodyData:(NSData*)bodyData headers:(NSDictionary*)headers completion:(JSONObjectBlock)completeBlock; - -///////////////////////////////////////////////////////////////////////////////////////////// -#pragma mark - POST synchronious JSON calls - -/** - * Makes POST request to the given URL address and fetches a JSON response. Sends the bodyString param as the POST request body. - * @param urlString the URL as a string - * @param params a dictionary of key / value pairs to be send as variables to the request - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)postJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock; - -/** - * Makes POST request to the given URL address and fetches a JSON response. Sends the bodyString param as the POST request body. - * @param urlString the URL as a string - * @param bodyString the body of the POST request as a string - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)postJSONFromURLWithString:(NSString*)urlString bodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock; - -/** - * Makes POST request to the given URL address and fetches a JSON response. Sends the bodyString param as the POST request body. - * @param urlString the URL as a string - * @param bodyData the body of the POST request as an NSData object - * @param completeBlock JSONObjectBlock to execute upon completion - */ -+(void)postJSONFromURLWithString:(NSString*)urlString bodyData:(NSData*)bodyData completion:(JSONObjectBlock)completeBlock; - - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m deleted file mode 100644 index 18147c04a1c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONHTTPClient.m +++ /dev/null @@ -1,374 +0,0 @@ -// -// JSONModelHTTPClient.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONHTTPClient.h" - -#pragma mark - constants -NSString* const kHTTPMethodGET = @"GET"; -NSString* const kHTTPMethodPOST = @"POST"; - -NSString* const kContentTypeAutomatic = @"jsonmodel/automatic"; -NSString* const kContentTypeJSON = @"application/json"; -NSString* const kContentTypeWWWEncoded = @"application/x-www-form-urlencoded"; - -#pragma mark - static variables - -/** - * Defaults for HTTP requests - */ -static NSStringEncoding defaultTextEncoding = NSUTF8StringEncoding; -static NSURLRequestCachePolicy defaultCachePolicy = NSURLRequestReloadIgnoringLocalCacheData; - -static int defaultTimeoutInSeconds = 60; - -/** - * Custom HTTP headers to send over with *each* request - */ -static NSMutableDictionary* requestHeaders = nil; - -/** - * Default request content type - */ -static NSString* requestContentType = nil; - -#pragma mark - implementation -@implementation JSONHTTPClient - -#pragma mark - initialization -+(void)initialize -{ - static dispatch_once_t once; - dispatch_once(&once, ^{ - requestHeaders = [NSMutableDictionary dictionary]; - requestContentType = kContentTypeAutomatic; - }); -} - -#pragma mark - configuration methods -+(NSMutableDictionary*)requestHeaders -{ - return requestHeaders; -} - -+(void)setDefaultTextEncoding:(NSStringEncoding)encoding -{ - defaultTextEncoding = encoding; -} - -+(void)setCachingPolicy:(NSURLRequestCachePolicy)policy -{ - defaultCachePolicy = policy; -} - -+(void)setTimeoutInSeconds:(int)seconds -{ - defaultTimeoutInSeconds = seconds; -} - -+(void)setRequestContentType:(NSString*)contentTypeString -{ - requestContentType = contentTypeString; -} - -#pragma mark - helper methods -+(NSString*)contentTypeForRequestString:(NSString*)requestString -{ - //fetch the charset name from the default string encoding - NSString* contentType = requestContentType; - - if (requestString.length>0 && [contentType isEqualToString:kContentTypeAutomatic]) { - //check for "eventual" JSON array or dictionary - NSString* firstAndLastChar = [NSString stringWithFormat:@"%@%@", - [requestString substringToIndex:1], - [requestString substringFromIndex: requestString.length -1] - ]; - - if ([firstAndLastChar isEqualToString:@"{}"] || [firstAndLastChar isEqualToString:@"[]"]) { - //guessing for a JSON request - contentType = kContentTypeJSON; - } else { - //fallback to www form encoded params - contentType = kContentTypeWWWEncoded; - } - } - - //type is set, just add charset - NSString *charset = (NSString *)CFStringConvertEncodingToIANACharSetName(CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)); - return [NSString stringWithFormat:@"%@; charset=%@", contentType, charset]; -} - -+(NSString*)urlEncode:(id)value -{ - //make sure param is a string - if ([value isKindOfClass:[NSNumber class]]) { - value = [(NSNumber*)value stringValue]; - } - - NSAssert([value isKindOfClass:[NSString class]], @"request parameters can be only of NSString or NSNumber classes. '%@' is of class %@.", value, [value class]); - - return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes( - NULL, - (__bridge CFStringRef) value, - NULL, - (CFStringRef)@"!*'();:@&=+$,/?%#[]", - kCFStringEncodingUTF8)); -} - -#pragma mark - networking worker methods -+(NSData*)syncRequestDataFromURL:(NSURL*)url method:(NSString*)method requestBody:(NSData*)bodyData headers:(NSDictionary*)headers etag:(NSString**)etag error:(JSONModelError**)err -{ - NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL: url - cachePolicy: defaultCachePolicy - timeoutInterval: defaultTimeoutInSeconds]; - [request setHTTPMethod:method]; - - if ([requestContentType isEqualToString:kContentTypeAutomatic]) { - //automatic content type - if (bodyData) { - NSString *bodyString = [[NSString alloc] initWithData:bodyData encoding:NSUTF8StringEncoding]; - [request setValue: [self contentTypeForRequestString: bodyString] forHTTPHeaderField:@"Content-type"]; - } - } else { - //user set content type - [request setValue: requestContentType forHTTPHeaderField:@"Content-type"]; - } - - //add all the custom headers defined - for (NSString* key in [requestHeaders allKeys]) { - [request setValue:requestHeaders[key] forHTTPHeaderField:key]; - } - - //add the custom headers - for (NSString* key in [headers allKeys]) { - [request setValue:headers[key] forHTTPHeaderField:key]; - } - - if (bodyData) { - [request setHTTPBody: bodyData]; - [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)bodyData.length] forHTTPHeaderField:@"Content-Length"]; - } - - //prepare output - NSHTTPURLResponse* response = nil; - - //fire the request - NSData *responseData = [NSURLConnection sendSynchronousRequest: request - returningResponse: &response - error: err]; - //convert an NSError to a JSONModelError - if (*err != nil) { - NSError* errObj = *err; - *err = [JSONModelError errorWithDomain:errObj.domain code:errObj.code userInfo:errObj.userInfo]; - } - - //special case for http error code 401 - if ([*err code] == kCFURLErrorUserCancelledAuthentication) { - response = [[NSHTTPURLResponse alloc] initWithURL:url - statusCode:401 - HTTPVersion:@"HTTP/1.1" - headerFields:@{}]; - } - - //if not OK status set the err to a JSONModelError instance - if (response.statusCode >= 300 || response.statusCode < 200) { - //create a new error - if (*err==nil) *err = [JSONModelError errorBadResponse]; - } - - //if there was an error, include the HTTP response and return - if (*err) { - //assign the response to the JSONModel instance - [*err setHttpResponse: [response copy]]; - - //empty respone, return nil instead - if ([responseData length]<1) { - return nil; - } - } - - //return the data fetched from web - return responseData; -} - -+(NSData*)syncRequestDataFromURL:(NSURL*)url method:(NSString*)method params:(NSDictionary*)params headers:(NSDictionary*)headers etag:(NSString**)etag error:(JSONModelError**)err -{ - //create the request body - NSMutableString* paramsString = nil; - - if (params) { - //build a simple url encoded param string - paramsString = [NSMutableString stringWithString:@""]; - for (NSString* key in [[params allKeys] sortedArrayUsingSelector:@selector(compare:)]) { - [paramsString appendFormat:@"%@=%@&", key, [self urlEncode:params[key]] ]; - } - if ([paramsString hasSuffix:@"&"]) { - paramsString = [[NSMutableString alloc] initWithString: [paramsString substringToIndex: paramsString.length-1]]; - } - } - - //set the request params - if ([method isEqualToString:kHTTPMethodGET] && params) { - - //add GET params to the query string - url = [NSURL URLWithString:[NSString stringWithFormat: @"%@%@%@", - [url absoluteString], - [url query] ? @"&" : @"?", - paramsString - ]]; - } - - //call the more general synq request method - return [self syncRequestDataFromURL: url - method: method - requestBody: [method isEqualToString:kHTTPMethodPOST]?[paramsString dataUsingEncoding:NSUTF8StringEncoding]:nil - headers: headers - etag: etag - error: err]; -} - -#pragma mark - Async network request -+(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary*)params orBodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString - method:method - params:params - orBodyString:bodyString - headers:nil - completion:completeBlock]; -} - -+(void)JSONFromURLWithString:(NSString *)urlString method:(NSString *)method params:(NSDictionary *)params orBodyString:(NSString *)bodyString headers:(NSDictionary *)headers completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString - method:method - params:params - orBodyData:[bodyString dataUsingEncoding:NSUTF8StringEncoding] - headers:headers - completion:completeBlock]; -} - -+(void)JSONFromURLWithString:(NSString*)urlString method:(NSString*)method params:(NSDictionary *)params orBodyData:(NSData*)bodyData headers:(NSDictionary*)headers completion:(JSONObjectBlock)completeBlock -{ - NSDictionary* customHeaders = headers; - - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ - - id jsonObject = nil; - JSONModelError* error = nil; - NSData* responseData = nil; - NSString* etag = nil; - - @try { - if (bodyData) { - responseData = [self syncRequestDataFromURL: [NSURL URLWithString:urlString] - method: method - requestBody: bodyData - headers: customHeaders - etag: &etag - error: &error]; - } else { - responseData = [self syncRequestDataFromURL: [NSURL URLWithString:urlString] - method: method - params: params - headers: customHeaders - etag: &etag - error: &error]; - } - } - @catch (NSException *exception) { - error = [JSONModelError errorBadResponse]; - } - - //step 3: if there's no response so far, return a basic error - if (!responseData && !error) { - //check for false response, but no network error - error = [JSONModelError errorBadResponse]; - } - - //step 4: if there's a response at this and no errors, convert to object - if (error==nil) { - // Note: it is possible to have a valid response with empty response data (204 No Content). - // So only create the JSON object if there is some response data. - if(responseData.length > 0) - { - //convert to an object - jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:&error]; - } - } - //step 4.5: cover an edge case in which meaningful content is return along an error HTTP status code - else if (error && responseData && jsonObject==nil) { - //try to get the JSON object, while preserving the origianl error object - jsonObject = [NSJSONSerialization JSONObjectWithData:responseData options:kNilOptions error:nil]; - } - - //step 5: invoke the complete block - dispatch_async(dispatch_get_main_queue(), ^{ - if (completeBlock) { - completeBlock(jsonObject, error); - } - }); - }); -} - -#pragma mark - request aliases -+(void)getJSONFromURLWithString:(NSString*)urlString completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString method:kHTTPMethodGET - params:nil - orBodyString:nil completion:^(id json, JSONModelError* e) { - if (completeBlock) completeBlock(json, e); - }]; -} - -+(void)getJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString method:kHTTPMethodGET - params:params - orBodyString:nil completion:^(id json, JSONModelError* e) { - if (completeBlock) completeBlock(json, e); - }]; -} - -+(void)postJSONFromURLWithString:(NSString*)urlString params:(NSDictionary*)params completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString method:kHTTPMethodPOST - params:params - orBodyString:nil completion:^(id json, JSONModelError* e) { - if (completeBlock) completeBlock(json, e); - }]; - -} - -+(void)postJSONFromURLWithString:(NSString*)urlString bodyString:(NSString*)bodyString completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString method:kHTTPMethodPOST - params:nil - orBodyString:bodyString completion:^(id json, JSONModelError* e) { - if (completeBlock) completeBlock(json, e); - }]; -} - -+(void)postJSONFromURLWithString:(NSString*)urlString bodyData:(NSData*)bodyData completion:(JSONObjectBlock)completeBlock -{ - [self JSONFromURLWithString:urlString method:kHTTPMethodPOST - params:nil - orBodyString:[[NSString alloc] initWithData:bodyData encoding:defaultTextEncoding] - completion:^(id json, JSONModelError* e) { - if (completeBlock) completeBlock(json, e); - }]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h deleted file mode 100644 index 88e329ef1a2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.h +++ /dev/null @@ -1,66 +0,0 @@ -// -// JSONModel+networking.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONModel.h" -#import "JSONHTTPClient.h" - -typedef void (^JSONModelBlock)(id model, JSONModelError* err); - -/** - * The JSONModel(networking) class category adds networking to JSONModel. - * It adds initFromURLWithString: initializer, which makes a GET http request - * to the URL given and initializes the model with the returned JSON. - * Use #import "JSONModel+networking.h" to import networking capabilities. - */ -@interface JSONModel(Networking) - -@property (assign, nonatomic) BOOL isLoading; -/** @name Asynchroniously create a model over the network */ -/** - * Asynchroniously create a model over the network. Create a new model instance and initialize it with the JSON fetched from the given URL - * @param urlString the absolute URL address of the JSON feed as a string - * @param completeBlock JSONModelBlock executed upon completion. The JSONModelBlock type is defined as: void (^JSONModelBlock)(JSONModel* model, JSONModelError* e); the first parameter is the initialized model or nil, - * and second parameter holds the model initialization error, if any - */ --(instancetype)initFromURLWithString:(NSString *)urlString completion:(JSONModelBlock)completeBlock; - -/** - * Asynchronously gets the contents of a URL and constructs a JSONModel object from the response. - * The constructed JSONModel object passed as the first parameter to the completion block will be of the same - * class as the receiver. So call this method on yourJSONModel sub-class rather than directly on JSONModel. - * @param urlString The absolute URL of the JSON resource, as a string - * @param completeBlock The block to be called upon completion. - * JSONModelBlock type is defined as: void (^JSONModelBlock)(JSONModel* model, JSONModelError* err); - * The first parameter is the initialized model (of the same JSONModel sub-class as the receiver) or nil if there was an error; - * The second parameter is the initialization error, if any. - */ -+ (void)getModelFromURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock; - -/** - * Asynchronously posts a JSONModel object (as JSON) to a URL and constructs a JSONModel object from the response. - * The constructed JSONModel object passed as the first parameter to the completion block will be of the same - * class as the receiver. So call this method on yourJSONModel sub-class rather than directly on JSONModel. - * @param post A JSONModel object that will be converted to JSON and sent as the POST data to the HTTP request. - * @param urlString The absolute URL of the JSON resource, as a string - * @param completeBlock The block to be called upon completion. - * JSONModelBlock type is defined as: void (^JSONModelBlock)(JSONModel* model, JSONModelError* err); - * The first parameter is the initialized model (of the same JSONModel sub-class as the receiver) or nil if there was an error; - * The second parameter is the initialization error, if any. - */ -+ (void)postModel:(JSONModel*)post toURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock; - - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m deleted file mode 100644 index 7d4d1ff3768..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelNetworking/JSONModel+networking.m +++ /dev/null @@ -1,109 +0,0 @@ -// -// JSONModel+networking.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONModel+networking.h" -#import "JSONHTTPClient.h" - -BOOL _isLoading; - -@implementation JSONModel(Networking) - -@dynamic isLoading; - --(BOOL)isLoading -{ - return _isLoading; -} - --(void)setIsLoading:(BOOL)isLoading -{ - _isLoading = isLoading; -} - --(instancetype)initFromURLWithString:(NSString *)urlString completion:(JSONModelBlock)completeBlock -{ - id placeholder = [super init]; - __block id blockSelf = self; - - if (placeholder) { - //initialization - self.isLoading = YES; - - [JSONHTTPClient getJSONFromURLWithString:urlString - completion:^(NSDictionary *json, JSONModelError* e) { - - JSONModelError* initError = nil; - blockSelf = [self initWithDictionary:json error:&initError]; - - if (completeBlock) { - dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1 * NSEC_PER_MSEC), dispatch_get_main_queue(), ^{ - completeBlock(blockSelf, e?e:initError ); - }); - } - - self.isLoading = NO; - - }]; - } - return placeholder; -} - -+ (void)getModelFromURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock -{ - [JSONHTTPClient getJSONFromURLWithString:urlString - completion:^(NSDictionary* jsonDict, JSONModelError* err) - { - JSONModel* model = nil; - - if(err == nil) - { - model = [[self alloc] initWithDictionary:jsonDict error:&err]; - } - - if(completeBlock != nil) - { - dispatch_async(dispatch_get_main_queue(), ^ - { - completeBlock(model, err); - }); - } - }]; -} - -+ (void)postModel:(JSONModel*)post toURLWithString:(NSString*)urlString completion:(JSONModelBlock)completeBlock -{ - [JSONHTTPClient postJSONFromURLWithString:urlString - bodyString:[post toJSONString] - completion:^(NSDictionary* jsonDict, JSONModelError* err) - { - JSONModel* model = nil; - - if(err == nil) - { - model = [[self alloc] initWithDictionary:jsonDict error:&err]; - } - - if(completeBlock != nil) - { - dispatch_async(dispatch_get_main_queue(), ^ - { - completeBlock(model, err); - }); - } - }]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h deleted file mode 100644 index 75822c6e6fa..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.h +++ /dev/null @@ -1,95 +0,0 @@ -// -// JSONKeyMapper.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import - -typedef NSString* (^JSONModelKeyMapBlock)(NSString* keyName); - -/** - * **You won't need to create or store instances of this class yourself.** If you want your model - * to have different property names than the JSON feed keys, look below on how to - * make your model use a key mapper. - * - * For example if you consume JSON from twitter - * you get back underscore_case style key names. For example: - * - *
    "profile_sidebar_border_color": "0094C2",
    - * "profile_background_tile": false,
    - * - * To comply with Obj-C accepted camelCase property naming for your classes, - * you need to provide mapping between JSON keys and ObjC property names. - * - * In your model overwrite the +(JSONKeyMapper*)keyMapper method and provide a JSONKeyMapper - * instance to convert the key names for your model. - * - * If you need custom mapping it's as easy as: - *
    - * +(JSONKeyMapper*)keyMapper {
    - *   return [[JSONKeyMapper alloc] initWithDictionary:@{@"crazy_JSON_name":@"myCamelCaseName"}];
    - * }
    - * 
    - * In case you want to handle underscore_case, **use the predefined key mapper**, like so: - *
    - * +(JSONKeyMapper*)keyMapper {
    - *   return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase];
    - * }
    - * 
    - */ -@interface JSONKeyMapper : NSObject - -/** @name Name convertors */ -/** Block, which takes in a JSON key and converts it to the corresponding property name */ -@property (readonly, nonatomic) JSONModelKeyMapBlock JSONToModelKeyBlock; - -/** Block, which takes in a property name and converts it to the corresponding JSON key name */ -@property (readonly, nonatomic) JSONModelKeyMapBlock modelToJSONKeyBlock; - -/** Combined convertor method -* @param value the source name -* @param importing YES invokes JSONToModelKeyBlock, NO - modelToJSONKeyBlock -* @return JSONKeyMapper instance -*/ --(NSString*)convertValue:(NSString*)value isImportingToModel:(BOOL)importing; - -/** @name Creating a key mapper */ - -/** - * Creates a JSONKeyMapper instance, based on the two blocks you provide this initializer. - * The two parameters take in a JSONModelKeyMapBlock block: - *
    NSString* (^JSONModelKeyMapBlock)(NSString* keyName)
    - * The block takes in a string and returns the transformed (if at all) string. - * @param toModel transforms JSON key name to your model property name - * @param toJSON transforms your model property name to a JSON key - */ --(instancetype)initWithJSONToModelBlock:(JSONModelKeyMapBlock)toModel - modelToJSONBlock:(JSONModelKeyMapBlock)toJSON; - -/** - * Creates a JSONKeyMapper instance, based on the mapping you provide - * in the map parameter. Use the JSON key names as keys, your JSONModel - * property names as values. - * @param map map dictionary, in the format:
    @{@"crazy_JSON_name":@"myCamelCaseName"}
    - * @return JSONKeyMapper instance - */ --(instancetype)initWithDictionary:(NSDictionary*)map; - -/** - * Creates a JSONKeyMapper, which converts underscore_case to camelCase and vice versa. - */ -+(instancetype)mapperFromUnderscoreCaseToCamelCase; - -+(instancetype)mapperFromUpperCaseToLowerCase; -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m deleted file mode 100644 index c3007dadae3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONKeyMapper.m +++ /dev/null @@ -1,174 +0,0 @@ -// -// JSONKeyMapper.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONKeyMapper.h" - -@interface JSONKeyMapper() -@property (nonatomic, strong) NSMutableDictionary *toModelMap; -@property (nonatomic, strong) NSMutableDictionary *toJSONMap; -@end - -@implementation JSONKeyMapper - --(instancetype)init -{ - self = [super init]; - if (self) { - //initialization - self.toModelMap = [NSMutableDictionary dictionary]; - self.toJSONMap = [NSMutableDictionary dictionary]; - } - return self; -} - --(instancetype)initWithJSONToModelBlock:(JSONModelKeyMapBlock)toModel - modelToJSONBlock:(JSONModelKeyMapBlock)toJSON -{ - self = [self init]; - - if (self) { - __weak JSONKeyMapper *myself = self; - //the json to model convertion block - _JSONToModelKeyBlock = ^NSString*(NSString* keyName) { - - //try to return cached transformed key - if (myself.toModelMap[keyName]) return myself.toModelMap[keyName]; - - //try to convert the key, and store in the cache - NSString* result = toModel(keyName); - myself.toModelMap[keyName] = result; - return result; - }; - - _modelToJSONKeyBlock = ^NSString*(NSString* keyName) { - - //try to return cached transformed key - if (myself.toJSONMap[keyName]) return myself.toJSONMap[keyName]; - - //try to convert the key, and store in the cache - NSString* result = toJSON(keyName); - myself.toJSONMap[keyName] = result; - return result; - - }; - - } - - return self; -} - --(instancetype)initWithDictionary:(NSDictionary*)map -{ - self = [super init]; - if (self) { - //initialize - - NSMutableDictionary* userToModelMap = [NSMutableDictionary dictionaryWithDictionary: map]; - NSMutableDictionary* userToJSONMap = [NSMutableDictionary dictionaryWithObjects:map.allKeys forKeys:map.allValues]; - - _JSONToModelKeyBlock = ^NSString*(NSString* keyName) { - NSString* result = [userToModelMap valueForKeyPath: keyName]; - return result?result:keyName; - }; - - _modelToJSONKeyBlock = ^NSString*(NSString* keyName) { - NSString* result = [userToJSONMap valueForKeyPath: keyName]; - return result?result:keyName; - }; - } - - return self; -} - --(NSString*)convertValue:(NSString*)value isImportingToModel:(BOOL)importing -{ - return !importing?_JSONToModelKeyBlock(value):_modelToJSONKeyBlock(value); -} - -+(instancetype)mapperFromUnderscoreCaseToCamelCase -{ - JSONModelKeyMapBlock toModel = ^ NSString* (NSString* keyName) { - - //bail early if no transformation required - if ([keyName rangeOfString:@"_"].location==NSNotFound) return keyName; - - //derive camel case out of underscore case - NSString* camelCase = [keyName capitalizedString]; - camelCase = [camelCase stringByReplacingOccurrencesOfString:@"_" withString:@""]; - camelCase = [camelCase stringByReplacingCharactersInRange:NSMakeRange(0, 1) withString:[[camelCase substringToIndex:1] lowercaseString] ]; - - return camelCase; - }; - - JSONModelKeyMapBlock toJSON = ^ NSString* (NSString* keyName) { - - NSMutableString* result = [NSMutableString stringWithString:keyName]; - NSRange upperCharRange = [result rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]]; - - //handle upper case chars - while ( upperCharRange.location!=NSNotFound) { - - NSString* lowerChar = [[result substringWithRange:upperCharRange] lowercaseString]; - [result replaceCharactersInRange:upperCharRange - withString:[NSString stringWithFormat:@"_%@", lowerChar]]; - upperCharRange = [result rangeOfCharacterFromSet:[NSCharacterSet uppercaseLetterCharacterSet]]; - } - - //handle numbers - NSRange digitsRange = [result rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet]]; - while ( digitsRange.location!=NSNotFound) { - - NSRange digitsRangeEnd = [result rangeOfString:@"\\D" options:NSRegularExpressionSearch range:NSMakeRange(digitsRange.location, result.length-digitsRange.location)]; - if (digitsRangeEnd.location == NSNotFound) { - //spands till the end of the key name - digitsRangeEnd = NSMakeRange(result.length, 1); - } - - NSRange replaceRange = NSMakeRange(digitsRange.location, digitsRangeEnd.location - digitsRange.location); - NSString* digits = [result substringWithRange:replaceRange]; - - [result replaceCharactersInRange:replaceRange withString:[NSString stringWithFormat:@"_%@", digits]]; - digitsRange = [result rangeOfCharacterFromSet:[NSCharacterSet decimalDigitCharacterSet] options:kNilOptions range:NSMakeRange(digitsRangeEnd.location+1, result.length-digitsRangeEnd.location-1)]; - } - - return result; - }; - - return [[self alloc] initWithJSONToModelBlock:toModel - modelToJSONBlock:toJSON]; - -} - -+(instancetype)mapperFromUpperCaseToLowerCase -{ - JSONModelKeyMapBlock toModel = ^ NSString* (NSString* keyName) { - NSString*lowercaseString = [keyName lowercaseString]; - return lowercaseString; - }; - - JSONModelKeyMapBlock toJSON = ^ NSString* (NSString* keyName) { - - NSString *uppercaseString = [keyName uppercaseString]; - - return uppercaseString; - }; - - return [[self alloc] initWithJSONToModelBlock:toModel - modelToJSONBlock:toJSON]; - -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h deleted file mode 100644 index 8c40ce859cb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.h +++ /dev/null @@ -1,230 +0,0 @@ -// -// JSONValueTransformer.h -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import -#import "JSONModelArray.h" - -///////////////////////////////////////////////////////////////////////////////////////////// - -#pragma mark - extern definitons -/** - * Boolean function to check for null values. Handy when you need to both check - * for nil and [NSNUll null] - */ -extern BOOL isNull(id value); - -///////////////////////////////////////////////////////////////////////////////////////////// - -#pragma mark - JSONValueTransformer interface -/** - * **You don't need to call methods of this class manually.** - * - * Class providing methods to transform values from one class to another. - * You are given a number of built-in transformers, but you are encouraged to - * extend this class with your own categories to add further value transformers. - * Just few examples of what can you add to JSONValueTransformer: hex colors in JSON to UIColor, - * hex numbers in JSON to NSNumber model properties, base64 encoded strings in JSON to UIImage properties, and more. - * - * The class is invoked by JSONModel while transforming incoming - * JSON types into your target class property classes, and vice versa. - * One static copy is create and store in the JSONModel class scope. - */ -@interface JSONValueTransformer : NSObject - -@property (strong, nonatomic, readonly) NSDictionary* primitivesNames; - -/** @name Resolving cluster class names */ -/** - * This method returns the ubmrella class for any standard class cluster members. - * For example returns NSString when given as input NSString, NSMutableString, __CFString and __CFConstantString - * The method currently looksup a pre-defined list. - * @param sourceClass the class to get the umrella class for - * @return Class - */ -+(Class)classByResolvingClusterClasses:(Class)sourceClass; - -#pragma mark - NSMutableString <-> NSString -/** @name Transforming to Mutable copies */ -/** - * Trasnforms a string value to a mutable string value - * @param string incoming string - * @return mutable string - */ --(NSMutableString*)NSMutableStringFromNSString:(NSString*)string; - -#pragma mark - NSMutableArray <-> NSArray -/** - * Trasnforms an array to a mutable array - * @param array incoming array - * @return mutable array - */ --(NSMutableArray*)NSMutableArrayFromNSArray:(NSArray*)array; - -#pragma mark - NS(Mutable)Array <- JSONModelArray -/** - * Trasnforms an array to a JSONModelArray - * @param array incoming array - * @return JSONModelArray - */ --(NSArray*)NSArrayFromJSONModelArray:(JSONModelArray*)array; --(NSMutableArray*)NSMutableArrayFromJSONModelArray:(JSONModelArray*)array; - -#pragma mark - NSMutableDictionary <-> NSDictionary -/** - * Trasnforms a dictionary to a mutable dictionary - * @param dict incoming dictionary - * @return mutable dictionary - */ --(NSMutableDictionary*)NSMutableDictionaryFromNSDictionary:(NSDictionary*)dict; - -#pragma mark - NSSet <-> NSArray -/** @name Transforming Sets */ -/** - * Transforms an array to a set - * @param array incoming array - * @return set with the array's elements - */ --(NSSet*)NSSetFromNSArray:(NSArray*)array; - -/** - * Transforms an array to a mutable set - * @param array incoming array - * @return mutable set with the array's elements - */ --(NSMutableSet*)NSMutableSetFromNSArray:(NSArray*)array; - -/** - * Transforms a set to an array - * @param set incoming set - * @return an array with the set's elements - */ --(NSArray*)JSONObjectFromNSSet:(NSSet*)set; - -/** - * Transforms a mutable set to an array - * @param set incoming mutable set - * @return an array with the set's elements - */ --(NSArray*)JSONObjectFromNSMutableSet:(NSMutableSet*)set; - -#pragma mark - BOOL <-> number/string -/** @name Transforming JSON types */ -/** - * Transforms a number object to a bool number object - * @param number the number to convert - * @return the resulting number - */ --(NSNumber*)BOOLFromNSNumber:(NSNumber*)number; - -/** - * Transforms a number object to a bool number object - * @param string the string value to convert, "0" converts to NO, everything else to YES - * @return the resulting number - */ --(NSNumber*)BOOLFromNSString:(NSString*)string; - -/** - * Transforms a BOOL value to a bool number object - * @param number an NSNumber value coming from the model - * @return the result number - */ --(NSNumber*)JSONObjectFromBOOL:(NSNumber*)number; - -#pragma mark - string <-> number -/** - * Transforms a string object to a number object - * @param string the string to convert - * @return the resulting number - */ --(NSNumber*)NSNumberFromNSString:(NSString*)string; - -/** - * Transforms a number object to a string object - * @param number the number to convert - * @return the resulting string - */ --(NSString*)NSStringFromNSNumber:(NSNumber*)number; - -/** - * Transforms a string object to a nsdecimalnumber object - * @param string the string to convert - * @return the resulting number - */ --(NSDecimalNumber*)NSDecimalNumberFromNSString:(NSString*)string; - -/** - * Transforms a nsdecimalnumber object to a string object - * @param number the number to convert - * @return the resulting string - */ --(NSString*)NSStringFromNSDecimalNumber:(NSDecimalNumber*)number; - - -#pragma mark - string <-> url -/** @name Transforming URLs */ -/** - * Transforms a string object to an NSURL object - * @param string the string to convert - * @return the resulting url object - */ --(NSURL*)NSURLFromNSString:(NSString*)string; - -/** - * Transforms an NSURL object to a string - * @param url the url object to convert - * @return the resulting string - */ --(NSString*)JSONObjectFromNSURL:(NSURL*)url; - -#pragma mark - string <-> time zone - -/** @name Transforming NSTimeZone */ -/** - * Transforms a string object to an NSTimeZone object - * @param string the string to convert - * @return the resulting NSTimeZone object - */ -- (NSTimeZone *)NSTimeZoneFromNSString:(NSString*)string; - -/** - * Transforms an NSTimeZone object to a string - * @param timeZone the time zone object to convert - * @return the resulting string - */ -- (NSString *)JSONObjectFromNSTimeZone:(NSTimeZone *)timeZone; - -#pragma mark - string <-> date -/** @name Transforming Dates */ -/** - * The following two methods are not public. This way if there is a category on converting - * dates it'll override them. If there isn't a category the default methods found in the .m - * file will be invoked. If these are public a warning is produced at the point of overriding - * them in a category, so they have to stay hidden here. - */ - -//-(NSDate*)NSDateFromNSString:(NSString*)string; -//-(NSString*)JSONObjectFromNSDate:(NSDate*)date; - -#pragma mark - number <-> date - -/** - * Transforms a number to an NSDate object - * @param number the number to convert - * @return the resulting date - */ -- (NSDate*)NSDateFromNSNumber:(NSNumber*)number; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m deleted file mode 100644 index 4e5bc4a4772..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/JSONModel/JSONModelTransformations/JSONValueTransformer.m +++ /dev/null @@ -1,272 +0,0 @@ -// -// JSONValueTransformer.m -// -// @version 1.0.2 -// @author Marin Todorov, http://www.touch-code-magazine.com -// - -// Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -// This code is distributed under the terms and conditions of the MIT license. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: -// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -// -// The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - -#import "JSONValueTransformer.h" -#import "JSONModelArray.h" - -#pragma mark - functions -extern BOOL isNull(id value) -{ - if (!value) return YES; - if ([value isKindOfClass:[NSNull class]]) return YES; - - return NO; -} - -@implementation JSONValueTransformer - --(id)init -{ - self = [super init]; - if (self) { - _primitivesNames = @{@"f":@"float", @"i":@"int", @"d":@"double", @"l":@"long", @"c":@"BOOL", @"s":@"short", @"q":@"long", - //and some famos aliases of primitive types - // BOOL is now "B" on iOS __LP64 builds - @"I":@"NSInteger", @"Q":@"NSUInteger", @"B":@"BOOL", - - @"@?":@"Block"}; - } - return self; -} - -+(Class)classByResolvingClusterClasses:(Class)sourceClass -{ - //check for all variations of strings - if ([sourceClass isSubclassOfClass:[NSString class]]) { - return [NSString class]; - } - - //check for all variations of numbers - if ([sourceClass isSubclassOfClass:[NSNumber class]]) { - return [NSNumber class]; - } - - //check for all variations of dictionaries - if ([sourceClass isSubclassOfClass:[NSArray class]]) { - return [NSArray class]; - } - - //check for all variations of arrays - if ([sourceClass isSubclassOfClass:[NSDictionary class]]) { - return [NSDictionary class]; - } - - //check for all variations of dates - if ([sourceClass isSubclassOfClass:[NSDate class]]) { - return [NSDate class]; - } - - //no cluster parent class found - return sourceClass; -} - -#pragma mark - NSMutableString <-> NSString --(NSMutableString*)NSMutableStringFromNSString:(NSString*)string -{ - return [NSMutableString stringWithString:string]; -} - -#pragma mark - NSMutableArray <-> NSArray --(NSMutableArray*)NSMutableArrayFromNSArray:(NSArray*)array -{ - if ([array isKindOfClass:[JSONModelArray class]]) { - //it's a jsonmodelarray already, just return it - return (id)array; - } - - return [NSMutableArray arrayWithArray:array]; -} - -#pragma mark - NS(Mutable)Array <- JSONModelArray --(NSArray*)NSArrayFromJSONModelArray:(JSONModelArray*)array -{ - return (NSMutableArray*)array; -} - --(NSMutableArray*)NSMutableArrayFromJSONModelArray:(JSONModelArray*)array -{ - return (NSMutableArray*)array; -} - - -#pragma mark - NSMutableDictionary <-> NSDictionary --(NSMutableDictionary*)NSMutableDictionaryFromNSDictionary:(NSDictionary*)dict -{ - return [NSMutableDictionary dictionaryWithDictionary:dict]; -} - -#pragma mark - NSSet <-> NSArray --(NSSet*)NSSetFromNSArray:(NSArray*)array -{ - return [NSSet setWithArray:array]; -} - --(NSMutableSet*)NSMutableSetFromNSArray:(NSArray*)array -{ - return [NSMutableSet setWithArray:array]; -} - --(id)JSONObjectFromNSSet:(NSSet*)set -{ - return [set allObjects]; -} - --(id)JSONObjectFromNSMutableSet:(NSMutableSet*)set -{ - return [set allObjects]; -} - -// -// 0 converts to NO, everything else converts to YES -// - -#pragma mark - BOOL <-> number/string --(NSNumber*)BOOLFromNSNumber:(NSNumber*)number -{ - if (isNull(number)) return [NSNumber numberWithBool:NO]; - return [NSNumber numberWithBool: number.intValue==0?NO:YES]; -} - --(NSNumber*)BOOLFromNSString:(NSString*)string -{ - if (string != nil && - ([string caseInsensitiveCompare:@"true"] == NSOrderedSame || - [string caseInsensitiveCompare:@"yes"] == NSOrderedSame)) { - return [NSNumber numberWithBool:YES]; - } - return [NSNumber numberWithBool: ([string intValue]==0)?NO:YES]; -} - --(NSNumber*)JSONObjectFromBOOL:(NSNumber*)number -{ - return [NSNumber numberWithBool: number.intValue==0?NO:YES]; -} - -#pragma mark - string/number <-> float --(float)floatFromObject:(id)obj -{ - return [obj floatValue]; -} - --(float)floatFromNSString:(NSString*)string -{ - return [self floatFromObject:string]; -} - --(float)floatFromNSNumber:(NSNumber*)number -{ - return [self floatFromObject:number]; -} - --(NSNumber*)NSNumberFromfloat:(float)f -{ - return [NSNumber numberWithFloat:f]; -} - -#pragma mark - string <-> number --(NSNumber*)NSNumberFromNSString:(NSString*)string -{ - return [NSNumber numberWithFloat: [string doubleValue]]; -} - --(NSString*)NSStringFromNSNumber:(NSNumber*)number -{ - return [number stringValue]; -} - --(NSDecimalNumber*)NSDecimalNumberFromNSString:(NSString*)string -{ - return [NSDecimalNumber decimalNumberWithString:string]; -} - --(NSString*)NSStringFromNSDecimalNumber:(NSDecimalNumber*)number -{ - return [number stringValue]; -} - -#pragma mark - string <-> url --(NSURL*)NSURLFromNSString:(NSString*)string -{ - return [NSURL URLWithString:[string stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; -} - --(NSString*)JSONObjectFromNSURL:(NSURL*)url -{ - return [url absoluteString]; -} - -#pragma mark - string <-> date --(NSDateFormatter*)importDateFormatter -{ - static dispatch_once_t onceInput; - static NSDateFormatter* inputDateFormatter; - dispatch_once(&onceInput, ^{ - inputDateFormatter = [[NSDateFormatter alloc] init]; - [inputDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; - [inputDateFormatter setDateFormat:@"yyyy-MM-dd'T'HHmmssZZZ"]; - }); - return inputDateFormatter; -} - --(NSDate*)__NSDateFromNSString:(NSString*)string -{ - string = [string stringByReplacingOccurrencesOfString:@":" withString:@""]; // this is such an ugly code, is this the only way? - return [self.importDateFormatter dateFromString: string]; -} - --(NSString*)__JSONObjectFromNSDate:(NSDate*)date -{ - static dispatch_once_t onceOutput; - static NSDateFormatter *outputDateFormatter; - dispatch_once(&onceOutput, ^{ - outputDateFormatter = [[NSDateFormatter alloc] init]; - [outputDateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]]; - [outputDateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ssZZZ"]; - }); - return [outputDateFormatter stringFromDate:date]; -} - -#pragma mark - number <-> date -- (NSDate*)NSDateFromNSNumber:(NSNumber*)number -{ - return [NSDate dateWithTimeIntervalSince1970:number.doubleValue]; -} - -#pragma mark - string <-> NSTimeZone - -- (NSTimeZone *)NSTimeZoneFromNSString:(NSString *)string { - return [NSTimeZone timeZoneWithName:string]; -} - -- (id)JSONObjectFromNSTimeZone:(NSTimeZone *)timeZone { - return [timeZone name]; -} - -#pragma mark - hidden transform for empty dictionaries -//https://github.com/icanzilb/JSONModel/issues/163 --(NSDictionary*)__NSDictionaryFromNSArray:(NSArray*)array -{ - if (array.count==0) return @{}; - return (id)array; -} - --(NSMutableDictionary*)__NSMutableDictionaryFromNSArray:(NSArray*)array -{ - if (array.count==0) return [[self __NSDictionaryFromNSArray:array] mutableCopy]; - return (id)array; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt deleted file mode 100644 index cbcdb3b7d5e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/LICENSE_jsonmodel.txt +++ /dev/null @@ -1,23 +0,0 @@ -JSONModel - -Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -This code is distributed under the terms and conditions of the MIT license. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in the -Software without restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md deleted file mode 100644 index 996fe0f9683..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/JSONModel/README.md +++ /dev/null @@ -1,527 +0,0 @@ -## Magical Data Modelling Framework for JSON - -### Version 1.0.2 - -#####NB: Swift works in a different way under the hood than Objective-C. Therefore I can't find a way to re-create JSONModel in Swift. JSONModel in Objective-C works in Swift apps through CocoaPods or as an imported Objective-C library. - ---- -If you like JSONModel and use it, could you please: - - * star this repo - - * send me some feedback. Thanks! - ---- - -![JSONModel for iOS and OSX](http://jsonmodel.com/img/jsonmodel_logolike.png) - -JSONModel is a library, which allows rapid creation of smart data models. You can use it in your iOS or OSX apps. - -JSONModel automatically introspects your model classes and the structure of your JSON input and reduces drastically the amount of code you have to write. - -[![](http://www.touch-code-magazine.com/img/json.png)](http://www.touch-code-magazine.com/img/json.png) - - ------------------------------------- -Adding JSONModel to your project -==================================== - -#### Requirements - -* ARC only; iOS 5.0+ / OSX 10.7+ -* **SystemConfiguration.framework** - -#### Get it as: 1) source files - -1. Download the JSONModel repository as a [zip file](https://github.com/icanzilb/JSONModel/archive/master.zip) or clone it -2. Copy the JSONModel sub-folder into your Xcode project -3. Link your app to SystemConfiguration.framework - -#### or 2) via Cocoa pods - -In your project's **Podfile** add the JSONModel pod: - -```ruby -pod 'JSONModel' -``` -If you want to read more about CocoaPods, have a look at [this short tutorial](http://www.raywenderlich.com/12139/introduction-to-cocoapods). - -#### Source code documentation -The source code includes class docs, which you can build yourself and import into Xcode: - -1. If you don't already have [appledoc](http://gentlebytes.com/appledoc/) installed, install it with [homebrew](http://brew.sh/) by typing `brew install appledoc`. -2. Install the documentation into Xcode by typing `appledoc .` in the root directory of the repository. -3. Restart Xcode if it's already running. - ------------------------------------- -Basic usage -==================================== - -Consider you have a JSON like this: -```javascript -{"id":"10", "country":"Germany", "dialCode": 49, "isInEurope":true} -``` - - * Create a new Objective-C class for your data model and make it inherit the JSONModel class. - * Declare properties in your header file with the name of the JSON keys: - -```objective-c -#import "JSONModel.h" - -@interface CountryModel : JSONModel - -@property (assign, nonatomic) int id; -@property (strong, nonatomic) NSString* country; -@property (strong, nonatomic) NSString* dialCode; -@property (assign, nonatomic) BOOL isInEurope; - -@end -``` -There's no need to do anything in the **.m** file. - - * Initialize your model with data: - -```objective-c -#import "CountryModel.h" -... - -NSString* json = (fetch here JSON from Internet) ... -NSError* err = nil; -CountryModel* country = [[CountryModel alloc] initWithString:json error:&err]; - -``` - -If the validation of the JSON passes you have all the corresponding properties in your model populated from the JSON. JSONModel will also try to convert as much data to the types you expect, in the example above it will: - -* convert "id" from string (in the JSON) to an int for your class -* just copy country's value -* convert dialCode from number (in the JSON) to an NSString value -* finally convert isInEurope to a BOOL for your BOOL property - -And the good news is all you had to do is define the properties and their expected types. - -------- -#### Online tutorials - - -Official website: [http://www.jsonmodel.com](http://www.jsonmodel.com) - -Class docs online: [http://jsonmodel.com/docs/](http://jsonmodel.com/docs/) - -Step-by-step tutorials: - - * [How to fetch and parse JSON by using data models](http://www.touch-code-magazine.com/how-to-fetch-and-parse-json-by-using-data-models/) - - * [Performance optimisation for working with JSON feeds via JSONModel](http://www.touch-code-magazine.com/performance-optimisation-for-working-with-json-feeds-via-jsonmodel/) - - * [How to make a YouTube app using MGBox and JSONModel](http://www.touch-code-magazine.com/how-to-make-a-youtube-app-using-mgbox-and-jsonmodel/) - -------- -Examples -======= - -#### Automatic name based mapping - - - - - -
    -
    -{
    -  "id": "123",
    -  "name": "Product name",
    -  "price": 12.95
    -}
    -
    -
    -
    -@interface ProductModel : JSONModel
    -@property (assign, nonatomic) int id;
    -@property (strong, nonatomic) NSString* name;
    -@property (assign, nonatomic) float price;
    -@end
    -
    -@implementation ProductModel
    -@end
    -
    -
    - -#### Model cascading (models including other models) - - - - - -
    -
    -{
    -  "order_id": 104,
    -  "total_price": 13.45,
    -  "product" : {
    -    "id": "123",
    -    "name": "Product name",
    -    "price": 12.95
    -  }
    -}
    -
    -
    -
    -@interface OrderModel : JSONModel
    -@property (assign, nonatomic) int order_id;
    -@property (assign, nonatomic) float total_price;
    -@property (strong, nonatomic) ProductModel* product;
    -@end
    -
    -@implementation OrderModel
    -@end
    -
    -
    - -#### Model collections - - - - - -
    -
    -{
    -  "order_id": 104,
    -  "total_price": 103.45,
    -  "products" : [
    -    {
    -      "id": "123",
    -      "name": "Product #1",
    -      "price": 12.95
    -    },
    -    {
    -      "id": "137",
    -      "name": "Product #2",
    -      "price": 82.95
    -    }
    -  ]
    -}
    -
    -
    -
    -@protocol ProductModel
    -@end
    -
    -@interface ProductModel : JSONModel
    -@property (assign, nonatomic) int id;
    -@property (strong, nonatomic) NSString* name;
    -@property (assign, nonatomic) float price;
    -@end
    -
    -@implementation ProductModel
    -@end
    -
    -@interface OrderModel : JSONModel
    -@property (assign, nonatomic) int order_id;
    -@property (assign, nonatomic) float total_price;
    -@property (strong, nonatomic) NSArray<ProductModel>* products;
    -@end
    -
    -@implementation OrderModel
    -@end
    -
    -
    - -#### Key mapping - - - - - -
    -
    -{
    -  "order_id": 104,
    -  "order_details" : [
    -    {
    -      "name": "Product#1",
    -      "price": {
    -        "usd": 12.95
    -      }
    -    }
    -  ]
    -}
    -
    -
    -
    -@interface OrderModel : JSONModel
    -@property (assign, nonatomic) int id;
    -@property (assign, nonatomic) float price;
    -@property (strong, nonatomic) NSString* productName;
    -@end
    -
    -@implementation OrderModel
    -
    -+(JSONKeyMapper*)keyMapper
    -{
    -  return [[JSONKeyMapper alloc] initWithDictionary:@{
    -    @"order_id": @"id",
    -    @"order_details.name": @"productName",
    -    @"order_details.price.usd": @"price"
    -  }];
    -}
    -
    -@end
    -
    -
    - -#### Global key mapping (applies to all models in your app) - - - - -
    -
    -[JSONModel setGlobalKeyMapper:[
    -    [JSONKeyMapper alloc] initWithDictionary:@{
    -      @"item_id":@"ID",
    -      @"item.name": @"itemName"
    -   }]
    -];
    -
    -
    -
    - -#### Map automatically under_score case to camelCase - - - - - -
    -
    -{
    -  "order_id": 104,
    -  "order_product" : @"Product#1",
    -  "order_price" : 12.95
    -}
    -
    -
    -
    -@interface OrderModel : JSONModel
    -
    -@property (assign, nonatomic) int orderId;
    -@property (assign, nonatomic) float orderPrice;
    -@property (strong, nonatomic) NSString* orderProduct;
    -
    -@end
    -
    -@implementation OrderModel
    -
    -+(JSONKeyMapper*)keyMapper
    -{
    -  return [JSONKeyMapper mapperFromUnderscoreCaseToCamelCase];
    -}
    -
    -@end
    -
    -
    - -#### Optional properties (i.e. can be missing or null) - - - - - -
    -
    -{
    -  "id": "123",
    -  "name": null,
    -  "price": 12.95
    -}
    -
    -
    -
    -@interface ProductModel : JSONModel
    -@property (assign, nonatomic) int id;
    -@property (strong, nonatomic) NSString<Optional>* name;
    -@property (assign, nonatomic) float price;
    -@property (strong, nonatomic) NSNumber<Optional>* uuid;
    -@end
    -
    -@implementation ProductModel
    -@end
    -
    -
    - -#### Ignored properties (i.e. JSONModel completely ignores them) - - - - - -
    -
    -{
    -  "id": "123",
    -  "name": null
    -}
    -
    -
    -
    -@interface ProductModel : JSONModel
    -@property (assign, nonatomic) int id;
    -@property (strong, nonatomic) NSString<Ignore>* customProperty;
    -@end
    -
    -@implementation ProductModel
    -@end
    -
    -
    - - -#### Make all model properties optional (avoid if possible) - - - - -
    -
    -@implementation ProductModel
    -+(BOOL)propertyIsOptional:(NSString*)propertyName
    -{
    -  return YES;
    -}
    -@end
    -
    -
    - - -#### Lazy convert collection items from dictionaries to models - - - - - -
    -
    -{
    -  "order_id": 104,
    -  "total_price": 103.45,
    -  "products" : [
    -    {
    -      "id": "123",
    -      "name": "Product #1",
    -      "price": 12.95
    -    },
    -    {
    -      "id": "137",
    -      "name": "Product #2",
    -      "price": 82.95
    -    }
    -  ]
    -}
    -
    -
    -
    -@protocol ProductModel
    -@end
    -
    -@interface ProductModel : JSONModel
    -@property (assign, nonatomic) int id;
    -@property (strong, nonatomic) NSString* name;
    -@property (assign, nonatomic) float price;
    -@end
    -
    -@implementation ProductModel
    -@end
    -
    -@interface OrderModel : JSONModel
    -@property (assign, nonatomic) int order_id;
    -@property (assign, nonatomic) float total_price;
    -@property (strong, nonatomic) NSArray<ProductModel, ConvertOnDemand>* products;
    -@end
    -
    -@implementation OrderModel
    -@end
    -
    -
    - -#### Using the built-in thin HTTP client - -```objective-c - -//add extra headers -[[JSONHTTPClient requestHeaders] setValue:@"MySecret" forKey:@"AuthorizationToken"]; - -//make post, get requests -[JSONHTTPClient postJSONFromURLWithString:@"http://mydomain.com/api" - params:@{@"postParam1":@"value1"} - completion:^(id json, JSONModelError *err) { - - //check err, process json ... - - }]; -``` - -#### Export model to NSDictionary or to JSON text - -```objective-c - -ProductModel* pm = [[ProductModel alloc] initWithString:jsonString error:nil]; -pm.name = @"Changed Name"; - -//convert to dictionary -NSDictionary* dict = [pm toDictionary]; - -//convert to text -NSString* string = [pm toJSONString]; - -``` - -#### Custom data transformers - -```objective-c - -@implementation JSONValueTransformer (CustomTransformer) - -- (NSDate *)NSDateFromNSString:(NSString*)string { - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:APIDateFormat]; - return [formatter dateFromString:string]; -} - -- (NSString *)JSONObjectFromNSDate:(NSDate *)date { - NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; - [formatter setDateFormat:APIDateFormat]; - return [formatter stringFromDate:date]; -} - -@end - -``` - -* json validation -* error handling -* custom data validation -* automatic compare and equality features -* and more. - -------- - -Misc -======= - -Author: [Marin Todorov](http://www.touch-code-magazine.com) - -Contributors: Christian Hoffmann, Mark Joslin, Julien Vignali, Symvaro GmbH, BB9z. -Also everyone who did successful [pull requests](https://github.com/icanzilb/JSONModel/graphs/contributors). - -Change log : [https://github.com/icanzilb/JSONModel/blob/master/Changelog.md](https://github.com/icanzilb/JSONModel/blob/master/Changelog.md) - -------- -#### License -This code is distributed under the terms and conditions of the MIT license. - -------- -#### Contribution guidelines - -**NB!** If you are fixing a bug you discovered, please add also a unit test so I know how exactly to reproduce the bug before merging. - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json b/samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json deleted file mode 100644 index 3b6ca09fb45..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Local Podspecs/SwaggerClient.podspec.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "SwaggerClient", - "version": "0.1.0", - "summary": "A short description of SwaggerClient.", - "description": " An optional longer description of SwaggerClient\n\n * Markdown format.\n * Don't worry about the indent, we strip it!\n", - "homepage": "https://github.com//SwaggerClient", - "license": "MIT", - "authors": { - "geekerzp": "geekerzp@gmail.com" - }, - "source": { - "git": "https://github.com//SwaggerClient.git", - "tag": "0.1.0" - }, - "platforms": { - "ios": "7.0" - }, - "requires_arc": true, - "source_files": "SwaggerClient/**/*", - "public_header_files": "SwaggerClient/**/*.h", - "resource_bundles": { - "SwaggerClient": [ - "Pod/Assets/*.png" - ] - }, - "dependencies": { - "AFNetworking": [ - "~> 2.3" - ], - "JSONModel": [ - - ], - "ISO8601": [ - - ] - } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock b/samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock deleted file mode 100644 index d1ab2cdf9eb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Manifest.lock +++ /dev/null @@ -1,49 +0,0 @@ -PODS: - - AFNetworking (2.5.4): - - AFNetworking/NSURLConnection (= 2.5.4) - - AFNetworking/NSURLSession (= 2.5.4) - - AFNetworking/Reachability (= 2.5.4) - - AFNetworking/Security (= 2.5.4) - - AFNetworking/Serialization (= 2.5.4) - - AFNetworking/UIKit (= 2.5.4) - - AFNetworking/NSURLConnection (2.5.4): - - AFNetworking/Reachability - - AFNetworking/Security - - AFNetworking/Serialization - - AFNetworking/NSURLSession (2.5.4): - - AFNetworking/Reachability - - AFNetworking/Security - - AFNetworking/Serialization - - AFNetworking/Reachability (2.5.4) - - AFNetworking/Security (2.5.4) - - AFNetworking/Serialization (2.5.4) - - AFNetworking/UIKit (2.5.4): - - AFNetworking/NSURLConnection - - AFNetworking/NSURLSession - - Expecta (1.0.0) - - ISO8601 (0.3.0) - - JSONModel (1.1.0) - - Specta (1.0.2) - - SwaggerClient (0.1.0): - - AFNetworking (~> 2.3) - - ISO8601 - - JSONModel - -DEPENDENCIES: - - Expecta - - Specta - - SwaggerClient (from `../`) - -EXTERNAL SOURCES: - SwaggerClient: - :path: "../" - -SPEC CHECKSUMS: - AFNetworking: 05edc0ac4c4c8cf57bcf4b84be5b0744b6d8e71e - Expecta: 32604574add2c46a36f8d2f716b6c5736eb75024 - ISO8601: 8d8a22d5edf0554a1cf75bac028c76c1dc0ffaef - JSONModel: ec77e9865236a7a09d9cf7668df6b4b328d9ec1d - Specta: 9cec98310dca411f7c7ffd6943552b501622abfe - SwaggerClient: 579729c54e8e2e34566e5b5572adc959518663ea - -COCOAPODS: 0.37.1 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj deleted file mode 100644 index e158beea742..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/project.pbxproj +++ /dev/null @@ -1,3349 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - 009F14C0CA20741504926131 /* JSONModel+networking.h in Headers */ = {isa = PBXBuildFile; fileRef = B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 015B81A52CCCF49BCE3973BE /* SWGPetApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */; }; - 01644CF4631020B9AC9CCD06 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 05E44B1705BF02EF459EED58 /* SWGOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 060CE80CB8B14C7F22E6C8F7 /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 063630C46D0AE3241769A6AB /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 064D4D263A3BCF74314B1CC0 /* NSValue+Expecta.m in Sources */ = {isa = PBXBuildFile; fileRef = CB2A97414B35780C4D650A65 /* NSValue+Expecta.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 0769C01E1EDA98F189CA18F7 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 08D39D19BF314C76BE1C7C47 /* JSONModelError.h in Headers */ = {isa = PBXBuildFile; fileRef = A79E486BE2BAA943C0E47F51 /* JSONModelError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A807DDB6336109324346314 /* EXPMatchers+conformTo.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E147F308CD2889593641F8 /* EXPMatchers+conformTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BA67D960C3D46FE796FA170 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C70D134185F0A5D884F2D5 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0C64F018C08F817B763164B4 /* SWGMyresult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */; }; - 0CE023D16C43712578A85693 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0D6A55BDCE3AAA3B8A4451D0 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A4077B653CCC6F44DDA78122 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m */; }; - 0D7DC58CB3CDFDB33C4CB741 /* SWGPetApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */; }; - 0DE7F2395E87EE714F79B368 /* JSONHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 0E5BA06D6F20D109F5937BBA /* Pods-SwaggerClient_Example-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A3D3304828283C9BAC71B216 /* Pods-SwaggerClient_Example-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 10D3E7AAF6BF29347D2C6098 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */; }; - 1398D1EFD62E17C5E8B2D5E4 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 141E818821C0DF4EF86D111A /* EXPMatchers+beGreaterThan.h in Headers */ = {isa = PBXBuildFile; fileRef = D15CDBD1F8D1EE6AB0D63F21 /* EXPMatchers+beGreaterThan.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14B409D1DD01CD3148C13D93 /* UIAlertView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */; }; - 14D082B7758784153108F8D0 /* EXPMatchers+endWith.h in Headers */ = {isa = PBXBuildFile; fileRef = 8DB4BB24028928E6E7BE64E9 /* EXPMatchers+endWith.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 153CA93C3D5647FED90150DD /* ISO8601.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */; }; - 15481C9B911D9926D6616544 /* JSONModelArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 15D3342D7E8179197A16CE99 /* EXPFloatTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 734153C8D7D6EE89E1CBF7A4 /* EXPFloatTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 15D907F1F8EE9988D498B929 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 179CF1D636A8BCC9B4FF0357 /* EXPMatchers+match.m in Sources */ = {isa = PBXBuildFile; fileRef = DFA9B08443D964E2FB073F56 /* EXPMatchers+match.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 18EB1478750F10527DCBA3CA /* XCTest+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = B13A1E5CC1C83917B3B55837 /* XCTest+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A089E25AFA9D708ACA954D0 /* EXPMatchers+contain.h in Headers */ = {isa = PBXBuildFile; fileRef = F7E78B22E6B39AF231BCCA2D /* EXPMatchers+contain.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A42236975D31BC018BADEA8 /* EXPMatchers+beCloseTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AFADA1570737157E9617EFA /* EXPMatchers+beCloseTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1AE4C4E081C7868C097ED07E /* EXPMatchers+beInTheRangeOf.m in Sources */ = {isa = PBXBuildFile; fileRef = DF0444D8EBDF25B4DEFD64FC /* EXPMatchers+beInTheRangeOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 1B9947C260FA1F8C7BBF6CAA /* JSONValueTransformer+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BF4F57244442FA9C0CE55BF /* JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 1C19F010F92332D333674C99 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 1CF4FB9D2FD679D464ABBB50 /* SpectaUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A26EF949942E5B501DDD747 /* SpectaUtility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1E90336D2D07D4CCD8EAB3AE /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F6FDD41776492A1FC024230 /* Pods-SwaggerClient_Tests-JSONModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 16CF586DFE9835700F2EDA9E /* Pods-SwaggerClient_Tests-JSONModel-dummy.m */; }; - 2019465B5EC42B2DCBB85EE3 /* Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 381AE18EE5432808A1136286 /* Specta.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 202A56F969E09068E449B790 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 208F0DB6A4BA036D42430F0E /* SWGMyresult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 216BA373617DE71E01797A11 /* NSDate+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 234F4761A980F0FB31468104 /* SpectaUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D6BE8527F16F514E61677DA4 /* SpectaUtility.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 248E11A29947ED3176089DE8 /* EXPUnsupportedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 859359D6C9F1E75F8FD12FC7 /* EXPUnsupportedObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 24A7213C685D7D07D1A1FEBD /* SWGObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 93127E06DFE790D76898A78D /* SWGObject.m */; }; - 2575C7D4A30F9F057EEB475B /* JSONHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2599FEFF7BBE8634BD34A792 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */; }; - 28DA345E3A79443D17917DD3 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */; }; - 2A1D80A2AD26A4E7E3CB41BF /* JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 67A228DF9CD60524B576E388 /* JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2B068325226CBE00207FD473 /* EXPMatchers+equal.m in Sources */ = {isa = PBXBuildFile; fileRef = 26140D01ECBBE302403277E7 /* EXPMatchers+equal.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 2B9B995C35A4D77609B5BFF2 /* JSONModelClassProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2BF8572932D3DB0D00340B5D /* ExpectaObject.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9CD3349C1E0B89048D7931 /* ExpectaObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2C0B0BCC4246AA2B5C7A85A4 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E90E3F2428A92C2B30B905D1 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2E0CAD7ECD05DB499DB08A87 /* JSONModelError.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 2E492A887BD1485D00A872DE /* SWGApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2FB329EBD1692264B6EF0552 /* SWGStoreApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */; }; - 2FBDF7CE14C4468420FD55AE /* Pods-SwaggerClient_Tests-Specta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 60DECAD526F277F125AC6CC8 /* Pods-SwaggerClient_Tests-Specta-dummy.m */; }; - 30761F9D2ADDD7315DDC95D8 /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BD49D2B002813654F20C0CDB /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 30AED8CD55E9DA4D102A028B /* SWGObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F66BA3CD50A4290602F14B /* SWGObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31A472719AA3A52EC74903FD /* SWGApiClient.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31EED5998AB440042E5AD2A1 /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 01FC7B913F4D0D8ABA61D37F /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 31F4C8B75EEE1B23E2591723 /* SWGPetApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 60F89DDC8635677F871D034F /* SWGPetApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 349C1EC2A3BC841F900B1486 /* SPTCallSite.m in Sources */ = {isa = PBXBuildFile; fileRef = 5ED368FA80CE15CF073E7E4C /* SPTCallSite.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 35B0AC4B7AF8B00BC4C38BE6 /* SpectaDSL.m in Sources */ = {isa = PBXBuildFile; fileRef = A41CD6CC31666FBF14F37933 /* SpectaDSL.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3760B1DD16BFF927E104FB25 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 02BFF49A4C0CD62A7A017609 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 386EB7F3BE797D89A650C1C5 /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */; }; - 38DD8E43F24A829555F60CFA /* EXPExpect.m in Sources */ = {isa = PBXBuildFile; fileRef = E2E6D41C47D3DA237C488316 /* EXPExpect.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 3A595234403693F5B22FB680 /* JSONModelClassProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 91DC534FB82569495452D79F /* JSONModelClassProperty.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 3B64A6FDF788A2104D9BB03D /* Pods-SwaggerClient_Example-JSONModel-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DC4F0DB2C1E5DEACB3919576 /* Pods-SwaggerClient_Example-JSONModel-dummy.m */; }; - 3D3DB30244C6BC6C236665C2 /* EXPMatchers+beIdenticalTo.m in Sources */ = {isa = PBXBuildFile; fileRef = B7A8D6EF8C60FFFB42E24B88 /* EXPMatchers+beIdenticalTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 3DC47F224263A6AE449CFFDC /* JSONKeyMapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3DDA99600B95318A88915CE5 /* SWGCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */; }; - 3EAEDA676CAF94858D91CFB0 /* SpectaTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A3143CF53A3ECFD840FEBF5 /* SpectaTypes.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3EC6DC73A10ED5CC2F75062A /* SWGOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8371F57BE2022A982DD2C14B /* SWGOrder.m */; }; - 3FA455AFA48AD50F1D53F9CA /* JSONModelLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 40978838FAEA6D634F4AD042 /* JSONValueTransformer+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 430B13D7C84147B12F239C1C /* ISO8601.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */; }; - 4327F8FF04D9796D030CC825 /* SWGMythingApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 43EB4E01F9DBC56B8153AF88 /* SWGUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F927BCFCED60E5C20DD572D /* SWGUser.m */; }; - 44E1A78EC1381D154F5F4198 /* EXPMatchers+beLessThan.h in Headers */ = {isa = PBXBuildFile; fileRef = B6FCB81E5D8E3706D242931A /* EXPMatchers+beLessThan.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 45BE91BE73E2BB75611507CA /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */; }; - 4684F0551F479F660241F8EE /* SWGConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF50F76847FEFE63382A19D /* SWGConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 480220DF7A8958ABA2B68C4A /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 5853898EA95C369F30529C9B /* EXPMatchers+beGreaterThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 480B9A799CF713D7A4FB1280 /* EXPMatchers+equal.h in Headers */ = {isa = PBXBuildFile; fileRef = 88AAAF1815056252470FC2A6 /* EXPMatchers+equal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 485CBCFDC4C3E69D41661405 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */; }; - 49207B3420011B51EB18E841 /* EXPMatchers+conformTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C4946DD8004B10DBD3BEBE0 /* EXPMatchers+conformTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 49BD45475EFF07925EF1261D /* SpectaDSL.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E1126602057323308CBEB1C /* SpectaDSL.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4A2E86089A4A9CBC89A42217 /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CB976EFCEBA507C7297EFFAF /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m */; }; - 4C1848887F607EB5D0D594FB /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCD887355DA3622403C587F3 /* Security.framework */; }; - 4C235C092D5E9122C9675223 /* NSDate+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4C87A409DB81EB3100727F0F /* EXPMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 71301AA0D0508AC69416EEFD /* EXPMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4CD5A6D7AA3D5BFD09648D1D /* EXPDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = BE4CCABD7BD7EF95BEC3C2A4 /* EXPDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4CE48BA8AC5C9F3EF8626447 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 4D4DFF614C17C0DC6F9358B9 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = FF99417D61F3A97DC44475AF /* EXPMatchers+beLessThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4D8B2BA43AAE4EB70B675653 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E0D59D3C52705977CDA2F8C /* EXPDoubleTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FA82A66FE087D46B5F479DF /* EXPDoubleTuple.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 4E381D04C09A000DF81BB192 /* EXPExpect.h in Headers */ = {isa = PBXBuildFile; fileRef = 722C967FF2EE63957185640A /* EXPExpect.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50147C1C98A2BE3F820601A9 /* NSArray+JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5396861AA4F84D5063B9B570 /* JSONValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 53DB01B8A07B731462961681 /* JSONModelArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 541A3EF8AB9F89D0C26F5180 /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */; }; - 54A1C77FFEF9D6711B04A35F /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5557E105ADC6440D8DE05BE8 /* SWGApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */; }; - 558377E71A2AECE6C70176A1 /* JSONAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = D906469EA22490516C576F34 /* JSONAPI.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 56250F2F58B9A7760BFA25D2 /* SWGFile.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBE9B8A684DF642FE20657F /* SWGFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5771BA042DF953FA88D9C2FF /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AABA64768BF1C67079AC14C /* XCTest.framework */; }; - 58933698E078FEA9C0689292 /* SPTCompiledExample.h in Headers */ = {isa = PBXBuildFile; fileRef = 78DEE88FE58FD1EB9ED82644 /* SPTCompiledExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 591D3B049A7E8627A5AA65B1 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */; }; - 592FFE8ADED8118B48C3C008 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */; }; - 59719066DA7A3B5DD4234C92 /* JSONModel+networking.h in Headers */ = {isa = PBXBuildFile; fileRef = B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5A8DE01C8A5A5BA6F321912A /* EXPMatchers+beLessThanOrEqualTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3348A38E5534FDD63284711E /* EXPMatchers+beLessThanOrEqualTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5AF80236C8B3D49B88DD6A73 /* ISO8601Serialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 5B2FCF39BB864869CD94F2F9 /* JSONValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B7DF7966982B7F4CADDD133 /* SWGStoreApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 70728AC343FB456859D11ABE /* SWGStoreApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5CF717B5F4B92B85335848B5 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE9F929357775BD67A93711 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D36786D11940C4FC2D151F1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */; }; - 5D474A781C64601B7793EACE /* EXPMatchers+raise.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F8CC8C24B86136D1949316C /* EXPMatchers+raise.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DA26B0C4EB1C7DEB0B44AAF /* XCTest.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AABA64768BF1C67079AC14C /* XCTest.framework */; }; - 5EB23F6A3A0BC89591B46C53 /* SWGMyresult.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */; }; - 5EC683903E3BFB84AF431EE7 /* EXPMatchers+beSubclassOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 1527CA2833B390D6002D3965 /* EXPMatchers+beSubclassOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 5F372EF252811B674AC4AB6B /* EXPMatchers+beSupersetOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 28CEAD6EAF4AC73948D28F2B /* EXPMatchers+beSupersetOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61E0F74A03A9676D1F9B9A1A /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */; }; - 6353F43D216317DCB7178D76 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 64839F8447FE9FFE7BEAA520 /* UIAlertView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */; }; - 655A1A5574F0ADA33C6BA555 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C0C70D134185F0A5D884F2D5 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65EEB46EDB53A949C6316472 /* SPTTestSuite.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E2261DFC4C37167696E0BF2 /* SPTTestSuite.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 684A4BF6370BC43C9704A17A /* SWGConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF50F76847FEFE63382A19D /* SWGConfiguration.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6895CF33F4FB371D6FCA3FE9 /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69F02A625CD67C7385B76D0C /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */; }; - 6BD0E2ACB9C405F9E64B8669 /* SWGJSONRequestSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6C73129BE33A179F9AB0617C /* SWGQueryParamCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */; }; - 6CBB043C1B99FCC1B8421A4D /* SWGMythingApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */; }; - 6D9D7788C3964B9919E6AFDD /* SWGConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */; }; - 6DF752A3DC92FFE0ED8186A6 /* EXPMatchers+beNil.m in Sources */ = {isa = PBXBuildFile; fileRef = AB17D934B80A74041502DE8A /* EXPMatchers+beNil.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6E80282ECD2D0EBFB5E4485E /* SWGJSONRequestSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6F0C994E24BAEFAD916AEE27 /* EXPMatchers+beFalsy.m in Sources */ = {isa = PBXBuildFile; fileRef = 500D44D0509C0C1AF7854372 /* EXPMatchers+beFalsy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 6FFFCA02F0848062C1CFC252 /* EXPBlockDefinedMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = ACA0D0CF9107E24C8C01A0D9 /* EXPBlockDefinedMatcher.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7022EA6C3ED11B8F6D17C915 /* AFHTTPRequestOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */; }; - 70355ED21006B4EFC0743514 /* SWGJSONResponseSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 708D1BE5029DFC2517A09EDF /* SWGQueryParamCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */; }; - 709D563EE63BC8B34E719F68 /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 719253026530EB29F2CC2B72 /* SWGFile.h in Headers */ = {isa = PBXBuildFile; fileRef = EEBE9B8A684DF642FE20657F /* SWGFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 730C8CD80F56DC3EBE6F3080 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */; }; - 730EB4EC6649BB254DE45A23 /* SWGStoreApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 70728AC343FB456859D11ABE /* SWGStoreApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 733CE4BAA5170020996D3E9B /* SPTCompiledExample.m in Sources */ = {isa = PBXBuildFile; fileRef = B724F8E376ED2BB7D587FC11 /* SPTCompiledExample.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 738A8A430BD4B242B982A059 /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */; }; - 739B0A56F4B979196B38F1D4 /* SwaggerClient.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */; }; - 73FCB4F39FE4BFF9537374F4 /* SWGPet.m in Sources */ = {isa = PBXBuildFile; fileRef = CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */; }; - 7422BD5EBC0E6395F1069F71 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 74844E56902AF11EAD1519DC /* EXPUnsupportedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B0D24466BA8FF3A32751D38 /* EXPUnsupportedObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 75152788B3BE31431561865B /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DA0260CE5A8A4FDA879A100 /* EXPMatchers+beGreaterThanOrEqualTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76BCBD536C1967E6EE51F9CC /* EXPMatchers+postNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 47C2E8EC548FF8BFE0B65660 /* EXPMatchers+postNotification.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7711A28F5EA5D2624146AA49 /* EXPMatchers+raise.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E33B17ABCEF8719288A1534 /* EXPMatchers+raise.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7891CCC1701105C4924B92D2 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */; }; - 79AC15C3F613CF7B5167E18A /* ISO8601Serialization.h in Headers */ = {isa = PBXBuildFile; fileRef = A3DA13084371612DD395FBFF /* ISO8601Serialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 79BFDC0F5D922F559F6386CD /* SWGCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A068863C9D19B0DE204F391 /* EXPFloatTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 4648E753C7D4CD63548A0283 /* EXPFloatTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A0E55F5686D8206F7ED79ED /* SWGUser.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F927BCFCED60E5C20DD572D /* SWGUser.m */; }; - 7A1C599B7BB230911B38A23D /* EXPMatcherHelpers.m in Sources */ = {isa = PBXBuildFile; fileRef = B96C8F13F1DC53A3C3C3D159 /* EXPMatcherHelpers.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 7A53181A5C51E8CDC82D78FF /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A95722C4365CBB156219D87 /* Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = E411487CD9041CB730BB08A7 /* Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7AC10CEF01A1AEF811D131B9 /* SWGFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */; }; - 7B97CB82AB5C67E42EF47207 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */; }; - 7BD9D6B0473CD492B25067F0 /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DABBA96CC74EAE33EEE3E7FF /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m */; }; - 7BEDB566042514B74A383C14 /* JSONModel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF9A35933615D555049BE26 /* JSONModel.framework */; }; - 7E3EF033ABA1E93C7F640408 /* AFHTTPRequestOperationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E51B9CF8F060125255C4874 /* JSONModelArray.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F9EE30367A72427A141D157 /* EXPMatchers+respondTo.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A06A521245DAB5B8F162AB4 /* EXPMatchers+respondTo.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 81292025A1A602AF03CF2786 /* NSArray+JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81412F96CE91EA61DD405215 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36B743CDFC49D282EF4A78C8 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 815056BB9D281AB625FD6525 /* NSArray+JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8178DA76D849E1EEFDD0776E /* ISO8601Serialization.h in Headers */ = {isa = PBXBuildFile; fileRef = A3DA13084371612DD395FBFF /* ISO8601Serialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8182438CCBAC66CC21D7E6D8 /* EXPMatchers+beInstanceOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 016434DA280A6337716485B9 /* EXPMatchers+beInstanceOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 81E1F4FC8572144FC30559B2 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 82169A131417A9577A927111 /* Pods-SwaggerClient_Tests-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AE7532915C90B421F28CFBEA /* Pods-SwaggerClient_Tests-dummy.m */; }; - 8288B907B026F63D6B2E4C69 /* SWGUserApi.m in Sources */ = {isa = PBXBuildFile; fileRef = F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */; }; - 83CE0A6BC031E570966864C9 /* SWGOrder.m in Sources */ = {isa = PBXBuildFile; fileRef = 8371F57BE2022A982DD2C14B /* SWGOrder.m */; }; - 85E4D74887E7F3F3702DBF51 /* EXPMatchers+beLessThan.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F068AE92A66AE490BD6DB0 /* EXPMatchers+beLessThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 875AF30991031E7098EEF798 /* SWGPetApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 60F89DDC8635677F871D034F /* SWGPetApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 891D33D88CE707237FF15709 /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */; }; - 8929E57AFE7279D698EF5E7E /* SPTSharedExampleGroups.h in Headers */ = {isa = PBXBuildFile; fileRef = 2EBBCF0DEF5740D6612DEB32 /* SPTSharedExampleGroups.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 895A70C08AF98E52F33DDF0D /* SWGConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */; }; - 8999ED93A69964E58772CB7C /* JSONAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB8A849BA1FECF15636A354 /* JSONAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A4B71DDA44F239B71659CC9 /* SWGUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8BC9B4305B0DDA301ACA4B07 /* JSONModelError.h in Headers */ = {isa = PBXBuildFile; fileRef = A79E486BE2BAA943C0E47F51 /* JSONModelError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8CDC523BB3A193C0478C2391 /* Pods-SwaggerClient_Example-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 517927BA19A3538D1E30DE50 /* Pods-SwaggerClient_Example-dummy.m */; }; - 8D650C64BE46E68CB35B4FCA /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */; }; - 8E08F266FF1D8F57E4358D4E /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */; }; - 8E1AE5FA00BEAC8AFAA2B331 /* JSONModel+networking.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8E4CC5A8039EE6FE63613C2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 8EFACBBBDC56722661F3744A /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8F5909852A74BE69436DD070 /* JSONKeyMapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 8FB224E07B86F6A688B90F58 /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 91E570000BEF9E1B7FE2D62C /* AFHTTPRequestOperationManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */; }; - 935DB5B30E1569E0AD36149E /* ISO8601Serialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 93A71FA7A09487B7309E2291 /* SWGCategory.m in Sources */ = {isa = PBXBuildFile; fileRef = 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */; }; - 9485712460E60EEE88CAC7F1 /* JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - 954A0C871E08071219871B4D /* EXPMatchers+raiseWithReason.h in Headers */ = {isa = PBXBuildFile; fileRef = D1EADD18818E3526F2CEAF2F /* EXPMatchers+raiseWithReason.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 96514B6F8D64D7C3330D5338 /* SWGQueryParamCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 97495C06470E679B7CF0A8CA /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - 98546537C1F973E3CD32D4FF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 451719F53715B179730D75E0 /* AFSecurityPolicy.m */; }; - 98AB219A7D05251D3F7F7191 /* EXPMatchers+beSupersetOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 194518CC1A4D172FAA272DB9 /* EXPMatchers+beSupersetOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - 9B34355CD7E63D1895627210 /* JSONHTTPClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9C4FAEE42252A322B0545CF6 /* NSObject+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = 57CF3ABF26B43FAE21E50CB8 /* NSObject+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E4390595213439458955F20 /* UIAlertView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E55563763BFCCA174A600C5 /* SWGQueryParamCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E825293685B2F9CCB212441 /* Pods-SwaggerClient_Tests-Expecta-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D09D890FDA06F27AD79B2C6 /* Pods-SwaggerClient_Tests-Expecta-dummy.m */; }; - 9F71319C3E9362B30F6C3769 /* AFURLConnectionOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */; }; - A070DA3650B5255D70D2B282 /* NSValue+Expecta.h in Headers */ = {isa = PBXBuildFile; fileRef = AAA259A98CD2B660A0FDA33A /* NSValue+Expecta.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A12B12D456D0FB491E19B70F /* Pods-SwaggerClient_Example-ISO8601-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 57E80A657EA2993398931392 /* Pods-SwaggerClient_Example-ISO8601-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1C1A904CA59FC4D76396175 /* EXPMatchers+postNotification.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9F5723E5940D1269352135 /* EXPMatchers+postNotification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A206B6446D5E2CABE5586523 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - A325E1719B72BDDEE0616DBF /* SWGTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C14451912091A7274AEF9E1 /* SWGTag.m */; }; - A341B6CFB383324AA067A6C9 /* SWGObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 79F66BA3CD50A4290602F14B /* SWGObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A39E4CD5AE12216FB1487BE3 /* EXPMatchers+beIdenticalTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 280E652D458B4E1ED5BFFA77 /* EXPMatchers+beIdenticalTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A52C6D47F0316E0850BDB9CC /* EXPMatchers+beginWith.h in Headers */ = {isa = PBXBuildFile; fileRef = F0A24157B4BA2D2E1B9CEC18 /* EXPMatchers+beginWith.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A53061A46842AA54DAB54023 /* JSONAPI.m in Sources */ = {isa = PBXBuildFile; fileRef = D906469EA22490516C576F34 /* JSONAPI.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - A5A2B75AEEE5F1471ABF7C51 /* SWGFile.m in Sources */ = {isa = PBXBuildFile; fileRef = CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */; }; - A615771FAD89E35239D87FF6 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6A04E6DCA180CCB638EB663 /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7B0C16EEB7FFA25C25370D4 /* JSONModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 67A228DF9CD60524B576E388 /* JSONModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A8C07412B7F1F58F95027E4B /* SPTExampleGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 449238F2067778F11FC67BBC /* SPTExampleGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A8CAB0E9B1CF76911B13ECC0 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = D7D3138EAAE50116ADEF292E /* SPTExcludeGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9099FF7B971FB25BE12CE34 /* SWGMythingApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A94CB6D49585BD2377348821 /* ExpectaSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 432957C61F24704F540BB578 /* ExpectaSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AA260D742DDFFB983A47540C /* SWGUserApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 20402A2505F9199C8CF42E06 /* SWGUserApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AA31F2218DEBC427DA074A6F /* EXPMatchers+haveCountOf.m in Sources */ = {isa = PBXBuildFile; fileRef = F0761D1A1069513A78630ABA /* EXPMatchers+haveCountOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - AAD24B3301CA60B702236DAB /* SWGJSONResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */; }; - AB5C9A3A56CEBAB1AD349A33 /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ABB477C54AD69931FDAD534A /* EXPMatchers+raiseWithReason.m in Sources */ = {isa = PBXBuildFile; fileRef = 73B6962701256AF21226A51C /* EXPMatchers+raiseWithReason.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - ACD3422A4497EA29AB24A72E /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AD94F44BEC5659D1BB34DE23 /* SPTExampleGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C668D785979FC25F7808753 /* SPTExampleGroup.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - AD992DDF15A32176B225DE7D /* EXPMatchers.h in Headers */ = {isa = PBXBuildFile; fileRef = 28C0B26C4BD3B468DF0C9526 /* EXPMatchers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF5EA9CC989D2DD5BBC37E6D /* EXPMatchers+beginWith.m in Sources */ = {isa = PBXBuildFile; fileRef = E4A1DE5345BA9BBB37D745D1 /* EXPMatchers+beginWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - AF7B682321A34F5E0DC249CC /* Pods-SwaggerClient_Tests-ISO8601-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 32DE028703A8C4BC2B9C2A2E /* Pods-SwaggerClient_Tests-ISO8601-dummy.m */; }; - AFFF90368E8F9EF5886C30B2 /* JSONValueTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B13D156D3F01638F8D3EC102 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B1E4B9C9C788060FA05197D8 /* JSONModelClassProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2A892164C701F606A01393A /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */; }; - B423A4F4EC57E34D565252DC /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */; }; - B4795C0A8815C3A0950EC1B3 /* EXPMatchers+endWith.m in Sources */ = {isa = PBXBuildFile; fileRef = BD363A11A16DE391FD666E56 /* EXPMatchers+endWith.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - B4D66A60456836C75E244CA1 /* SWGTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8892A67E4E1629B3650958 /* SWGTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B540F67558AA7A144899EBBF /* SPTSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 3159DE92BFB696E3EC0DC17B /* SPTSpec.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - B577C09AD427A9630FC2762A /* Pods-SwaggerClient_Tests-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FE46EF9D2B28F3F175C4215 /* Pods-SwaggerClient_Tests-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B69AF6583C37F97E73A631A4 /* EXPMatchers+match.h in Headers */ = {isa = PBXBuildFile; fileRef = EC4578A72A4B005F7E2196EA /* EXPMatchers+match.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B6DAEBF843B8DC1DC8E3906F /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BAEA77B327844A9285B8670 /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B7BFFB369FFC08F30144EB53 /* AFHTTPRequestOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */; }; - B85B153A4B53D16F245FEEAA /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */; }; - B89BC26D73FFE70F2F4BD7F9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - B977CEEA0F438EDF96140C66 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9BA486CAAEB77195346C34B /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9D2A404F1B49622441EBB16 /* JSONAPI.h in Headers */ = {isa = PBXBuildFile; fileRef = DFB8A849BA1FECF15636A354 /* JSONAPI.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9E4C068BE8563261382F6A0 /* UIWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD3DBE17D08805BA594C4CDF /* ExpectaSupport.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E7B7B2C24266DB4297E958E /* ExpectaSupport.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BEA321219CA5B6A96477031D /* EXPMatchers+beCloseTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 76F320CEEEEE2836A8B1AAEC /* EXPMatchers+beCloseTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BEA7FF33522B439AEB60C281 /* JSONKeyMapper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BEF99C501593E888D27462DD /* ExpectaObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 243595BDFC8D37871876A044 /* ExpectaObject.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - BF2DDC96324CFDF7C303F050 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF726F674241490B1012F41D /* NSDate+ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF9AD2E3F2BBB0F23C5FE05B /* EXPMatchers+beKindOf.m in Sources */ = {isa = PBXBuildFile; fileRef = 6366F5C2F45F2C79A805911E /* EXPMatchers+beKindOf.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C05D4C12A5819F4C96283EF0 /* EXPMatchers+haveCountOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 92F9946AF7B3E53FAFF57A19 /* EXPMatchers+haveCountOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C070594757FF88D238C2FA87 /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */; }; - C1664322571F72BEDD57250C /* JSONModelError.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C249634F44F546BBF6CA700F /* JSONModelArray.m in Sources */ = {isa = PBXBuildFile; fileRef = 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - C2BE2DCF5392F363C60A210B /* XCTestCase+Specta.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CA55A6DD0BDCEBCF8BE2FE9 /* XCTestCase+Specta.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C330AFEF3709DC609D18FE78 /* EXPMatchers+beKindOf.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7C167E46BFFD6509CFE494 /* EXPMatchers+beKindOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C3FA7E81592D8627DA34C669 /* JSONModel.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBF9A35933615D555049BE26 /* JSONModel.framework */; }; - C59AA43C300E2D6018686D5C /* EXPMatchers+beTruthy.m in Sources */ = {isa = PBXBuildFile; fileRef = BE62E232E84FDF3AD5CDFE65 /* EXPMatchers+beTruthy.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - C63074C841FEFC17E3AB5C3C /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D6BA58FCD62CCE952D967CE /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m */; }; - C6A0423CD8DBA07A30B98042 /* SWGPet.h in Headers */ = {isa = PBXBuildFile; fileRef = AAAB9238C7E7CC348DE482B8 /* SWGPet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6D59104CEC4FAE304DA4D55 /* EXPBlockDefinedMatcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 0164E9ECEC859315F7EC9249 /* EXPBlockDefinedMatcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C84ED29D92C2DAF709D42519 /* AFHTTPRequestOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9105E9B2229104E74953563 /* SWGJSONResponseSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */; }; - C9FEB3D995D761E335AD7564 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B46CB026DDB6706DAEDC86A3 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA78D205AB1EFA5BFB5434FD /* JSONKeyMapper.m in Sources */ = {isa = PBXBuildFile; fileRef = 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CADBFFBB5024C1F7431B4161 /* SPTGlobalBeforeAfterEach.h in Headers */ = {isa = PBXBuildFile; fileRef = 36943083BECC0BE8A4A6AD94 /* SPTGlobalBeforeAfterEach.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CB9C5D875643FBC019875C60 /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */; }; - CC1FBF181AEECAD23864A42C /* Pods-SwaggerClient_Tests-Specta-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = BED74BBB7E4563223284FC51 /* Pods-SwaggerClient_Tests-Specta-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CCF74087CAB105D4DED21E9F /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CDB76BF92E8780DFD831170E /* SWGJSONRequestSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */; }; - CE1B2D9D23D09D355C7E07FE /* JSONModelClassProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 91DC534FB82569495452D79F /* JSONModelClassProperty.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CECFB59C6E20B976193137D0 /* NSArray+JSONModel.m in Sources */ = {isa = PBXBuildFile; fileRef = C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - CEF36F80E21F2D0234B5566A /* AFHTTPRequestOperationManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0230521FC1F6FF0AEB25B02 /* SWGObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 93127E06DFE790D76898A78D /* SWGObject.m */; }; - D089D5A08CF97B04969C23E4 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE9F929357775BD67A93711 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D0E021101C4457887F895E49 /* JSONValueTransformer+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */; }; - D1750EAC8D3DBC472DDCBC9D /* EXPMatchers+beSubclassOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A9A720E390B6BA9880D92DC /* EXPMatchers+beSubclassOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D19EF86C3583D1B62A679E36 /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */; }; - D25A60002AC50691F13E03C0 /* JSONModelLib.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2CB47DBB432B6BAA9C44EF6 /* SWGMythingApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */; }; - D2D9A6640DB83E9E9430A97C /* SPTSpec.h in Headers */ = {isa = PBXBuildFile; fileRef = D733A96361018321D71A1E73 /* SPTSpec.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D39D39947572DE9798E3D88B /* SWGMyresult.h in Headers */ = {isa = PBXBuildFile; fileRef = 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D3E33F4136D0AA075C4C820F /* AFNetworking.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */; }; - D46CB83D2BFA0851BC5D2061 /* SWGApiClient.m in Sources */ = {isa = PBXBuildFile; fileRef = A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */; }; - D5C153FA62530DF6C2F0273C /* SWGPet.h in Headers */ = {isa = PBXBuildFile; fileRef = AAAB9238C7E7CC348DE482B8 /* SWGPet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D64936F4E16C7DDC5CA36786 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D71C1CD54E1E0230C16A87F8 /* XCTestCase+Specta.m in Sources */ = {isa = PBXBuildFile; fileRef = 25F1293C6D78FDE07FC3136A /* XCTestCase+Specta.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - D7239B7051E31F27F8BEE765 /* EXPMatchers+beTruthy.h in Headers */ = {isa = PBXBuildFile; fileRef = 52CA44B02B7A9B384AE7EED6 /* EXPMatchers+beTruthy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D85897B024FC6FAD6069F022 /* SPTCallSite.h in Headers */ = {isa = PBXBuildFile; fileRef = E24BE6178D00F87643E8AD96 /* SPTCallSite.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D8D2BF368F6CE862A6B7AA97 /* SPTExample.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB73FE1B697EC492FCEBEFE /* SPTExample.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D973A75729B33D7DBA665F94 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */; }; - D9854E458AA2FBD78985A511 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */; }; - D9DFA62AC86F87A197C5560C /* EXPMatchers+beInTheRangeOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 98BBCF4F94F7882D6CA276C0 /* EXPMatchers+beInTheRangeOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DAA1007C7857D3BE39826F91 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - DB63C05804976AC7CDF74F4D /* SPTSharedExampleGroups.m in Sources */ = {isa = PBXBuildFile; fileRef = 099BDB9A4FE1FF80F9B1BA61 /* SPTSharedExampleGroups.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - DB8F6259B5D23FA526D5B6C7 /* Pods-SwaggerClient_Example-ISO8601-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C064E590FE5779DB6C05E82 /* Pods-SwaggerClient_Example-ISO8601-dummy.m */; }; - DBFB445AB39C5D946A2CC276 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */; }; - DC1A23AD09FFE1D162CF752C /* SWGOrder.h in Headers */ = {isa = PBXBuildFile; fileRef = AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DF8E177952FDF501C1A4A2E4 /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */; }; - DFA8365B324D8F74B8235B48 /* JSONHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E160A83AA4A88114EE2409BE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - E3222F4CDFB84AFDF6739CEF /* SWGJSONRequestSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */; }; - E33D4EA8D951458DF8A05254 /* SWGUserApi.m in Sources */ = {isa = PBXBuildFile; fileRef = F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */; }; - E3C9C7EAD8A7690BE18CF43E /* UIAlertView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4097E7ABE3BFD9AE7B2D446 /* UIWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */; }; - E4FCC6CE42AC64620298B912 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DCD887355DA3622403C587F3 /* Security.framework */; }; - E500C5512FD6F2D51E9AC635 /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 451719F53715B179730D75E0 /* AFSecurityPolicy.m */; }; - E6389419244A7DC4C9C57934 /* SWGTag.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A8892A67E4E1629B3650958 /* SWGTag.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E6E0B4AD1CC2AFC6E80DAA67 /* JSONModel+networking.m in Sources */ = {isa = PBXBuildFile; fileRef = 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - E7933B64815CD27F8F7C3540 /* SWGJSONResponseSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECBEE6653FEB368DF6EA2147 /* SwaggerClient.bundle in Resources */ = {isa = PBXBuildFile; fileRef = F248532F283AF83DB6271DCE /* SwaggerClient.bundle */; }; - ECE599AE763A2C388157D2B1 /* JSONValueTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED132F7E6A664272D3FF3B53 /* EXPMatchers+beInstanceOf.h in Headers */ = {isa = PBXBuildFile; fileRef = 79FF652424AF75986DC0A953 /* EXPMatchers+beInstanceOf.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ED3C42A61083D6D95AA107AB /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE81625A23AF0564339C887C /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */; }; - EEB0BA1DC32939D00C3ED294 /* SPTExample.m in Sources */ = {isa = PBXBuildFile; fileRef = B7116485C5A4C1298D908727 /* SPTExample.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - EEC1D0AFE3CE69C65F59BED8 /* SPTTestSuite.h in Headers */ = {isa = PBXBuildFile; fileRef = 62B20D2725F0504EA461937E /* SPTTestSuite.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EEC3C62F793F896CF5B0B8BF /* SWGStoreApi.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */; }; - EF7C4A59595F11105D6C2A65 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 671A488088E85A1E9E82C2D4 /* Foundation.framework */; }; - F00CD0B1A1A5D41A7C0A8A0E /* ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C151F4D754285116B7A228 /* ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F0E3847056B72A4ACC11650F /* AFURLConnectionOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F16001F37542754EC6BB8DD2 /* EXPMatchers+contain.m in Sources */ = {isa = PBXBuildFile; fileRef = 18A8D06FD0B3DCB85273BFE2 /* EXPMatchers+contain.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F17018B643C6833F68258DE9 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */; }; - F26654D315EA6DCA41834C01 /* EXPMatchers+beGreaterThan.m in Sources */ = {isa = PBXBuildFile; fileRef = 579BC043B4015B34EAEEFF93 /* EXPMatchers+beGreaterThan.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; - F2D019933E1752072C3226C6 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */; }; - F34C32CDBC26097517DD947F /* SWGCategory.h in Headers */ = {isa = PBXBuildFile; fileRef = B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F55122FA09A1A3BBD62E54B3 /* SWGUser.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F55E8B76B45DE49306387219 /* EXPMatchers+beNil.h in Headers */ = {isa = PBXBuildFile; fileRef = F54CBCBF08E4D2FEE8EC979F /* EXPMatchers+beNil.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F67A3EE5DE902A585BDEDC01 /* EXPMatcherHelpers.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA8DB7BB0A1DDD958C68683 /* EXPMatcherHelpers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F9B487686092CAF6F341F0B4 /* ISO8601.h in Headers */ = {isa = PBXBuildFile; fileRef = 08C151F4D754285116B7A228 /* ISO8601.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FA15E8CCF2EE07E232BE3171 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */; }; - FB1C86BB963AE459A2F77925 /* EXPMatchers+respondTo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D261465E6EF11B9AF904C67 /* EXPMatchers+respondTo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDACF057168267FCDAB72DF1 /* SWGUserApi.h in Headers */ = {isa = PBXBuildFile; fileRef = 20402A2505F9199C8CF42E06 /* SWGUserApi.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FDB1AA841E7569F2CAD1A487 /* EXPDoubleTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = D1D250ADE57B52C791B82C52 /* EXPDoubleTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FE0A66CD1EBA3E418F2C1D00 /* NSDate+ISO8601.m in Sources */ = {isa = PBXBuildFile; fileRef = 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */; settings = {COMPILER_FLAGS = "-DOS_OBJECT_USE_OBJC=0"; }; }; - FE2033DD10C73DF0B8267A2C /* SWGPet.m in Sources */ = {isa = PBXBuildFile; fileRef = CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */; }; - FE705743662892EB52ADB7B9 /* SWGTag.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C14451912091A7274AEF9E1 /* SWGTag.m */; }; - FEC1250CB58D27B11D7B6D82 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D6580B23616BF5911DED5F5 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FEE8E2294C46AE7CE464264D /* EXPMatchers+beFalsy.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B3A87165046AB537E76CFA0 /* EXPMatchers+beFalsy.h */; settings = {ATTRIBUTES = (Public, ); }; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 2F83CC8868CCC58549D23B75 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = BBD665C31D4B21357533473D; - remoteInfo = "Pods-SwaggerClient_Tests-JSONModel"; - }; - 35DEFA078ABE7B02680F7475 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 58684BF8E23BF0837CADD868; - remoteInfo = "Pods-SwaggerClient_Example-AFNetworking"; - }; - 3E167B43249502B18F5351AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = C215F478D13D9D22D8E1EF48; - remoteInfo = "Pods-SwaggerClient_Tests-Expecta"; - }; - 65A8E4E62B9816273B466AA8 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = BBD665C31D4B21357533473D; - remoteInfo = "Pods-SwaggerClient_Tests-JSONModel"; - }; - 6CFF13F0D8A307887FE05E67 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = AF87B186D8CCE5424F3A8D43; - remoteInfo = "Pods-SwaggerClient_Tests-ISO8601"; - }; - 888799CCFD2AB4A92A9B4A4D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5D6776B420CF321A265D866F; - remoteInfo = "Pods-SwaggerClient_Tests-Specta"; - }; - 9B368F4D9DF66B5E965986C6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 9A7195F471543DF0C0847DF5; - remoteInfo = "Pods-SwaggerClient_Tests-SwaggerClient"; - }; - A162F62BEE1492CF1BB6A2BE /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = AF87B186D8CCE5424F3A8D43; - remoteInfo = "Pods-SwaggerClient_Tests-ISO8601"; - }; - A9E619AFCC2FBD32EE05B6C2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 7DCA9F990FC46BE1EFE6E984; - remoteInfo = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; - }; - B3F82AC3BCEB16AD74AA3091 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = F41FA180E243133D32149CC3; - remoteInfo = "Pods-SwaggerClient_Example-SwaggerClient"; - }; - BB29CEBC89A3E750582C41F4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = DDC8A358588D2A3B692812B1; - remoteInfo = "Pods-SwaggerClient_Tests-AFNetworking"; - }; - BDC82344596574309B6BB2A3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = DDC8A358588D2A3B692812B1; - remoteInfo = "Pods-SwaggerClient_Tests-AFNetworking"; - }; - C683E7A210CF97EA075DB68C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4B19C784C3E2E4F174682EE7; - remoteInfo = "Pods-SwaggerClient_Example-JSONModel"; - }; - E244661BA566E81A5E0825C1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0302FEB4C8D5554EBF417C18; - remoteInfo = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; - }; - EF00F23BFB412FB1141D43C5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = EC89492AC5A2DC4B6E6BC599; - remoteInfo = "Pods-SwaggerClient_Example-ISO8601"; - }; - F2FE102F982CD5E7539DA87C /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = EC89492AC5A2DC4B6E6BC599; - remoteInfo = "Pods-SwaggerClient_Example-ISO8601"; - }; - F8D1ACE4B4B9D16C36898171 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 58684BF8E23BF0837CADD868; - remoteInfo = "Pods-SwaggerClient_Example-AFNetworking"; - }; - F965A0DD3DF9CB139F6943BB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 2773EB90C58135F3C1FC4A1B /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4B19C784C3E2E4F174682EE7; - remoteInfo = "Pods-SwaggerClient_Example-JSONModel"; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 016434DA280A6337716485B9 /* EXPMatchers+beInstanceOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInstanceOf.m"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.m"; sourceTree = ""; }; - 0164E9ECEC859315F7EC9249 /* EXPBlockDefinedMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPBlockDefinedMatcher.h; path = Expecta/EXPBlockDefinedMatcher.h; sourceTree = ""; }; - 01FC7B913F4D0D8ABA61D37F /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-JSONModel-umbrella.h"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h"; sourceTree = ""; }; - 02BFF49A4C0CD62A7A017609 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-JSONModel-umbrella.h"; sourceTree = ""; }; - 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - 034BC9278FF5FAA0BF7EDE54 /* Pods-SwaggerClient_Tests-Specta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Specta-prefix.pch"; sourceTree = ""; }; - 05E2B2609E8745F0FFA56EAC /* Pods-SwaggerClient_Tests-Expecta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Expecta.xcconfig"; sourceTree = ""; }; - 08C151F4D754285116B7A228 /* ISO8601.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601.h; path = ISO8601/ISO8601.h; sourceTree = ""; }; - 099BDB9A4FE1FF80F9B1BA61 /* SPTSharedExampleGroups.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSharedExampleGroups.m; path = Specta/Specta/SPTSharedExampleGroups.m; sourceTree = ""; }; - 0A9A720E390B6BA9880D92DC /* EXPMatchers+beSubclassOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSubclassOf.h"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.h"; sourceTree = ""; }; - 0AABA64768BF1C67079AC14C /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; }; - 0AFADA1570737157E9617EFA /* EXPMatchers+beCloseTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beCloseTo.m"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.m"; sourceTree = ""; }; - 0B0D24466BA8FF3A32751D38 /* EXPUnsupportedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPUnsupportedObject.m; path = Expecta/EXPUnsupportedObject.m; sourceTree = ""; }; - 0C7C70764F7DC898F9CD47C9 /* Pods-SwaggerClient_Tests-AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-AFNetworking.modulemap"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap"; sourceTree = ""; }; - 0E33B17ABCEF8719288A1534 /* EXPMatchers+raise.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raise.m"; path = "Expecta/Matchers/EXPMatchers+raise.m"; sourceTree = ""; }; - 0F8CC8C24B86136D1949316C /* EXPMatchers+raise.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raise.h"; path = "Expecta/Matchers/EXPMatchers+raise.h"; sourceTree = ""; }; - 10DFD3D78F972F78D71BB6E7 /* Pods-SwaggerClient_Tests-ISO8601-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; sourceTree = ""; }; - 1186977B42F8F3FC21D1A7B9 /* Pods-SwaggerClient_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example.release.xcconfig"; sourceTree = ""; }; - 1284C207920C60CCFF057D06 /* Pods-SwaggerClient_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example.debug.xcconfig"; sourceTree = ""; }; - 145BFF1E93D758B233F0AE9E /* Pods-SwaggerClient_Example-JSONModel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-JSONModel.modulemap"; sourceTree = ""; }; - 1527CA2833B390D6002D3965 /* EXPMatchers+beSubclassOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSubclassOf.m"; path = "Expecta/Matchers/EXPMatchers+beSubclassOf.m"; sourceTree = ""; }; - 16CF586DFE9835700F2EDA9E /* Pods-SwaggerClient_Tests-JSONModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-JSONModel-dummy.m"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m"; sourceTree = ""; }; - 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIAlertView+AFNetworking.h"; path = "UIKit+AFNetworking/UIAlertView+AFNetworking.h"; sourceTree = ""; }; - 18A8D06FD0B3DCB85273BFE2 /* EXPMatchers+contain.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+contain.m"; path = "Expecta/Matchers/EXPMatchers+contain.m"; sourceTree = ""; }; - 194518CC1A4D172FAA272DB9 /* EXPMatchers+beSupersetOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beSupersetOf.m"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.m"; sourceTree = ""; }; - 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig"; sourceTree = ""; }; - 1A3143CF53A3ECFD840FEBF5 /* SpectaTypes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaTypes.h; path = Specta/Specta/SpectaTypes.h; sourceTree = ""; }; - 1C064E590FE5779DB6C05E82 /* Pods-SwaggerClient_Example-ISO8601-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-ISO8601-dummy.m"; sourceTree = ""; }; - 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLConnectionOperation.h; path = AFNetworking/AFURLConnectionOperation.h; sourceTree = ""; }; - 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 1D6580B23616BF5911DED5F5 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-SwaggerClient-umbrella.h"; sourceTree = ""; }; - 1E1126602057323308CBEB1C /* SpectaDSL.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaDSL.h; path = Specta/Specta/SpectaDSL.h; sourceTree = ""; }; - 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGConfiguration.m; sourceTree = ""; }; - 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIAlertView+AFNetworking.m"; path = "UIKit+AFNetworking/UIAlertView+AFNetworking.m"; sourceTree = ""; }; - 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperation.h; path = AFNetworking/AFHTTPRequestOperation.h; sourceTree = ""; }; - 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGUser.h; sourceTree = ""; }; - 1FE46EF9D2B28F3F175C4215 /* Pods-SwaggerClient_Tests-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-umbrella.h"; sourceTree = ""; }; - 20402A2505F9199C8CF42E06 /* SWGUserApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGUserApi.h; sourceTree = ""; }; - 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - 243595BDFC8D37871876A044 /* ExpectaObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaObject.m; path = Expecta/ExpectaObject.m; sourceTree = ""; }; - 253D83DD07A18825650BBBE9 /* Pods-SwaggerClient_Example-AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-AFNetworking-prefix.pch"; sourceTree = ""; }; - 25F1293C6D78FDE07FC3136A /* XCTestCase+Specta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "XCTestCase+Specta.m"; path = "Specta/Specta/XCTestCase+Specta.m"; sourceTree = ""; }; - 26140D01ECBBE302403277E7 /* EXPMatchers+equal.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+equal.m"; path = "Expecta/Matchers/EXPMatchers+equal.m"; sourceTree = ""; }; - 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-ISO8601-Private.xcconfig"; sourceTree = ""; }; - 280E652D458B4E1ED5BFFA77 /* EXPMatchers+beIdenticalTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beIdenticalTo.h"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.h"; sourceTree = ""; }; - 28C0B26C4BD3B468DF0C9526 /* EXPMatchers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatchers.h; path = Expecta/Matchers/EXPMatchers.h; sourceTree = ""; }; - 28CEAD6EAF4AC73948D28F2B /* EXPMatchers+beSupersetOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beSupersetOf.h"; path = "Expecta/Matchers/EXPMatchers+beSupersetOf.h"; sourceTree = ""; }; - 2B34AB4D5CC64918834A0AC0 /* Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; sourceTree = ""; }; - 2B84527440CA189207D786E6 /* JSONModel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONKeyMapper.h; path = JSONModel/JSONModelTransformations/JSONKeyMapper.h; sourceTree = ""; }; - 2C14451912091A7274AEF9E1 /* SWGTag.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGTag.m; sourceTree = ""; }; - 2C4946DD8004B10DBD3BEBE0 /* EXPMatchers+conformTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+conformTo.m"; path = "Expecta/Matchers/EXPMatchers+conformTo.m"; sourceTree = ""; }; - 2D6BA58FCD62CCE952D967CE /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-AFNetworking-dummy.m"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m"; sourceTree = ""; }; - 2EBBCF0DEF5740D6612DEB32 /* SPTSharedExampleGroups.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSharedExampleGroups.h; path = Specta/Specta/SPTSharedExampleGroups.h; sourceTree = ""; }; - 3159DE92BFB696E3EC0DC17B /* SPTSpec.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTSpec.m; path = Specta/Specta/SPTSpec.m; sourceTree = ""; }; - 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig"; sourceTree = ""; }; - 32DE028703A8C4BC2B9C2A2E /* Pods-SwaggerClient_Tests-ISO8601-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-ISO8601-dummy.m"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m"; sourceTree = ""; }; - 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGJSONRequestSerializer.m; sourceTree = ""; }; - 3348A38E5534FDD63284711E /* EXPMatchers+beLessThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.m"; sourceTree = ""; }; - 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGCategory.m; sourceTree = ""; }; - 36943083BECC0BE8A4A6AD94 /* SPTGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTGlobalBeforeAfterEach.h; path = Specta/Specta/SPTGlobalBeforeAfterEach.h; sourceTree = ""; }; - 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 36B743CDFC49D282EF4A78C8 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-ISO8601-umbrella.h"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h"; sourceTree = ""; }; - 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONKeyMapper.m; path = JSONModel/JSONModelTransformations/JSONKeyMapper.m; sourceTree = ""; }; - 381AE18EE5432808A1136286 /* Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Specta.h; path = Specta/Specta/Specta.h; sourceTree = ""; }; - 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGStoreApi.m; sourceTree = ""; }; - 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelLib.h; path = JSONModel/JSONModelLib.h; sourceTree = ""; }; - 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperation.m; path = AFNetworking/AFHTTPRequestOperation.m; sourceTree = ""; }; - 3FA82A66FE087D46B5F479DF /* EXPDoubleTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPDoubleTuple.m; path = Expecta/EXPDoubleTuple.m; sourceTree = ""; }; - 4124065010B426E1D6A20E50 /* Pods-SwaggerClient_Tests-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Tests-frameworks.sh"; sourceTree = ""; }; - 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDate+ISO8601.m"; path = "ISO8601/NSDate+ISO8601.m"; sourceTree = ""; }; - 432957C61F24704F540BB578 /* ExpectaSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaSupport.h; path = Expecta/ExpectaSupport.h; sourceTree = ""; }; - 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - 449238F2067778F11FC67BBC /* SPTExampleGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExampleGroup.h; path = Specta/Specta/SPTExampleGroup.h; sourceTree = ""; }; - 451719F53715B179730D75E0 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - 4648E753C7D4CD63548A0283 /* EXPFloatTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPFloatTuple.h; path = Expecta/EXPFloatTuple.h; sourceTree = ""; }; - 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 47C2E8EC548FF8BFE0B65660 /* EXPMatchers+postNotification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+postNotification.m"; path = "Expecta/Matchers/EXPMatchers+postNotification.m"; sourceTree = ""; }; - 4A51ED87332338CA1F8D657A /* Pods-SwaggerClient_Tests-SwaggerClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-SwaggerClient.xcconfig"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig"; sourceTree = ""; }; - 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig"; sourceTree = ""; }; - 4DA0260CE5A8A4FDA879A100 /* EXPMatchers+beGreaterThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.h"; sourceTree = ""; }; - 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 4E270100DEFDE600FBCC15C8 /* Pods-SwaggerClient_Tests-AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; sourceTree = ""; }; - 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGQueryParamCollection.m; sourceTree = ""; }; - 4EC94106B0E5549033F7BA15 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4F282A1F87E3A1263AB11A47 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4F4671535FDE630BAB38EBFC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4FE8797D427FFD0C0A7BEF85 /* Pods-SwaggerClient_Example-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-environment.h"; sourceTree = ""; }; - 500D44D0509C0C1AF7854372 /* EXPMatchers+beFalsy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beFalsy.m"; path = "Expecta/Matchers/EXPMatchers+beFalsy.m"; sourceTree = ""; }; - 517927BA19A3538D1E30DE50 /* Pods-SwaggerClient_Example-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-dummy.m"; sourceTree = ""; }; - 52CA44B02B7A9B384AE7EED6 /* EXPMatchers+beTruthy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beTruthy.h"; path = "Expecta/Matchers/EXPMatchers+beTruthy.h"; sourceTree = ""; }; - 5617AFD109F104A6504B905A /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 579BC043B4015B34EAEEFF93 /* EXPMatchers+beGreaterThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThan.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.m"; sourceTree = ""; }; - 57CF3ABF26B43FAE21E50CB8 /* NSObject+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Expecta.h"; path = "Expecta/NSObject+Expecta.h"; sourceTree = ""; }; - 57E80A657EA2993398931392 /* Pods-SwaggerClient_Example-ISO8601-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-ISO8601-umbrella.h"; sourceTree = ""; }; - 58400894FEC50AFA461EA435 /* Pods-SwaggerClient_Example-SwaggerClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-SwaggerClient.modulemap"; sourceTree = ""; }; - 5853898EA95C369F30529C9B /* EXPMatchers+beGreaterThanOrEqualTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beGreaterThanOrEqualTo.m"; path = "Expecta/Matchers/EXPMatchers+beGreaterThanOrEqualTo.m"; sourceTree = ""; }; - 596F890BB01AA3448640038C /* Pods-SwaggerClient_Example-AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-AFNetworking.xcconfig"; sourceTree = ""; }; - 598BF1FC07A3867AB98B3140 /* Pods-SwaggerClient_Tests-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwaggerClient_Tests-acknowledgements.plist"; sourceTree = ""; }; - 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - 59FC7EC3572287684B292D50 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 5ACAB4F433D4781F70935C78 /* Pods-SwaggerClient_Tests-JSONModel.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-JSONModel.modulemap"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap"; sourceTree = ""; }; - 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGMyresult.m; sourceTree = ""; }; - 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGMythingApi.m; sourceTree = ""; }; - 5ED368FA80CE15CF073E7E4C /* SPTCallSite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCallSite.m; path = Specta/Specta/SPTCallSite.m; sourceTree = ""; }; - 5F5A1F2EC2AFCCB056F8E5F8 /* Pods-SwaggerClient_Tests-SwaggerClient.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; sourceTree = ""; }; - 60DECAD526F277F125AC6CC8 /* Pods-SwaggerClient_Tests-Specta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Tests-Specta-dummy.m"; sourceTree = ""; }; - 60F89DDC8635677F871D034F /* SWGPetApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGPetApi.h; sourceTree = ""; }; - 61ECE30CFAEE60A56370FFC4 /* Pods-SwaggerClient_Example-AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-AFNetworking.modulemap"; sourceTree = ""; }; - 62B20D2725F0504EA461937E /* SPTTestSuite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTTestSuite.h; path = Specta/Specta/SPTTestSuite.h; sourceTree = ""; }; - 62BC316D842CEB918EAC2F85 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 6366F5C2F45F2C79A805911E /* EXPMatchers+beKindOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beKindOf.m"; path = "Expecta/Matchers/EXPMatchers+beKindOf.m"; sourceTree = ""; }; - 63A4708CCC1EF6AB1122AA0D /* ISO8601.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ISO8601.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModelArray.m; path = JSONModel/JSONModel/JSONModelArray.m; sourceTree = ""; }; - 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIWebView+AFNetworking.h"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.h"; sourceTree = ""; }; - 65B8DED1B65DC5B191ED3657 /* Pods-SwaggerClient_Tests-environment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-environment.h"; sourceTree = ""; }; - 66978135221A5645E30BE2F1 /* Pods-SwaggerClient_Example-ISO8601.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example-ISO8601.modulemap"; sourceTree = ""; }; - 671A488088E85A1E9E82C2D4 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 67A228DF9CD60524B576E388 /* JSONModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModel.h; path = JSONModel/JSONModel/JSONModel.h; sourceTree = ""; }; - 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelArray.h; path = JSONModel/JSONModel/JSONModelArray.h; sourceTree = ""; }; - 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModelError.m; path = JSONModel/JSONModel/JSONModelError.m; sourceTree = ""; }; - 6C668D785979FC25F7808753 /* SPTExampleGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExampleGroup.m; path = Specta/Specta/SPTExampleGroup.m; sourceTree = ""; }; - 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - 6E2BDA79AAC1CC237F8E6194 /* Pods-SwaggerClient_Tests-Expecta-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Expecta-prefix.pch"; sourceTree = ""; }; - 70728AC343FB456859D11ABE /* SWGStoreApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGStoreApi.h; sourceTree = ""; }; - 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - 71301AA0D0508AC69416EEFD /* EXPMatcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcher.h; path = Expecta/EXPMatcher.h; sourceTree = ""; }; - 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGMythingApi.h; sourceTree = ""; }; - 722C967FF2EE63957185640A /* EXPExpect.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPExpect.h; path = Expecta/EXPExpect.h; sourceTree = ""; }; - 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGJSONResponseSerializer.h; sourceTree = ""; }; - 734153C8D7D6EE89E1CBF7A4 /* EXPFloatTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPFloatTuple.m; path = Expecta/EXPFloatTuple.m; sourceTree = ""; }; - 73B6962701256AF21226A51C /* EXPMatchers+raiseWithReason.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+raiseWithReason.m"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.m"; sourceTree = ""; }; - 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDate+ISO8601.h"; path = "ISO8601/NSDate+ISO8601.h"; sourceTree = ""; }; - 76F320CEEEEE2836A8B1AAEC /* EXPMatchers+beCloseTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beCloseTo.h"; path = "Expecta/Matchers/EXPMatchers+beCloseTo.h"; sourceTree = ""; }; - 77F99C66542F4EEBABCA1BD3 /* Specta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Specta.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 78DEE88FE58FD1EB9ED82644 /* SPTCompiledExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCompiledExample.h; path = Specta/Specta/SPTCompiledExample.h; sourceTree = ""; }; - 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ISO8601Serialization.m; path = ISO8601/ISO8601Serialization.m; sourceTree = ""; }; - 79F66BA3CD50A4290602F14B /* SWGObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGObject.h; sourceTree = ""; }; - 79FF652424AF75986DC0A953 /* EXPMatchers+beInstanceOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInstanceOf.h"; path = "Expecta/Matchers/EXPMatchers+beInstanceOf.h"; sourceTree = ""; }; - 7A0294B9DB6D28C931109F04 /* Pods-SwaggerClient_Example-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Example-frameworks.sh"; sourceTree = ""; }; - 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig"; sourceTree = ""; }; - 7BAEA77B327844A9285B8670 /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-AFNetworking-umbrella.h"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h"; sourceTree = ""; }; - 7D09D890FDA06F27AD79B2C6 /* Pods-SwaggerClient_Tests-Expecta-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Tests-Expecta-dummy.m"; sourceTree = ""; }; - 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPRequestOperationManager.m; path = AFNetworking/AFHTTPRequestOperationManager.m; sourceTree = ""; }; - 7E1FD49EEBB1A08378F9ECA4 /* Pods-SwaggerClient_Tests-ISO8601.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; name = "Pods-SwaggerClient_Tests-ISO8601.modulemap"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap"; sourceTree = ""; }; - 7F5E3C9D4DC0F9D156F215D9 /* Pods-SwaggerClient_Example-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Example-resources.sh"; sourceTree = ""; }; - 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "JSONModel+networking.m"; path = "JSONModel/JSONModelNetworking/JSONModel+networking.m"; sourceTree = ""; }; - 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGMyresult.h; sourceTree = ""; }; - 8371F57BE2022A982DD2C14B /* SWGOrder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGOrder.m; sourceTree = ""; }; - 83CAE1AE966882439F8A96EF /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-ISO8601/Info.plist"; sourceTree = ""; }; - 859359D6C9F1E75F8FD12FC7 /* EXPUnsupportedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPUnsupportedObject.h; path = Expecta/EXPUnsupportedObject.h; sourceTree = ""; }; - 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClient.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONHTTPClient.h; path = JSONModel/JSONModelNetworking/JSONHTTPClient.h; sourceTree = ""; }; - 88AAAF1815056252470FC2A6 /* EXPMatchers+equal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+equal.h"; path = "Expecta/Matchers/EXPMatchers+equal.h"; sourceTree = ""; }; - 8A8892A67E4E1629B3650958 /* SWGTag.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGTag.h; sourceTree = ""; }; - 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONValueTransformer.h; path = JSONModel/JSONModelTransformations/JSONValueTransformer.h; sourceTree = ""; }; - 8C9F5723E5940D1269352135 /* EXPMatchers+postNotification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+postNotification.h"; path = "Expecta/Matchers/EXPMatchers+postNotification.h"; sourceTree = ""; }; - 8CA55A6DD0BDCEBCF8BE2FE9 /* XCTestCase+Specta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTestCase+Specta.h"; path = "Specta/Specta/XCTestCase+Specta.h"; sourceTree = ""; }; - 8DB4BB24028928E6E7BE64E9 /* EXPMatchers+endWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+endWith.h"; path = "Expecta/Matchers/EXPMatchers+endWith.h"; sourceTree = ""; }; - 8E7B7B2C24266DB4297E958E /* ExpectaSupport.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = ExpectaSupport.m; path = Expecta/ExpectaSupport.m; sourceTree = ""; }; - 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONValueTransformer.m; path = JSONModel/JSONModelTransformations/JSONValueTransformer.m; sourceTree = ""; }; - 91DC534FB82569495452D79F /* JSONModelClassProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModelClassProperty.m; path = JSONModel/JSONModel/JSONModelClassProperty.m; sourceTree = ""; }; - 92F9946AF7B3E53FAFF57A19 /* EXPMatchers+haveCountOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+haveCountOf.h"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.h"; sourceTree = ""; }; - 93127E06DFE790D76898A78D /* SWGObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGObject.m; sourceTree = ""; }; - 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLConnectionOperation.m; path = AFNetworking/AFURLConnectionOperation.m; sourceTree = ""; }; - 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIWebView+AFNetworking.m"; path = "UIKit+AFNetworking/UIWebView+AFNetworking.m"; sourceTree = ""; }; - 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGPetApi.m; sourceTree = ""; }; - 96B0499DE5856DB93FACE9F3 /* Pods-SwaggerClient_Example-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwaggerClient_Example-acknowledgements.markdown"; sourceTree = ""; }; - 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelClassProperty.h; path = JSONModel/JSONModel/JSONModelClassProperty.h; sourceTree = ""; }; - 9771D508607ABB6410B0BF9F /* Pods-SwaggerClient_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests.debug.xcconfig"; sourceTree = ""; }; - 9825D5812F3C1916DEF34E99 /* Pods-SwaggerClient_Example-SwaggerClient.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-SwaggerClient.xcconfig"; sourceTree = ""; }; - 98BBCF4F94F7882D6CA276C0 /* EXPMatchers+beInTheRangeOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beInTheRangeOf.h"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.h"; sourceTree = ""; }; - 99A4A4B3247D70FBA6024D8F /* Pods-SwaggerClient_Example-JSONModel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-JSONModel.xcconfig"; sourceTree = ""; }; - 9A06A521245DAB5B8F162AB4 /* EXPMatchers+respondTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+respondTo.m"; path = "Expecta/Matchers/EXPMatchers+respondTo.m"; sourceTree = ""; }; - 9A26EF949942E5B501DDD747 /* SpectaUtility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SpectaUtility.h; path = Specta/Specta/SpectaUtility.h; sourceTree = ""; }; - 9B3A87165046AB537E76CFA0 /* EXPMatchers+beFalsy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beFalsy.h"; path = "Expecta/Matchers/EXPMatchers+beFalsy.h"; sourceTree = ""; }; - 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONHTTPClient.m; path = JSONModel/JSONModelNetworking/JSONHTTPClient.m; sourceTree = ""; }; - 9D261465E6EF11B9AF904C67 /* EXPMatchers+respondTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+respondTo.h"; path = "Expecta/Matchers/EXPMatchers+respondTo.h"; sourceTree = ""; }; - 9E2261DFC4C37167696E0BF2 /* SPTTestSuite.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTTestSuite.m; path = Specta/Specta/SPTTestSuite.m; sourceTree = ""; }; - 9F927BCFCED60E5C20DD572D /* SWGUser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGUser.m; sourceTree = ""; }; - A038A42B885D252D1A20C7CB /* SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A1907A8F78BBCB2EF8450B44 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A3345F9CAA9252356B6C083F /* Expecta.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Expecta.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig"; sourceTree = ""; }; - A3D3304828283C9BAC71B216 /* Pods-SwaggerClient_Example-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-umbrella.h"; sourceTree = ""; }; - A3DA13084371612DD395FBFF /* ISO8601Serialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ISO8601Serialization.h; path = ISO8601/ISO8601Serialization.h; sourceTree = ""; }; - A4077B653CCC6F44DDA78122 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-AFNetworking-dummy.m"; sourceTree = ""; }; - A41CD6CC31666FBF14F37933 /* SpectaDSL.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaDSL.m; path = Specta/Specta/SpectaDSL.m; sourceTree = ""; }; - A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGApiClient.m; sourceTree = ""; }; - A5484E73AF459C17B7675EC4 /* AFNetworking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A61413AE7365BA6BD1EC261F /* Pods-SwaggerClient_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests.release.xcconfig"; sourceTree = ""; }; - A79E486BE2BAA943C0E47F51 /* JSONModelError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONModelError.h; path = JSONModel/JSONModel/JSONModelError.h; sourceTree = ""; }; - A7E147F308CD2889593641F8 /* EXPMatchers+conformTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+conformTo.h"; path = "Expecta/Matchers/EXPMatchers+conformTo.h"; sourceTree = ""; }; - A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGQueryParamCollection.h; sourceTree = ""; }; - AA7C167E46BFFD6509CFE494 /* EXPMatchers+beKindOf.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beKindOf.h"; path = "Expecta/Matchers/EXPMatchers+beKindOf.h"; sourceTree = ""; }; - AAA259A98CD2B660A0FDA33A /* NSValue+Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSValue+Expecta.h"; path = "Expecta/NSValue+Expecta.h"; sourceTree = ""; }; - AAAB9238C7E7CC348DE482B8 /* SWGPet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGPet.h; sourceTree = ""; }; - AB17D934B80A74041502DE8A /* EXPMatchers+beNil.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beNil.m"; path = "Expecta/Matchers/EXPMatchers+beNil.m"; sourceTree = ""; }; - AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGOrder.h; sourceTree = ""; }; - ACA0D0CF9107E24C8C01A0D9 /* EXPBlockDefinedMatcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPBlockDefinedMatcher.m; path = Expecta/EXPBlockDefinedMatcher.m; sourceTree = ""; }; - AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig"; sourceTree = ""; }; - ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/MobileCoreServices.framework; sourceTree = DEVELOPER_DIR; }; - AE7532915C90B421F28CFBEA /* Pods-SwaggerClient_Tests-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Tests-dummy.m"; sourceTree = ""; }; - AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/SystemConfiguration.framework; sourceTree = DEVELOPER_DIR; }; - B045B33F539B441E32ECB917 /* Pods-SwaggerClient_Tests-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-SwaggerClient_Tests-acknowledgements.markdown"; sourceTree = ""; }; - B13A1E5CC1C83917B3B55837 /* XCTest+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "XCTest+Private.h"; path = "Specta/Specta/XCTest+Private.h"; sourceTree = ""; }; - B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGCategory.h; sourceTree = ""; }; - B3F068AE92A66AE490BD6DB0 /* EXPMatchers+beLessThan.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beLessThan.m"; path = "Expecta/Matchers/EXPMatchers+beLessThan.m"; sourceTree = ""; }; - B46CB026DDB6706DAEDC86A3 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Expecta-umbrella.h"; sourceTree = ""; }; - B6FCB81E5D8E3706D242931A /* EXPMatchers+beLessThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThan.h"; path = "Expecta/Matchers/EXPMatchers+beLessThan.h"; sourceTree = ""; }; - B7116485C5A4C1298D908727 /* SPTExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTExample.m; path = Specta/Specta/SPTExample.m; sourceTree = ""; }; - B724F8E376ED2BB7D587FC11 /* SPTCompiledExample.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SPTCompiledExample.m; path = Specta/Specta/SPTCompiledExample.m; sourceTree = ""; }; - B7A8D6EF8C60FFFB42E24B88 /* EXPMatchers+beIdenticalTo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beIdenticalTo.m"; path = "Expecta/Matchers/EXPMatchers+beIdenticalTo.m"; sourceTree = ""; }; - B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "JSONModel+networking.h"; path = "JSONModel/JSONModelNetworking/JSONModel+networking.h"; sourceTree = ""; }; - B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - B96C8F13F1DC53A3C3C3D159 /* EXPMatcherHelpers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPMatcherHelpers.m; path = Expecta/Matchers/EXPMatcherHelpers.m; sourceTree = ""; }; - BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JSONValueTransformer+ISO8601.h"; sourceTree = ""; }; - BD363A11A16DE391FD666E56 /* EXPMatchers+endWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+endWith.m"; path = "Expecta/Matchers/EXPMatchers+endWith.m"; sourceTree = ""; }; - BD49D2B002813654F20C0CDB /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h"; sourceTree = ""; }; - BE4CCABD7BD7EF95BEC3C2A4 /* EXPDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDefines.h; path = Expecta/EXPDefines.h; sourceTree = ""; }; - BE62E232E84FDF3AD5CDFE65 /* EXPMatchers+beTruthy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beTruthy.m"; path = "Expecta/Matchers/EXPMatchers+beTruthy.m"; sourceTree = ""; }; - BED74BBB7E4563223284FC51 /* Pods-SwaggerClient_Tests-Specta-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Tests-Specta-umbrella.h"; sourceTree = ""; }; - BEE9F929357775BD67A93711 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - C0C70D134185F0A5D884F2D5 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - C22D6D663F367C5CCB922CD4 /* Pods-SwaggerClient_Example-JSONModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-JSONModel-prefix.pch"; sourceTree = ""; }; - C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+JSONModel.m"; path = "JSONModel/JSONModelCategories/NSArray+JSONModel.m"; sourceTree = ""; }; - C6CBAE36F463CD9F45A3BB9D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-AFNetworking/Info.plist"; sourceTree = ""; }; - C74AA1F13C4E128B77A1B84A /* Pods-SwaggerClient_Tests-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-SwaggerClient_Tests-resources.sh"; sourceTree = ""; }; - C8F4D12FB56992D696A23287 /* AFNetworking.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - CA86DC1E6895A71A26C35162 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Info.plist"; sourceTree = ""; }; - CB2A97414B35780C4D650A65 /* NSValue+Expecta.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSValue+Expecta.m"; path = "Expecta/NSValue+Expecta.m"; sourceTree = ""; }; - CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGPet.m; sourceTree = ""; }; - CB976EFCEBA507C7297EFFAF /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Pods-SwaggerClient_Tests-SwaggerClient-dummy.m"; path = "../Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m"; sourceTree = ""; }; - CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGJSONResponseSerializer.m; sourceTree = ""; }; - CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGFile.m; sourceTree = ""; }; - CC4A7C46C28B8D47187C1C49 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D15CDBD1F8D1EE6AB0D63F21 /* EXPMatchers+beGreaterThan.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beGreaterThan.h"; path = "Expecta/Matchers/EXPMatchers+beGreaterThan.h"; sourceTree = ""; }; - D1D250ADE57B52C791B82C52 /* EXPDoubleTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPDoubleTuple.h; path = Expecta/EXPDoubleTuple.h; sourceTree = ""; }; - D1EADD18818E3526F2CEAF2F /* EXPMatchers+raiseWithReason.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+raiseWithReason.h"; path = "Expecta/Matchers/EXPMatchers+raiseWithReason.h"; sourceTree = ""; }; - D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ISO8601.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D3FAA1B180CA821CADF13336 /* Pods-SwaggerClient_Tests-Specta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Tests-Specta.modulemap"; sourceTree = ""; }; - D467864632DE57A4A06D82B3 /* Pods-SwaggerClient_Example-ISO8601-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-ISO8601-prefix.pch"; sourceTree = ""; }; - D549F681F30BA76D288122C0 /* Pods-SwaggerClient_Tests-ISO8601.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-ISO8601.xcconfig"; path = "../Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig"; sourceTree = ""; }; - D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-JSONModel-Private.xcconfig"; sourceTree = ""; }; - D56A3A676645CFB5F0B4CA22 /* Pods-SwaggerClient_Example-ISO8601.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Example-ISO8601.xcconfig"; sourceTree = ""; }; - D6BE8527F16F514E61677DA4 /* SpectaUtility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SpectaUtility.m; path = Specta/Specta/SpectaUtility.m; sourceTree = ""; }; - D733A96361018321D71A1E73 /* SPTSpec.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTSpec.h; path = Specta/Specta/SPTSpec.h; sourceTree = ""; }; - D7D3138EAAE50116ADEF292E /* SPTExcludeGlobalBeforeAfterEach.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExcludeGlobalBeforeAfterEach.h; path = Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h; sourceTree = ""; }; - D805562F6E114EDE2BFB0CE2 /* Pods-SwaggerClient_Tests-Specta.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Specta.xcconfig"; sourceTree = ""; }; - D906469EA22490516C576F34 /* JSONAPI.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONAPI.m; path = JSONModel/JSONModelNetworking/JSONAPI.m; sourceTree = ""; }; - D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - D9ED0A476E3DBC9422CCF739 /* Pods-SwaggerClient_Example.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Example.modulemap"; sourceTree = ""; }; - DABBA96CC74EAE33EEE3E7FF /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-SwaggerClient-dummy.m"; sourceTree = ""; }; - DC4F0DB2C1E5DEACB3919576 /* Pods-SwaggerClient_Example-JSONModel-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-SwaggerClient_Example-JSONModel-dummy.m"; sourceTree = ""; }; - DCB73FE1B697EC492FCEBEFE /* SPTExample.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTExample.h; path = Specta/Specta/SPTExample.h; sourceTree = ""; }; - DCD887355DA3622403C587F3 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/Security.framework; sourceTree = DEVELOPER_DIR; }; - DD1BFACA7FDF797B7D807147 /* Pods_SwaggerClient_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DEEABA644193BDD43BE2B01A /* Pods-SwaggerClient_Tests.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Tests.modulemap"; sourceTree = ""; }; - DF0444D8EBDF25B4DEFD64FC /* EXPMatchers+beInTheRangeOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beInTheRangeOf.m"; path = "Expecta/Matchers/EXPMatchers+beInTheRangeOf.m"; sourceTree = ""; }; - DFA9B08443D964E2FB073F56 /* EXPMatchers+match.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+match.m"; path = "Expecta/Matchers/EXPMatchers+match.m"; sourceTree = ""; }; - DFB8A849BA1FECF15636A354 /* JSONAPI.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JSONAPI.h; path = JSONModel/JSONModelNetworking/JSONAPI.h; sourceTree = ""; }; - E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - E24BE6178D00F87643E8AD96 /* SPTCallSite.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SPTCallSite.h; path = Specta/Specta/SPTCallSite.h; sourceTree = ""; }; - E29416FF6B777006D0421AF4 /* Pods-SwaggerClient_Tests-JSONModel.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-JSONModel.xcconfig"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig"; sourceTree = ""; }; - E2E6D41C47D3DA237C488316 /* EXPExpect.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = EXPExpect.m; path = Expecta/EXPExpect.m; sourceTree = ""; }; - E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS8.3.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - E3CD0D311E5DE9D9C3E348FD /* Pods-SwaggerClient_Tests-Expecta.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-SwaggerClient_Tests-Expecta.modulemap"; sourceTree = ""; }; - E411487CD9041CB730BB08A7 /* Expecta.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Expecta.h; path = Expecta/Expecta.h; sourceTree = ""; }; - E4A1DE5345BA9BBB37D745D1 /* EXPMatchers+beginWith.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+beginWith.m"; path = "Expecta/Matchers/EXPMatchers+beginWith.m"; sourceTree = ""; }; - E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGJSONRequestSerializer.h; sourceTree = ""; }; - E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGApiClient.h; sourceTree = ""; }; - E76BF395D393BEDAF0184B7D /* ISO8601.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ISO8601.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E8C64E84ED537CE26A1C4095 /* Pods-SwaggerClient_Example-SwaggerClient-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-SwaggerClient-prefix.pch"; sourceTree = ""; }; - E90E3F2428A92C2B30B905D1 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-SwaggerClient_Example-AFNetworking-umbrella.h"; sourceTree = ""; }; - EB31DF2DC5E05E3C6E2B293D /* Pods-SwaggerClient_Tests-AFNetworking.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests-AFNetworking.xcconfig"; path = "../Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig"; sourceTree = ""; }; - EBA8DB7BB0A1DDD958C68683 /* EXPMatcherHelpers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = EXPMatcherHelpers.h; path = Expecta/Matchers/EXPMatcherHelpers.h; sourceTree = ""; }; - EC4578A72A4B005F7E2196EA /* EXPMatchers+match.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+match.h"; path = "Expecta/Matchers/EXPMatchers+match.h"; sourceTree = ""; }; - ECD35253AA3403B8C0D8BC91 /* Pods_SwaggerClient_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - ED9CD3349C1E0B89048D7931 /* ExpectaObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = ExpectaObject.h; path = Expecta/ExpectaObject.h; sourceTree = ""; }; - EE176C429702B2F0310644D4 /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Expecta-Private.xcconfig"; sourceTree = ""; }; - EEBE9B8A684DF642FE20657F /* SWGFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGFile.h; sourceTree = ""; }; - EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - EFC6B68E929AF9D5BEFD0302 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = Info.plist; path = "../Pods-SwaggerClient_Tests-JSONModel/Info.plist"; sourceTree = ""; }; - F0761D1A1069513A78630ABA /* EXPMatchers+haveCountOf.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "EXPMatchers+haveCountOf.m"; path = "Expecta/Matchers/EXPMatchers+haveCountOf.m"; sourceTree = ""; }; - F0A24157B4BA2D2E1B9CEC18 /* EXPMatchers+beginWith.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beginWith.h"; path = "Expecta/Matchers/EXPMatchers+beginWith.h"; sourceTree = ""; }; - F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = SWGUserApi.m; sourceTree = ""; }; - F248532F283AF83DB6271DCE /* SwaggerClient.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwaggerClient.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JSONValueTransformer+ISO8601.m"; sourceTree = ""; }; - F2C9039E5EA681AB43C4BBEF /* JSONModel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - F39E23BF273317107095F738 /* Pods-SwaggerClient_Example-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-SwaggerClient_Example-acknowledgements.plist"; sourceTree = ""; }; - F54CBCBF08E4D2FEE8EC979F /* EXPMatchers+beNil.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beNil.h"; path = "Expecta/Matchers/EXPMatchers+beNil.h"; sourceTree = ""; }; - F7E78B22E6B39AF231BCCA2D /* EXPMatchers+contain.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+contain.h"; path = "Expecta/Matchers/EXPMatchers+contain.h"; sourceTree = ""; }; - F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+JSONModel.h"; path = "JSONModel/JSONModelCategories/NSArray+JSONModel.h"; sourceTree = ""; }; - FAF50F76847FEFE63382A19D /* SWGConfiguration.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = SWGConfiguration.h; sourceTree = ""; }; - FB09DF7ECF2A36274905F66A /* SwaggerClient.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwaggerClient.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FBF9A35933615D555049BE26 /* JSONModel.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = JSONModel.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPRequestOperationManager.h; path = AFNetworking/AFHTTPRequestOperationManager.h; sourceTree = ""; }; - FDE30FAA7D4B65680CAF7FCC /* Pods-SwaggerClient_Tests-JSONModel-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; path = "../Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; sourceTree = ""; }; - FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-SwaggerClient_Tests-Specta-Private.xcconfig"; sourceTree = ""; }; - FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JSONModel.m; path = JSONModel/JSONModel/JSONModel.m; sourceTree = ""; }; - FF99417D61F3A97DC44475AF /* EXPMatchers+beLessThanOrEqualTo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "EXPMatchers+beLessThanOrEqualTo.h"; path = "Expecta/Matchers/EXPMatchers+beLessThanOrEqualTo.h"; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 22103A8AB4D5FCBA853D48FE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1398D1EFD62E17C5E8B2D5E4 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4356669AECF52D690D7A0708 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B89BC26D73FFE70F2F4BD7F9 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 499759AF0A623FE7F6AF7041 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4A427963DE553632587A5ADF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D19EF86C3583D1B62A679E36 /* AFNetworking.framework in Frameworks */, - 0769C01E1EDA98F189CA18F7 /* Foundation.framework in Frameworks */, - 153CA93C3D5647FED90150DD /* ISO8601.framework in Frameworks */, - C3FA7E81592D8627DA34C669 /* JSONModel.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 673A0374A2A20CD429AB0773 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 97495C06470E679B7CF0A8CA /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 750E29F817ADCE3AB9B643BA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 45BE91BE73E2BB75611507CA /* CoreGraphics.framework in Frameworks */, - 4CE48BA8AC5C9F3EF8626447 /* Foundation.framework in Frameworks */, - 386EB7F3BE797D89A650C1C5 /* MobileCoreServices.framework in Frameworks */, - E4FCC6CE42AC64620298B912 /* Security.framework in Frameworks */, - DBFB445AB39C5D946A2CC276 /* SystemConfiguration.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8269400275399508F5AC9F90 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - EF7C4A59595F11105D6C2A65 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - A06FF8C70F93B2C2A8E2C69A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - A206B6446D5E2CABE5586523 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B5794BCD92EB55B5659DC58C /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 7422BD5EBC0E6395F1069F71 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C9772FEF5F5BFC03430176FC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 591D3B049A7E8627A5AA65B1 /* CoreGraphics.framework in Frameworks */, - DAA1007C7857D3BE39826F91 /* Foundation.framework in Frameworks */, - 2599FEFF7BBE8634BD34A792 /* MobileCoreServices.framework in Frameworks */, - 4C1848887F607EB5D0D594FB /* Security.framework in Frameworks */, - 730C8CD80F56DC3EBE6F3080 /* SystemConfiguration.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D0FE5D2BE433B354C40D398F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D3E33F4136D0AA075C4C820F /* AFNetworking.framework in Frameworks */, - 1C19F010F92332D333674C99 /* Foundation.framework in Frameworks */, - 430B13D7C84147B12F239C1C /* ISO8601.framework in Frameworks */, - 7BEDB566042514B74A383C14 /* JSONModel.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D1964A51153C3AD7CB69D97B /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - E160A83AA4A88114EE2409BE /* Foundation.framework in Frameworks */, - 5771BA042DF953FA88D9C2FF /* XCTest.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D85DD4B01002C97CAEAD5ECD /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FC7F930F7556CE714F53300E /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 8E4CC5A8039EE6FE63613C2F /* Foundation.framework in Frameworks */, - 5DA26B0C4EB1C7DEB0B44AAF /* XCTest.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 14140A2FCC717D1807A7F7C5 /* Support Files */ = { - isa = PBXGroup; - children = ( - 5617AFD109F104A6504B905A /* Info.plist */, - E3CD0D311E5DE9D9C3E348FD /* Pods-SwaggerClient_Tests-Expecta.modulemap */, - 05E2B2609E8745F0FFA56EAC /* Pods-SwaggerClient_Tests-Expecta.xcconfig */, - EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */, - 7D09D890FDA06F27AD79B2C6 /* Pods-SwaggerClient_Tests-Expecta-dummy.m */, - 6E2BDA79AAC1CC237F8E6194 /* Pods-SwaggerClient_Tests-Expecta-prefix.pch */, - B46CB026DDB6706DAEDC86A3 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Pods-SwaggerClient_Tests-Expecta"; - sourceTree = ""; - }; - 1919E245EDC5D1667FA4AA3A /* Products */ = { - isa = PBXGroup; - children = ( - A5484E73AF459C17B7675EC4 /* AFNetworking.framework */, - C8F4D12FB56992D696A23287 /* AFNetworking.framework */, - A3345F9CAA9252356B6C083F /* Expecta.framework */, - 63A4708CCC1EF6AB1122AA0D /* ISO8601.framework */, - E76BF395D393BEDAF0184B7D /* ISO8601.framework */, - F2C9039E5EA681AB43C4BBEF /* JSONModel.framework */, - 2B84527440CA189207D786E6 /* JSONModel.framework */, - ECD35253AA3403B8C0D8BC91 /* Pods_SwaggerClient_Example.framework */, - DD1BFACA7FDF797B7D807147 /* Pods_SwaggerClient_Tests.framework */, - 77F99C66542F4EEBABCA1BD3 /* Specta.framework */, - F248532F283AF83DB6271DCE /* SwaggerClient.bundle */, - 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */, - A038A42B885D252D1A20C7CB /* SwaggerClient.framework */, - FB09DF7ECF2A36274905F66A /* SwaggerClient.framework */, - ); - name = Products; - sourceTree = ""; - }; - 268C001763B7BFCB78674988 /* Development Pods */ = { - isa = PBXGroup; - children = ( - 4F9034C1AD9F301BF2961504 /* SwaggerClient */, - ); - name = "Development Pods"; - sourceTree = ""; - }; - 287A389EC1CB278D24C36DFA /* Serialization */ = { - isa = PBXGroup; - children = ( - 20527E0700B1756AD0DB7B16 /* AFURLRequestSerialization.h */, - 43AA7EFAA794D57DE9CD481E /* AFURLRequestSerialization.m */, - B931AE6695BDCE3352468AED /* AFURLResponseSerialization.h */, - 9BA881BAA0B2D3D3A54F5C84 /* AFURLResponseSerialization.m */, - ); - name = Serialization; - sourceTree = ""; - }; - 33F545DC4CC555AE4F30E353 /* NSURLConnection */ = { - isa = PBXGroup; - children = ( - 1EE2D61D0FCBC33CFE8D24E9 /* AFHTTPRequestOperation.h */, - 3EBE9CEA32E33C741FA62D9D /* AFHTTPRequestOperation.m */, - FCDFE076FC0577667D18E47C /* AFHTTPRequestOperationManager.h */, - 7D297B7DCEEC26B8CF1525F9 /* AFHTTPRequestOperationManager.m */, - 1C814F4EF3A744431BCD3807 /* AFURLConnectionOperation.h */, - 932F77F2D9785F0A401CAA9B /* AFURLConnectionOperation.m */, - ); - name = NSURLConnection; - sourceTree = ""; - }; - 3532914D193EF177F482B953 /* Support Files */ = { - isa = PBXGroup; - children = ( - 59FC7EC3572287684B292D50 /* Info.plist */, - CA86DC1E6895A71A26C35162 /* Info.plist */, - 58400894FEC50AFA461EA435 /* Pods-SwaggerClient_Example-SwaggerClient.modulemap */, - 9825D5812F3C1916DEF34E99 /* Pods-SwaggerClient_Example-SwaggerClient.xcconfig */, - 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */, - DABBA96CC74EAE33EEE3E7FF /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m */, - E8C64E84ED537CE26A1C4095 /* Pods-SwaggerClient_Example-SwaggerClient-prefix.pch */, - 1D6580B23616BF5911DED5F5 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h */, - 5F5A1F2EC2AFCCB056F8E5F8 /* Pods-SwaggerClient_Tests-SwaggerClient.modulemap */, - 4A51ED87332338CA1F8D657A /* Pods-SwaggerClient_Tests-SwaggerClient.xcconfig */, - 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */, - CB976EFCEBA507C7297EFFAF /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m */, - 2B34AB4D5CC64918834A0AC0 /* Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch */, - BD49D2B002813654F20C0CDB /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h */, - ); - name = "Support Files"; - path = "SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient"; - sourceTree = ""; - }; - 3EF1F48832B88DEA7380C789 /* ISO8601 */ = { - isa = PBXGroup; - children = ( - 08C151F4D754285116B7A228 /* ISO8601.h */, - A3DA13084371612DD395FBFF /* ISO8601Serialization.h */, - 79CD799EA7C3F65509123C0E /* ISO8601Serialization.m */, - 7696D6A816053B3FA0C31C17 /* NSDate+ISO8601.h */, - 427CEF67DFD8AFD42A5E8B10 /* NSDate+ISO8601.m */, - BD7D77F2AC0E7E1511D454C8 /* Support Files */, - ); - path = ISO8601; - sourceTree = ""; - }; - 4F9034C1AD9F301BF2961504 /* SwaggerClient */ = { - isa = PBXGroup; - children = ( - 3532914D193EF177F482B953 /* Support Files */, - B55257A75677A5B455E28C0E /* SwaggerClient */, - ); - name = SwaggerClient; - path = ../..; - sourceTree = ""; - }; - 58B541E3318B7CA53A88A30E /* UIKit */ = { - isa = PBXGroup; - children = ( - 5D9FA3CD16F8BFD65BB2E28F /* AFNetworkActivityIndicatorManager.h */, - 9B8C04B0FE02D3F1E8759EBB /* AFNetworkActivityIndicatorManager.m */, - ADB3BBE96E032B65F3501046 /* UIActivityIndicatorView+AFNetworking.h */, - D3B9FF89412078F9C47D089B /* UIActivityIndicatorView+AFNetworking.m */, - 17B44C925280520EEE336E3D /* UIAlertView+AFNetworking.h */, - 1E735B9956F587EB8E4B85CF /* UIAlertView+AFNetworking.m */, - 031E5A051C1B351EAECABE44 /* UIButton+AFNetworking.h */, - D9D7CF7D518DD91902CFC101 /* UIButton+AFNetworking.m */, - 39E0EC01ADE9AA23B943AE97 /* UIImageView+AFNetworking.h */, - D98544579F42370E657FA1A8 /* UIImageView+AFNetworking.m */, - 465A5132BD0966DB9C04040F /* UIKit+AFNetworking.h */, - 6CA609412EF66A9F84B11101 /* UIProgressView+AFNetworking.h */, - 90B1D038211337C21F9F8115 /* UIProgressView+AFNetworking.m */, - EFA5792B89F3EC016C790014 /* UIRefreshControl+AFNetworking.h */, - 707946C9EEE0DF0640C426E2 /* UIRefreshControl+AFNetworking.m */, - 63B8703F981C6122B7B45873 /* UIWebView+AFNetworking.h */, - 93FA4B97821DA8CDAE3310A5 /* UIWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - 63E0886E243C932B9756FBD5 /* Frameworks */ = { - isa = PBXGroup; - children = ( - AC5A2E5A690111ACE39457A7 /* AFNetworking.framework */, - D3CAD6C2C0A7E70C06CB6D35 /* ISO8601.framework */, - FBF9A35933615D555049BE26 /* JSONModel.framework */, - A15D48AEC789CE1196E54C8F /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 731D3D653792B9E33F0CEAEF /* NSURLSession */ = { - isa = PBXGroup; - children = ( - 1CC3292F6BE0120D0599D089 /* AFHTTPSessionManager.h */, - 4DBC262A0DD3D8A392255054 /* AFHTTPSessionManager.m */, - BEE9F929357775BD67A93711 /* AFURLSessionManager.h */, - 59E36693E29CCFE31E4EAC89 /* AFURLSessionManager.m */, - ); - name = NSURLSession; - sourceTree = ""; - }; - 86940BB4E50AC8BEB41F258B /* Specta */ = { - isa = PBXGroup; - children = ( - E24BE6178D00F87643E8AD96 /* SPTCallSite.h */, - 5ED368FA80CE15CF073E7E4C /* SPTCallSite.m */, - 78DEE88FE58FD1EB9ED82644 /* SPTCompiledExample.h */, - B724F8E376ED2BB7D587FC11 /* SPTCompiledExample.m */, - DCB73FE1B697EC492FCEBEFE /* SPTExample.h */, - B7116485C5A4C1298D908727 /* SPTExample.m */, - 449238F2067778F11FC67BBC /* SPTExampleGroup.h */, - 6C668D785979FC25F7808753 /* SPTExampleGroup.m */, - D7D3138EAAE50116ADEF292E /* SPTExcludeGlobalBeforeAfterEach.h */, - 36943083BECC0BE8A4A6AD94 /* SPTGlobalBeforeAfterEach.h */, - 2EBBCF0DEF5740D6612DEB32 /* SPTSharedExampleGroups.h */, - 099BDB9A4FE1FF80F9B1BA61 /* SPTSharedExampleGroups.m */, - D733A96361018321D71A1E73 /* SPTSpec.h */, - 3159DE92BFB696E3EC0DC17B /* SPTSpec.m */, - 62B20D2725F0504EA461937E /* SPTTestSuite.h */, - 9E2261DFC4C37167696E0BF2 /* SPTTestSuite.m */, - 381AE18EE5432808A1136286 /* Specta.h */, - 1E1126602057323308CBEB1C /* SpectaDSL.h */, - A41CD6CC31666FBF14F37933 /* SpectaDSL.m */, - 1A3143CF53A3ECFD840FEBF5 /* SpectaTypes.h */, - 9A26EF949942E5B501DDD747 /* SpectaUtility.h */, - D6BE8527F16F514E61677DA4 /* SpectaUtility.m */, - B13A1E5CC1C83917B3B55837 /* XCTest+Private.h */, - 8CA55A6DD0BDCEBCF8BE2FE9 /* XCTestCase+Specta.h */, - 25F1293C6D78FDE07FC3136A /* XCTestCase+Specta.m */, - E4F7D4BF68FBAF97DA094102 /* Support Files */, - ); - path = Specta; - sourceTree = ""; - }; - 95C8D702F42F6124FD6031B8 /* Expecta */ = { - isa = PBXGroup; - children = ( - 0164E9ECEC859315F7EC9249 /* EXPBlockDefinedMatcher.h */, - ACA0D0CF9107E24C8C01A0D9 /* EXPBlockDefinedMatcher.m */, - BE4CCABD7BD7EF95BEC3C2A4 /* EXPDefines.h */, - D1D250ADE57B52C791B82C52 /* EXPDoubleTuple.h */, - 3FA82A66FE087D46B5F479DF /* EXPDoubleTuple.m */, - 722C967FF2EE63957185640A /* EXPExpect.h */, - E2E6D41C47D3DA237C488316 /* EXPExpect.m */, - 4648E753C7D4CD63548A0283 /* EXPFloatTuple.h */, - 734153C8D7D6EE89E1CBF7A4 /* EXPFloatTuple.m */, - 71301AA0D0508AC69416EEFD /* EXPMatcher.h */, - EBA8DB7BB0A1DDD958C68683 /* EXPMatcherHelpers.h */, - B96C8F13F1DC53A3C3C3D159 /* EXPMatcherHelpers.m */, - 28C0B26C4BD3B468DF0C9526 /* EXPMatchers.h */, - 76F320CEEEEE2836A8B1AAEC /* EXPMatchers+beCloseTo.h */, - 0AFADA1570737157E9617EFA /* EXPMatchers+beCloseTo.m */, - 9B3A87165046AB537E76CFA0 /* EXPMatchers+beFalsy.h */, - 500D44D0509C0C1AF7854372 /* EXPMatchers+beFalsy.m */, - D15CDBD1F8D1EE6AB0D63F21 /* EXPMatchers+beGreaterThan.h */, - 579BC043B4015B34EAEEFF93 /* EXPMatchers+beGreaterThan.m */, - 4DA0260CE5A8A4FDA879A100 /* EXPMatchers+beGreaterThanOrEqualTo.h */, - 5853898EA95C369F30529C9B /* EXPMatchers+beGreaterThanOrEqualTo.m */, - 280E652D458B4E1ED5BFFA77 /* EXPMatchers+beIdenticalTo.h */, - B7A8D6EF8C60FFFB42E24B88 /* EXPMatchers+beIdenticalTo.m */, - 98BBCF4F94F7882D6CA276C0 /* EXPMatchers+beInTheRangeOf.h */, - DF0444D8EBDF25B4DEFD64FC /* EXPMatchers+beInTheRangeOf.m */, - 79FF652424AF75986DC0A953 /* EXPMatchers+beInstanceOf.h */, - 016434DA280A6337716485B9 /* EXPMatchers+beInstanceOf.m */, - AA7C167E46BFFD6509CFE494 /* EXPMatchers+beKindOf.h */, - 6366F5C2F45F2C79A805911E /* EXPMatchers+beKindOf.m */, - B6FCB81E5D8E3706D242931A /* EXPMatchers+beLessThan.h */, - B3F068AE92A66AE490BD6DB0 /* EXPMatchers+beLessThan.m */, - FF99417D61F3A97DC44475AF /* EXPMatchers+beLessThanOrEqualTo.h */, - 3348A38E5534FDD63284711E /* EXPMatchers+beLessThanOrEqualTo.m */, - F54CBCBF08E4D2FEE8EC979F /* EXPMatchers+beNil.h */, - AB17D934B80A74041502DE8A /* EXPMatchers+beNil.m */, - 0A9A720E390B6BA9880D92DC /* EXPMatchers+beSubclassOf.h */, - 1527CA2833B390D6002D3965 /* EXPMatchers+beSubclassOf.m */, - 28CEAD6EAF4AC73948D28F2B /* EXPMatchers+beSupersetOf.h */, - 194518CC1A4D172FAA272DB9 /* EXPMatchers+beSupersetOf.m */, - 52CA44B02B7A9B384AE7EED6 /* EXPMatchers+beTruthy.h */, - BE62E232E84FDF3AD5CDFE65 /* EXPMatchers+beTruthy.m */, - F0A24157B4BA2D2E1B9CEC18 /* EXPMatchers+beginWith.h */, - E4A1DE5345BA9BBB37D745D1 /* EXPMatchers+beginWith.m */, - A7E147F308CD2889593641F8 /* EXPMatchers+conformTo.h */, - 2C4946DD8004B10DBD3BEBE0 /* EXPMatchers+conformTo.m */, - F7E78B22E6B39AF231BCCA2D /* EXPMatchers+contain.h */, - 18A8D06FD0B3DCB85273BFE2 /* EXPMatchers+contain.m */, - 8DB4BB24028928E6E7BE64E9 /* EXPMatchers+endWith.h */, - BD363A11A16DE391FD666E56 /* EXPMatchers+endWith.m */, - 88AAAF1815056252470FC2A6 /* EXPMatchers+equal.h */, - 26140D01ECBBE302403277E7 /* EXPMatchers+equal.m */, - 92F9946AF7B3E53FAFF57A19 /* EXPMatchers+haveCountOf.h */, - F0761D1A1069513A78630ABA /* EXPMatchers+haveCountOf.m */, - EC4578A72A4B005F7E2196EA /* EXPMatchers+match.h */, - DFA9B08443D964E2FB073F56 /* EXPMatchers+match.m */, - 8C9F5723E5940D1269352135 /* EXPMatchers+postNotification.h */, - 47C2E8EC548FF8BFE0B65660 /* EXPMatchers+postNotification.m */, - 0F8CC8C24B86136D1949316C /* EXPMatchers+raise.h */, - 0E33B17ABCEF8719288A1534 /* EXPMatchers+raise.m */, - D1EADD18818E3526F2CEAF2F /* EXPMatchers+raiseWithReason.h */, - 73B6962701256AF21226A51C /* EXPMatchers+raiseWithReason.m */, - 9D261465E6EF11B9AF904C67 /* EXPMatchers+respondTo.h */, - 9A06A521245DAB5B8F162AB4 /* EXPMatchers+respondTo.m */, - 859359D6C9F1E75F8FD12FC7 /* EXPUnsupportedObject.h */, - 0B0D24466BA8FF3A32751D38 /* EXPUnsupportedObject.m */, - E411487CD9041CB730BB08A7 /* Expecta.h */, - ED9CD3349C1E0B89048D7931 /* ExpectaObject.h */, - 243595BDFC8D37871876A044 /* ExpectaObject.m */, - 432957C61F24704F540BB578 /* ExpectaSupport.h */, - 8E7B7B2C24266DB4297E958E /* ExpectaSupport.m */, - 57CF3ABF26B43FAE21E50CB8 /* NSObject+Expecta.h */, - AAA259A98CD2B660A0FDA33A /* NSValue+Expecta.h */, - CB2A97414B35780C4D650A65 /* NSValue+Expecta.m */, - 14140A2FCC717D1807A7F7C5 /* Support Files */, - ); - path = Expecta; - sourceTree = ""; - }; - A03705BE3759CEB52D808DB5 /* Pods-SwaggerClient_Tests */ = { - isa = PBXGroup; - children = ( - 4F282A1F87E3A1263AB11A47 /* Info.plist */, - DEEABA644193BDD43BE2B01A /* Pods-SwaggerClient_Tests.modulemap */, - B045B33F539B441E32ECB917 /* Pods-SwaggerClient_Tests-acknowledgements.markdown */, - 598BF1FC07A3867AB98B3140 /* Pods-SwaggerClient_Tests-acknowledgements.plist */, - AE7532915C90B421F28CFBEA /* Pods-SwaggerClient_Tests-dummy.m */, - 65B8DED1B65DC5B191ED3657 /* Pods-SwaggerClient_Tests-environment.h */, - 4124065010B426E1D6A20E50 /* Pods-SwaggerClient_Tests-frameworks.sh */, - C74AA1F13C4E128B77A1B84A /* Pods-SwaggerClient_Tests-resources.sh */, - 1FE46EF9D2B28F3F175C4215 /* Pods-SwaggerClient_Tests-umbrella.h */, - 9771D508607ABB6410B0BF9F /* Pods-SwaggerClient_Tests.debug.xcconfig */, - A61413AE7365BA6BD1EC261F /* Pods-SwaggerClient_Tests.release.xcconfig */, - ); - name = "Pods-SwaggerClient_Tests"; - path = "Target Support Files/Pods-SwaggerClient_Tests"; - sourceTree = ""; - }; - A1023CCC5989B44088116E66 /* Pods */ = { - isa = PBXGroup; - children = ( - B6B45A3D2553F2454BA474D8 /* AFNetworking */, - 95C8D702F42F6124FD6031B8 /* Expecta */, - 3EF1F48832B88DEA7380C789 /* ISO8601 */, - C00FC8494E3F97CF2445CD2B /* JSONModel */, - 86940BB4E50AC8BEB41F258B /* Specta */, - ); - name = Pods; - sourceTree = ""; - }; - A15D48AEC789CE1196E54C8F /* iOS */ = { - isa = PBXGroup; - children = ( - E372B83A044ECCA01E472FC9 /* CoreGraphics.framework */, - 671A488088E85A1E9E82C2D4 /* Foundation.framework */, - AE13B85DCBE9E69CCC686887 /* MobileCoreServices.framework */, - DCD887355DA3622403C587F3 /* Security.framework */, - AE7D0F77D853957EBCAE657F /* SystemConfiguration.framework */, - 0AABA64768BF1C67079AC14C /* XCTest.framework */, - ); - name = iOS; - sourceTree = ""; - }; - A3C7A0CE418F4E2A35715352 /* Targets Support Files */ = { - isa = PBXGroup; - children = ( - DACF90DFCA19D58F567ABAD7 /* Pods-SwaggerClient_Example */, - A03705BE3759CEB52D808DB5 /* Pods-SwaggerClient_Tests */, - ); - name = "Targets Support Files"; - sourceTree = ""; - }; - AA9F04788FA9956FFAA3269C /* Support Files */ = { - isa = PBXGroup; - children = ( - CC4A7C46C28B8D47187C1C49 /* Info.plist */, - EFC6B68E929AF9D5BEFD0302 /* Info.plist */, - 145BFF1E93D758B233F0AE9E /* Pods-SwaggerClient_Example-JSONModel.modulemap */, - 99A4A4B3247D70FBA6024D8F /* Pods-SwaggerClient_Example-JSONModel.xcconfig */, - D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */, - DC4F0DB2C1E5DEACB3919576 /* Pods-SwaggerClient_Example-JSONModel-dummy.m */, - C22D6D663F367C5CCB922CD4 /* Pods-SwaggerClient_Example-JSONModel-prefix.pch */, - 02BFF49A4C0CD62A7A017609 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h */, - 5ACAB4F433D4781F70935C78 /* Pods-SwaggerClient_Tests-JSONModel.modulemap */, - E29416FF6B777006D0421AF4 /* Pods-SwaggerClient_Tests-JSONModel.xcconfig */, - 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */, - 16CF586DFE9835700F2EDA9E /* Pods-SwaggerClient_Tests-JSONModel-dummy.m */, - FDE30FAA7D4B65680CAF7FCC /* Pods-SwaggerClient_Tests-JSONModel-prefix.pch */, - 01FC7B913F4D0D8ABA61D37F /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Pods-SwaggerClient_Example-JSONModel"; - sourceTree = ""; - }; - ADBB4065C1F453AB4A0E7F6E /* Support Files */ = { - isa = PBXGroup; - children = ( - 62BC316D842CEB918EAC2F85 /* Info.plist */, - C6CBAE36F463CD9F45A3BB9D /* Info.plist */, - 61ECE30CFAEE60A56370FFC4 /* Pods-SwaggerClient_Example-AFNetworking.modulemap */, - 596F890BB01AA3448640038C /* Pods-SwaggerClient_Example-AFNetworking.xcconfig */, - A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */, - A4077B653CCC6F44DDA78122 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m */, - 253D83DD07A18825650BBBE9 /* Pods-SwaggerClient_Example-AFNetworking-prefix.pch */, - E90E3F2428A92C2B30B905D1 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h */, - 0C7C70764F7DC898F9CD47C9 /* Pods-SwaggerClient_Tests-AFNetworking.modulemap */, - EB31DF2DC5E05E3C6E2B293D /* Pods-SwaggerClient_Tests-AFNetworking.xcconfig */, - AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */, - 2D6BA58FCD62CCE952D967CE /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m */, - 4E270100DEFDE600FBCC15C8 /* Pods-SwaggerClient_Tests-AFNetworking-prefix.pch */, - 7BAEA77B327844A9285B8670 /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Pods-SwaggerClient_Example-AFNetworking"; - sourceTree = ""; - }; - B55257A75677A5B455E28C0E /* SwaggerClient */ = { - isa = PBXGroup; - children = ( - BA4B27F2FB073D3E8345BF79 /* JSONValueTransformer+ISO8601.h */, - F2BF821324735755972447B0 /* JSONValueTransformer+ISO8601.m */, - E5F6B4D3A0DBB8FA2D118B34 /* SWGApiClient.h */, - A42D06ECA69A10D7B7AB66B5 /* SWGApiClient.m */, - B3870DA6EC44CBA8FA1E4893 /* SWGCategory.h */, - 35F8AFCBA88A170C1ED8B8EA /* SWGCategory.m */, - FAF50F76847FEFE63382A19D /* SWGConfiguration.h */, - 1E32292D3F4D806B627F1570 /* SWGConfiguration.m */, - EEBE9B8A684DF642FE20657F /* SWGFile.h */, - CC3AAA85DF4F0B6AF3F65FF3 /* SWGFile.m */, - E5109CAF5DE5D9EDF8A5CDC0 /* SWGJSONRequestSerializer.h */, - 331537C2B3681E368BD3C9CD /* SWGJSONRequestSerializer.m */, - 7334D7BE223A4E8284A960DD /* SWGJSONResponseSerializer.h */, - CB9DA7BA9A24B089C6FC9AA9 /* SWGJSONResponseSerializer.m */, - 8215F4EBBAA1231B662B87D4 /* SWGMyresult.h */, - 5B582DC8026EDCEFE9570A57 /* SWGMyresult.m */, - 714BA14CC63A7438D89F7181 /* SWGMythingApi.h */, - 5EB007D8397CABC3A86DC35B /* SWGMythingApi.m */, - 79F66BA3CD50A4290602F14B /* SWGObject.h */, - 93127E06DFE790D76898A78D /* SWGObject.m */, - AC70BE6F2761A3E4E4B84FDD /* SWGOrder.h */, - 8371F57BE2022A982DD2C14B /* SWGOrder.m */, - AAAB9238C7E7CC348DE482B8 /* SWGPet.h */, - CB61EBD400A6C25EDC2BBEC2 /* SWGPet.m */, - 60F89DDC8635677F871D034F /* SWGPetApi.h */, - 95DDFA05DD6945745A0CA6A1 /* SWGPetApi.m */, - A94D44F705B09EAE0420833B /* SWGQueryParamCollection.h */, - 4E2CCF2F2B2988DE22AE21A8 /* SWGQueryParamCollection.m */, - 70728AC343FB456859D11ABE /* SWGStoreApi.h */, - 3CA2DD7C1A9CD271FBEEDCFA /* SWGStoreApi.m */, - 8A8892A67E4E1629B3650958 /* SWGTag.h */, - 2C14451912091A7274AEF9E1 /* SWGTag.m */, - 1F64414F4ED6C6AEB76C5CF9 /* SWGUser.h */, - 9F927BCFCED60E5C20DD572D /* SWGUser.m */, - 20402A2505F9199C8CF42E06 /* SWGUserApi.h */, - F1BACAD5385F95B410BB7C87 /* SWGUserApi.m */, - ); - path = SwaggerClient; - sourceTree = ""; - }; - B6B45A3D2553F2454BA474D8 /* AFNetworking */ = { - isa = PBXGroup; - children = ( - C0C70D134185F0A5D884F2D5 /* AFNetworking.h */, - 33F545DC4CC555AE4F30E353 /* NSURLConnection */, - 731D3D653792B9E33F0CEAEF /* NSURLSession */, - FE04BA1134972D1DEC32B8CA /* Reachability */, - C040C67829C03E322C32FDF1 /* Security */, - 287A389EC1CB278D24C36DFA /* Serialization */, - ADBB4065C1F453AB4A0E7F6E /* Support Files */, - 58B541E3318B7CA53A88A30E /* UIKit */, - ); - path = AFNetworking; - sourceTree = ""; - }; - BD7D77F2AC0E7E1511D454C8 /* Support Files */ = { - isa = PBXGroup; - children = ( - 4EC94106B0E5549033F7BA15 /* Info.plist */, - 83CAE1AE966882439F8A96EF /* Info.plist */, - 66978135221A5645E30BE2F1 /* Pods-SwaggerClient_Example-ISO8601.modulemap */, - D56A3A676645CFB5F0B4CA22 /* Pods-SwaggerClient_Example-ISO8601.xcconfig */, - 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */, - 1C064E590FE5779DB6C05E82 /* Pods-SwaggerClient_Example-ISO8601-dummy.m */, - D467864632DE57A4A06D82B3 /* Pods-SwaggerClient_Example-ISO8601-prefix.pch */, - 57E80A657EA2993398931392 /* Pods-SwaggerClient_Example-ISO8601-umbrella.h */, - 7E1FD49EEBB1A08378F9ECA4 /* Pods-SwaggerClient_Tests-ISO8601.modulemap */, - D549F681F30BA76D288122C0 /* Pods-SwaggerClient_Tests-ISO8601.xcconfig */, - 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */, - 32DE028703A8C4BC2B9C2A2E /* Pods-SwaggerClient_Tests-ISO8601-dummy.m */, - 10DFD3D78F972F78D71BB6E7 /* Pods-SwaggerClient_Tests-ISO8601-prefix.pch */, - 36B743CDFC49D282EF4A78C8 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Pods-SwaggerClient_Example-ISO8601"; - sourceTree = ""; - }; - C00FC8494E3F97CF2445CD2B /* JSONModel */ = { - isa = PBXGroup; - children = ( - DFB8A849BA1FECF15636A354 /* JSONAPI.h */, - D906469EA22490516C576F34 /* JSONAPI.m */, - 889B2226D66494C5DB5F33F9 /* JSONHTTPClient.h */, - 9BF513A105EEBB9C62BDD60B /* JSONHTTPClient.m */, - 2B99E0C1051BAF97AAA01CBB /* JSONKeyMapper.h */, - 37085BC581A14B6E3E8C4D09 /* JSONKeyMapper.m */, - 67A228DF9CD60524B576E388 /* JSONModel.h */, - FF92E4A16DFC6E28E7E5D562 /* JSONModel.m */, - B7CE604E6EA1D256D1F0A8AA /* JSONModel+networking.h */, - 80F6ECA6AB109AFD0CE2E9CF /* JSONModel+networking.m */, - 67D72714DD0EA3F6ABF35D2A /* JSONModelArray.h */, - 63AAD00C6BF1CECE08D88CE3 /* JSONModelArray.m */, - 9725EE5FF670963BBEF4680E /* JSONModelClassProperty.h */, - 91DC534FB82569495452D79F /* JSONModelClassProperty.m */, - A79E486BE2BAA943C0E47F51 /* JSONModelError.h */, - 6B41F3EB7887EBB63F0F242A /* JSONModelError.m */, - 3E6F8CCCB7A467D7ADCF9320 /* JSONModelLib.h */, - 8ABA855B29B5869D5B9FE91C /* JSONValueTransformer.h */, - 90B1F5AE7FE9B9050C58885E /* JSONValueTransformer.m */, - F9301EBB1082F3DF4ACF55B7 /* NSArray+JSONModel.h */, - C5AABD339B19F5117F87718C /* NSArray+JSONModel.m */, - AA9F04788FA9956FFAA3269C /* Support Files */, - ); - path = JSONModel; - sourceTree = ""; - }; - C040C67829C03E322C32FDF1 /* Security */ = { - isa = PBXGroup; - children = ( - 36A7357E024D3B6884439E33 /* AFSecurityPolicy.h */, - 451719F53715B179730D75E0 /* AFSecurityPolicy.m */, - ); - name = Security; - sourceTree = ""; - }; - DACF90DFCA19D58F567ABAD7 /* Pods-SwaggerClient_Example */ = { - isa = PBXGroup; - children = ( - 4F4671535FDE630BAB38EBFC /* Info.plist */, - D9ED0A476E3DBC9422CCF739 /* Pods-SwaggerClient_Example.modulemap */, - 96B0499DE5856DB93FACE9F3 /* Pods-SwaggerClient_Example-acknowledgements.markdown */, - F39E23BF273317107095F738 /* Pods-SwaggerClient_Example-acknowledgements.plist */, - 517927BA19A3538D1E30DE50 /* Pods-SwaggerClient_Example-dummy.m */, - 4FE8797D427FFD0C0A7BEF85 /* Pods-SwaggerClient_Example-environment.h */, - 7A0294B9DB6D28C931109F04 /* Pods-SwaggerClient_Example-frameworks.sh */, - 7F5E3C9D4DC0F9D156F215D9 /* Pods-SwaggerClient_Example-resources.sh */, - A3D3304828283C9BAC71B216 /* Pods-SwaggerClient_Example-umbrella.h */, - 1284C207920C60CCFF057D06 /* Pods-SwaggerClient_Example.debug.xcconfig */, - 1186977B42F8F3FC21D1A7B9 /* Pods-SwaggerClient_Example.release.xcconfig */, - ); - name = "Pods-SwaggerClient_Example"; - path = "Target Support Files/Pods-SwaggerClient_Example"; - sourceTree = ""; - }; - E4F7D4BF68FBAF97DA094102 /* Support Files */ = { - isa = PBXGroup; - children = ( - A1907A8F78BBCB2EF8450B44 /* Info.plist */, - D3FAA1B180CA821CADF13336 /* Pods-SwaggerClient_Tests-Specta.modulemap */, - D805562F6E114EDE2BFB0CE2 /* Pods-SwaggerClient_Tests-Specta.xcconfig */, - FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */, - 60DECAD526F277F125AC6CC8 /* Pods-SwaggerClient_Tests-Specta-dummy.m */, - 034BC9278FF5FAA0BF7EDE54 /* Pods-SwaggerClient_Tests-Specta-prefix.pch */, - BED74BBB7E4563223284FC51 /* Pods-SwaggerClient_Tests-Specta-umbrella.h */, - ); - name = "Support Files"; - path = "../Target Support Files/Pods-SwaggerClient_Tests-Specta"; - sourceTree = ""; - }; - F8DFE02AA7117447C43F2FFC = { - isa = PBXGroup; - children = ( - EE176C429702B2F0310644D4 /* Podfile */, - 268C001763B7BFCB78674988 /* Development Pods */, - 63E0886E243C932B9756FBD5 /* Frameworks */, - A1023CCC5989B44088116E66 /* Pods */, - 1919E245EDC5D1667FA4AA3A /* Products */, - A3C7A0CE418F4E2A35715352 /* Targets Support Files */, - ); - sourceTree = ""; - }; - FE04BA1134972D1DEC32B8CA /* Reachability */ = { - isa = PBXGroup; - children = ( - E1268621ACDBA89268F6D79A /* AFNetworkReachabilityManager.h */, - 3AABB6DD414B225AF74CDD9A /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXHeadersBuildPhase section */ - 156119613885B08AA0F014A7 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 8999ED93A69964E58772CB7C /* JSONAPI.h in Headers */, - 9B34355CD7E63D1895627210 /* JSONHTTPClient.h in Headers */, - 3DC47F224263A6AE449CFFDC /* JSONKeyMapper.h in Headers */, - 59719066DA7A3B5DD4234C92 /* JSONModel+networking.h in Headers */, - A7B0C16EEB7FFA25C25370D4 /* JSONModel.h in Headers */, - 7E51B9CF8F060125255C4874 /* JSONModelArray.h in Headers */, - B1E4B9C9C788060FA05197D8 /* JSONModelClassProperty.h in Headers */, - 8BC9B4305B0DDA301ACA4B07 /* JSONModelError.h in Headers */, - D25A60002AC50691F13E03C0 /* JSONModelLib.h in Headers */, - ECE599AE763A2C388157D2B1 /* JSONValueTransformer.h in Headers */, - 50147C1C98A2BE3F820601A9 /* NSArray+JSONModel.h in Headers */, - 3760B1DD16BFF927E104FB25 /* Pods-SwaggerClient_Example-JSONModel-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 250DC207ED9525F56AB6683F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 40978838FAEA6D634F4AD042 /* JSONValueTransformer+ISO8601.h in Headers */, - 30761F9D2ADDD7315DDC95D8 /* Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h in Headers */, - 31A472719AA3A52EC74903FD /* SWGApiClient.h in Headers */, - F34C32CDBC26097517DD947F /* SWGCategory.h in Headers */, - 4684F0551F479F660241F8EE /* SWGConfiguration.h in Headers */, - 719253026530EB29F2CC2B72 /* SWGFile.h in Headers */, - 6BD0E2ACB9C405F9E64B8669 /* SWGJSONRequestSerializer.h in Headers */, - E7933B64815CD27F8F7C3540 /* SWGJSONResponseSerializer.h in Headers */, - D39D39947572DE9798E3D88B /* SWGMyresult.h in Headers */, - 4327F8FF04D9796D030CC825 /* SWGMythingApi.h in Headers */, - 30AED8CD55E9DA4D102A028B /* SWGObject.h in Headers */, - 05E44B1705BF02EF459EED58 /* SWGOrder.h in Headers */, - C6A0423CD8DBA07A30B98042 /* SWGPet.h in Headers */, - 875AF30991031E7098EEF798 /* SWGPetApi.h in Headers */, - 9E55563763BFCCA174A600C5 /* SWGQueryParamCollection.h in Headers */, - 5B7DF7966982B7F4CADDD133 /* SWGStoreApi.h in Headers */, - E6389419244A7DC4C9C57934 /* SWGTag.h in Headers */, - F55122FA09A1A3BBD62E54B3 /* SWGUser.h in Headers */, - FDACF057168267FCDAB72DF1 /* SWGUserApi.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4473FA90B779810F6D33A32C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 0E5BA06D6F20D109F5937BBA /* Pods-SwaggerClient_Example-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 4545D53E1FD0C4B7B97B04F9 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B9D2A404F1B49622441EBB16 /* JSONAPI.h in Headers */, - 2575C7D4A30F9F057EEB475B /* JSONHTTPClient.h in Headers */, - BEA7FF33522B439AEB60C281 /* JSONKeyMapper.h in Headers */, - 009F14C0CA20741504926131 /* JSONModel+networking.h in Headers */, - 2A1D80A2AD26A4E7E3CB41BF /* JSONModel.h in Headers */, - 15481C9B911D9926D6616544 /* JSONModelArray.h in Headers */, - 2B9B995C35A4D77609B5BFF2 /* JSONModelClassProperty.h in Headers */, - 08D39D19BF314C76BE1C7C47 /* JSONModelError.h in Headers */, - 3FA455AFA48AD50F1D53F9CA /* JSONModelLib.h in Headers */, - 5B2FCF39BB864869CD94F2F9 /* JSONValueTransformer.h in Headers */, - 81292025A1A602AF03CF2786 /* NSArray+JSONModel.h in Headers */, - 31EED5998AB440042E5AD2A1 /* Pods-SwaggerClient_Tests-JSONModel-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 53E267707CCEA2E3A1AB0B3C /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C84ED29D92C2DAF709D42519 /* AFHTTPRequestOperation.h in Headers */, - 7E3EF033ABA1E93C7F640408 /* AFHTTPRequestOperationManager.h in Headers */, - B13D156D3F01638F8D3EC102 /* AFHTTPSessionManager.h in Headers */, - 7A53181A5C51E8CDC82D78FF /* AFNetworkActivityIndicatorManager.h in Headers */, - AB5C9A3A56CEBAB1AD349A33 /* AFNetworkReachabilityManager.h in Headers */, - 0BA67D960C3D46FE796FA170 /* AFNetworking.h in Headers */, - 709D563EE63BC8B34E719F68 /* AFSecurityPolicy.h in Headers */, - F0E3847056B72A4ACC11650F /* AFURLConnectionOperation.h in Headers */, - ACD3422A4497EA29AB24A72E /* AFURLRequestSerialization.h in Headers */, - BF2DDC96324CFDF7C303F050 /* AFURLResponseSerialization.h in Headers */, - 5CF717B5F4B92B85335848B5 /* AFURLSessionManager.h in Headers */, - B6DAEBF843B8DC1DC8E3906F /* Pods-SwaggerClient_Tests-AFNetworking-umbrella.h in Headers */, - B9BA486CAAEB77195346C34B /* UIActivityIndicatorView+AFNetworking.h in Headers */, - E3C9C7EAD8A7690BE18CF43E /* UIAlertView+AFNetworking.h in Headers */, - 8FB224E07B86F6A688B90F58 /* UIButton+AFNetworking.h in Headers */, - 54A1C77FFEF9D6711B04A35F /* UIImageView+AFNetworking.h in Headers */, - A615771FAD89E35239D87FF6 /* UIKit+AFNetworking.h in Headers */, - 8EFACBBBDC56722661F3744A /* UIProgressView+AFNetworking.h in Headers */, - 6895CF33F4FB371D6FCA3FE9 /* UIRefreshControl+AFNetworking.h in Headers */, - 1E90336D2D07D4CCD8EAB3AE /* UIWebView+AFNetworking.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7AC2D11FE2C693EA5B960A79 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - CC1FBF181AEECAD23864A42C /* Pods-SwaggerClient_Tests-Specta-umbrella.h in Headers */, - D85897B024FC6FAD6069F022 /* SPTCallSite.h in Headers */, - 58933698E078FEA9C0689292 /* SPTCompiledExample.h in Headers */, - D8D2BF368F6CE862A6B7AA97 /* SPTExample.h in Headers */, - A8C07412B7F1F58F95027E4B /* SPTExampleGroup.h in Headers */, - A8CAB0E9B1CF76911B13ECC0 /* SPTExcludeGlobalBeforeAfterEach.h in Headers */, - CADBFFBB5024C1F7431B4161 /* SPTGlobalBeforeAfterEach.h in Headers */, - 8929E57AFE7279D698EF5E7E /* SPTSharedExampleGroups.h in Headers */, - D2D9A6640DB83E9E9430A97C /* SPTSpec.h in Headers */, - EEC1D0AFE3CE69C65F59BED8 /* SPTTestSuite.h in Headers */, - 2019465B5EC42B2DCBB85EE3 /* Specta.h in Headers */, - 49BD45475EFF07925EF1261D /* SpectaDSL.h in Headers */, - 3EAEDA676CAF94858D91CFB0 /* SpectaTypes.h in Headers */, - 1CF4FB9D2FD679D464ABBB50 /* SpectaUtility.h in Headers */, - 18EB1478750F10527DCBA3CA /* XCTest+Private.h in Headers */, - C2BE2DCF5392F363C60A210B /* XCTestCase+Specta.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7F75A327B3E596E1CE9BEAE5 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 6353F43D216317DCB7178D76 /* AFHTTPRequestOperation.h in Headers */, - CEF36F80E21F2D0234B5566A /* AFHTTPRequestOperationManager.h in Headers */, - D64936F4E16C7DDC5CA36786 /* AFHTTPSessionManager.h in Headers */, - 81E1F4FC8572144FC30559B2 /* AFNetworkActivityIndicatorManager.h in Headers */, - 202A56F969E09068E449B790 /* AFNetworkReachabilityManager.h in Headers */, - 655A1A5574F0ADA33C6BA555 /* AFNetworking.h in Headers */, - 01644CF4631020B9AC9CCD06 /* AFSecurityPolicy.h in Headers */, - 060CE80CB8B14C7F22E6C8F7 /* AFURLConnectionOperation.h in Headers */, - 063630C46D0AE3241769A6AB /* AFURLRequestSerialization.h in Headers */, - 0CE023D16C43712578A85693 /* AFURLResponseSerialization.h in Headers */, - D089D5A08CF97B04969C23E4 /* AFURLSessionManager.h in Headers */, - 2C0B0BCC4246AA2B5C7A85A4 /* Pods-SwaggerClient_Example-AFNetworking-umbrella.h in Headers */, - A6A04E6DCA180CCB638EB663 /* UIActivityIndicatorView+AFNetworking.h in Headers */, - 9E4390595213439458955F20 /* UIAlertView+AFNetworking.h in Headers */, - 4D8B2BA43AAE4EB70B675653 /* UIButton+AFNetworking.h in Headers */, - CCF74087CAB105D4DED21E9F /* UIImageView+AFNetworking.h in Headers */, - B977CEEA0F438EDF96140C66 /* UIKit+AFNetworking.h in Headers */, - ED3C42A61083D6D95AA107AB /* UIProgressView+AFNetworking.h in Headers */, - 15D907F1F8EE9988D498B929 /* UIRefreshControl+AFNetworking.h in Headers */, - B9E4C068BE8563261382F6A0 /* UIWebView+AFNetworking.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 97DCCF614986E72E496EDC94 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - C6D59104CEC4FAE304DA4D55 /* EXPBlockDefinedMatcher.h in Headers */, - 4CD5A6D7AA3D5BFD09648D1D /* EXPDefines.h in Headers */, - FDB1AA841E7569F2CAD1A487 /* EXPDoubleTuple.h in Headers */, - 4E381D04C09A000DF81BB192 /* EXPExpect.h in Headers */, - 7A068863C9D19B0DE204F391 /* EXPFloatTuple.h in Headers */, - 4C87A409DB81EB3100727F0F /* EXPMatcher.h in Headers */, - F67A3EE5DE902A585BDEDC01 /* EXPMatcherHelpers.h in Headers */, - BEA321219CA5B6A96477031D /* EXPMatchers+beCloseTo.h in Headers */, - FEE8E2294C46AE7CE464264D /* EXPMatchers+beFalsy.h in Headers */, - 141E818821C0DF4EF86D111A /* EXPMatchers+beGreaterThan.h in Headers */, - 75152788B3BE31431561865B /* EXPMatchers+beGreaterThanOrEqualTo.h in Headers */, - A39E4CD5AE12216FB1487BE3 /* EXPMatchers+beIdenticalTo.h in Headers */, - D9DFA62AC86F87A197C5560C /* EXPMatchers+beInTheRangeOf.h in Headers */, - ED132F7E6A664272D3FF3B53 /* EXPMatchers+beInstanceOf.h in Headers */, - C330AFEF3709DC609D18FE78 /* EXPMatchers+beKindOf.h in Headers */, - 44E1A78EC1381D154F5F4198 /* EXPMatchers+beLessThan.h in Headers */, - 4D4DFF614C17C0DC6F9358B9 /* EXPMatchers+beLessThanOrEqualTo.h in Headers */, - F55E8B76B45DE49306387219 /* EXPMatchers+beNil.h in Headers */, - D1750EAC8D3DBC472DDCBC9D /* EXPMatchers+beSubclassOf.h in Headers */, - 5F372EF252811B674AC4AB6B /* EXPMatchers+beSupersetOf.h in Headers */, - D7239B7051E31F27F8BEE765 /* EXPMatchers+beTruthy.h in Headers */, - A52C6D47F0316E0850BDB9CC /* EXPMatchers+beginWith.h in Headers */, - 0A807DDB6336109324346314 /* EXPMatchers+conformTo.h in Headers */, - 1A089E25AFA9D708ACA954D0 /* EXPMatchers+contain.h in Headers */, - 14D082B7758784153108F8D0 /* EXPMatchers+endWith.h in Headers */, - 480B9A799CF713D7A4FB1280 /* EXPMatchers+equal.h in Headers */, - C05D4C12A5819F4C96283EF0 /* EXPMatchers+haveCountOf.h in Headers */, - B69AF6583C37F97E73A631A4 /* EXPMatchers+match.h in Headers */, - A1C1A904CA59FC4D76396175 /* EXPMatchers+postNotification.h in Headers */, - 5D474A781C64601B7793EACE /* EXPMatchers+raise.h in Headers */, - 954A0C871E08071219871B4D /* EXPMatchers+raiseWithReason.h in Headers */, - FB1C86BB963AE459A2F77925 /* EXPMatchers+respondTo.h in Headers */, - AD992DDF15A32176B225DE7D /* EXPMatchers.h in Headers */, - 248E11A29947ED3176089DE8 /* EXPUnsupportedObject.h in Headers */, - 7A95722C4365CBB156219D87 /* Expecta.h in Headers */, - 2BF8572932D3DB0D00340B5D /* ExpectaObject.h in Headers */, - A94CB6D49585BD2377348821 /* ExpectaSupport.h in Headers */, - 9C4FAEE42252A322B0545CF6 /* NSObject+Expecta.h in Headers */, - A070DA3650B5255D70D2B282 /* NSValue+Expecta.h in Headers */, - C9FEB3D995D761E335AD7564 /* Pods-SwaggerClient_Tests-Expecta-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AB4A5205D0F4C0D7D380619A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F00CD0B1A1A5D41A7C0A8A0E /* ISO8601.h in Headers */, - 8178DA76D849E1EEFDD0776E /* ISO8601Serialization.h in Headers */, - 4C235C092D5E9122C9675223 /* NSDate+ISO8601.h in Headers */, - 81412F96CE91EA61DD405215 /* Pods-SwaggerClient_Tests-ISO8601-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - BF506DBD467268993DD0B88B /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 1B9947C260FA1F8C7BBF6CAA /* JSONValueTransformer+ISO8601.h in Headers */, - FEC1250CB58D27B11D7B6D82 /* Pods-SwaggerClient_Example-SwaggerClient-umbrella.h in Headers */, - 2E492A887BD1485D00A872DE /* SWGApiClient.h in Headers */, - 79BFDC0F5D922F559F6386CD /* SWGCategory.h in Headers */, - 684A4BF6370BC43C9704A17A /* SWGConfiguration.h in Headers */, - 56250F2F58B9A7760BFA25D2 /* SWGFile.h in Headers */, - 6E80282ECD2D0EBFB5E4485E /* SWGJSONRequestSerializer.h in Headers */, - 70355ED21006B4EFC0743514 /* SWGJSONResponseSerializer.h in Headers */, - 208F0DB6A4BA036D42430F0E /* SWGMyresult.h in Headers */, - A9099FF7B971FB25BE12CE34 /* SWGMythingApi.h in Headers */, - A341B6CFB383324AA067A6C9 /* SWGObject.h in Headers */, - DC1A23AD09FFE1D162CF752C /* SWGOrder.h in Headers */, - D5C153FA62530DF6C2F0273C /* SWGPet.h in Headers */, - 31F4C8B75EEE1B23E2591723 /* SWGPetApi.h in Headers */, - 96514B6F8D64D7C3330D5338 /* SWGQueryParamCollection.h in Headers */, - 730EB4EC6649BB254DE45A23 /* SWGStoreApi.h in Headers */, - B4D66A60456836C75E244CA1 /* SWGTag.h in Headers */, - 8A4B71DDA44F239B71659CC9 /* SWGUser.h in Headers */, - AA260D742DDFFB983A47540C /* SWGUserApi.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C8F839C66585929F628BBFD6 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - F9B487686092CAF6F341F0B4 /* ISO8601.h in Headers */, - 79AC15C3F613CF7B5167E18A /* ISO8601Serialization.h in Headers */, - BF726F674241490B1012F41D /* NSDate+ISO8601.h in Headers */, - A12B12D456D0FB491E19B70F /* Pods-SwaggerClient_Example-ISO8601-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D82B733FDD10A4C34B91EA7E /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - B577C09AD427A9630FC2762A /* Pods-SwaggerClient_Tests-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - -/* Begin PBXNativeTarget section */ - 0302FEB4C8D5554EBF417C18 /* Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient */ = { - isa = PBXNativeTarget; - buildConfigurationList = 351BAE8D5BC62A097309ADC9 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient" */; - buildPhases = ( - 8448357716917B3811ADC84F /* Sources */, - D85DD4B01002C97CAEAD5ECD /* Frameworks */, - 18DC42A60FE85FD053CE074E /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; - productName = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; - productReference = 88858C0B2B9F69FD1898CC7C /* SwaggerClient.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 3D847D51CC40CEBA17C36758 /* Pods-SwaggerClient_Example */ = { - isa = PBXNativeTarget; - buildConfigurationList = 3D7EC3A64D24B9B21CAB0CB0 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example" */; - buildPhases = ( - 465DA8A121427D77A47133AD /* Sources */, - 673A0374A2A20CD429AB0773 /* Frameworks */, - 4473FA90B779810F6D33A32C /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - BFFCF1DD85CC0EBDD4A15E6F /* PBXTargetDependency */, - 1BD6424F23937FAA86565E89 /* PBXTargetDependency */, - F5D78FECB621781EB73E6197 /* PBXTargetDependency */, - 6FC0DE2C745B1889560F6372 /* PBXTargetDependency */, - ); - name = "Pods-SwaggerClient_Example"; - productName = "Pods-SwaggerClient_Example"; - productReference = ECD35253AA3403B8C0D8BC91 /* Pods_SwaggerClient_Example.framework */; - productType = "com.apple.product-type.framework"; - }; - 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */ = { - isa = PBXNativeTarget; - buildConfigurationList = 85CDE45473383342737F8E25 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-JSONModel" */; - buildPhases = ( - D73538A10BDC3736D358D63A /* Sources */, - 8269400275399508F5AC9F90 /* Frameworks */, - 156119613885B08AA0F014A7 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Example-JSONModel"; - productName = "Pods-SwaggerClient_Example-JSONModel"; - productReference = 2B84527440CA189207D786E6 /* JSONModel.framework */; - productType = "com.apple.product-type.framework"; - }; - 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0CA4D8762B52D96C8C564237 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-AFNetworking" */; - buildPhases = ( - 44795B49329385F6BF17D23B /* Sources */, - 750E29F817ADCE3AB9B643BA /* Frameworks */, - 7F75A327B3E596E1CE9BEAE5 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Example-AFNetworking"; - productName = "Pods-SwaggerClient_Example-AFNetworking"; - productReference = A5484E73AF459C17B7675EC4 /* AFNetworking.framework */; - productType = "com.apple.product-type.framework"; - }; - 586988C23CE1F40608512406 /* Pods-SwaggerClient_Tests */ = { - isa = PBXNativeTarget; - buildConfigurationList = D30DD5D7DFF977FDA7B6BEF1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests" */; - buildPhases = ( - 9FD38D102529F8D7D3170D67 /* Sources */, - B5794BCD92EB55B5659DC58C /* Frameworks */, - D82B733FDD10A4C34B91EA7E /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - 02A00A78A8D4DBA4C494E782 /* PBXTargetDependency */, - 7E019665346D67BA59BD3582 /* PBXTargetDependency */, - 2BC5F748C750AEDB54C6722D /* PBXTargetDependency */, - 6300704AD4301AF8D7350451 /* PBXTargetDependency */, - 8BD39B4AC51572C84586390B /* PBXTargetDependency */, - 2F7257A66A460B6DD6A4EA8E /* PBXTargetDependency */, - ); - name = "Pods-SwaggerClient_Tests"; - productName = "Pods-SwaggerClient_Tests"; - productReference = DD1BFACA7FDF797B7D807147 /* Pods_SwaggerClient_Tests.framework */; - productType = "com.apple.product-type.framework"; - }; - 5D6776B420CF321A265D866F /* Pods-SwaggerClient_Tests-Specta */ = { - isa = PBXNativeTarget; - buildConfigurationList = 24A540001943BDE4C634EC51 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Specta" */; - buildPhases = ( - 0142C86F1CE186B36A8261E9 /* Sources */, - FC7F930F7556CE714F53300E /* Frameworks */, - 7AC2D11FE2C693EA5B960A79 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Tests-Specta"; - productName = "Pods-SwaggerClient_Tests-Specta"; - productReference = 77F99C66542F4EEBABCA1BD3 /* Specta.framework */; - productType = "com.apple.product-type.framework"; - }; - 7DCA9F990FC46BE1EFE6E984 /* Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient */ = { - isa = PBXNativeTarget; - buildConfigurationList = 6083D3A92D58EC4F28AE1B83 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient" */; - buildPhases = ( - 8AF5012546A593E5921B31FF /* Sources */, - 499759AF0A623FE7F6AF7041 /* Frameworks */, - FD18433AC00713F1D24CEE1F /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; - productName = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; - productReference = F248532F283AF83DB6271DCE /* SwaggerClient.bundle */; - productType = "com.apple.product-type.bundle"; - }; - 9A7195F471543DF0C0847DF5 /* Pods-SwaggerClient_Tests-SwaggerClient */ = { - isa = PBXNativeTarget; - buildConfigurationList = 0CF9A436B18EF00915610CA8 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient" */; - buildPhases = ( - C1749AA5E0494F78957B7B27 /* Sources */, - D0FE5D2BE433B354C40D398F /* Frameworks */, - 06ED960DB2AAD40ADDC8FBA2 /* Resources */, - 250DC207ED9525F56AB6683F /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - B6FBD2C5C6EF1DBE5A3B8C0E /* PBXTargetDependency */, - 4176E190DC2EF76DC2017F30 /* PBXTargetDependency */, - 1A0AA9815393DBD89407AF6B /* PBXTargetDependency */, - EC423479E5CD171647C2D9BE /* PBXTargetDependency */, - ); - name = "Pods-SwaggerClient_Tests-SwaggerClient"; - productName = "Pods-SwaggerClient_Tests-SwaggerClient"; - productReference = FB09DF7ECF2A36274905F66A /* SwaggerClient.framework */; - productType = "com.apple.product-type.framework"; - }; - AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */ = { - isa = PBXNativeTarget; - buildConfigurationList = 440F2EB40823B7BE6C0366BF /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-ISO8601" */; - buildPhases = ( - 6E74CB31F8190636A0E3EDC4 /* Sources */, - A06FF8C70F93B2C2A8E2C69A /* Frameworks */, - AB4A5205D0F4C0D7D380619A /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Tests-ISO8601"; - productName = "Pods-SwaggerClient_Tests-ISO8601"; - productReference = 63A4708CCC1EF6AB1122AA0D /* ISO8601.framework */; - productType = "com.apple.product-type.framework"; - }; - BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */ = { - isa = PBXNativeTarget; - buildConfigurationList = 8F5905F41630018F867BF0DD /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-JSONModel" */; - buildPhases = ( - 84DB4D9B2F896BDE2D16EE9C /* Sources */, - 22103A8AB4D5FCBA853D48FE /* Frameworks */, - 4545D53E1FD0C4B7B97B04F9 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Tests-JSONModel"; - productName = "Pods-SwaggerClient_Tests-JSONModel"; - productReference = F2C9039E5EA681AB43C4BBEF /* JSONModel.framework */; - productType = "com.apple.product-type.framework"; - }; - C215F478D13D9D22D8E1EF48 /* Pods-SwaggerClient_Tests-Expecta */ = { - isa = PBXNativeTarget; - buildConfigurationList = CE9D2C2EB73F81484282144B /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Expecta" */; - buildPhases = ( - 3CE9B586C0B1F55752D43B64 /* Sources */, - D1964A51153C3AD7CB69D97B /* Frameworks */, - 97DCCF614986E72E496EDC94 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Tests-Expecta"; - productName = "Pods-SwaggerClient_Tests-Expecta"; - productReference = A3345F9CAA9252356B6C083F /* Expecta.framework */; - productType = "com.apple.product-type.framework"; - }; - DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */ = { - isa = PBXNativeTarget; - buildConfigurationList = 45EDD505E7F0B8B9474DB404 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-AFNetworking" */; - buildPhases = ( - 08D9808518E24B8B95461158 /* Sources */, - C9772FEF5F5BFC03430176FC /* Frameworks */, - 53E267707CCEA2E3A1AB0B3C /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Tests-AFNetworking"; - productName = "Pods-SwaggerClient_Tests-AFNetworking"; - productReference = C8F4D12FB56992D696A23287 /* AFNetworking.framework */; - productType = "com.apple.product-type.framework"; - }; - EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */ = { - isa = PBXNativeTarget; - buildConfigurationList = D60F77FE8CF69D3A0CE90DB1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-ISO8601" */; - buildPhases = ( - 7F899B2AE63A9C2AF4594B6E /* Sources */, - 4356669AECF52D690D7A0708 /* Frameworks */, - C8F839C66585929F628BBFD6 /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "Pods-SwaggerClient_Example-ISO8601"; - productName = "Pods-SwaggerClient_Example-ISO8601"; - productReference = E76BF395D393BEDAF0184B7D /* ISO8601.framework */; - productType = "com.apple.product-type.framework"; - }; - F41FA180E243133D32149CC3 /* Pods-SwaggerClient_Example-SwaggerClient */ = { - isa = PBXNativeTarget; - buildConfigurationList = B99147797FD26A68689C683E /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient" */; - buildPhases = ( - 7B2044C659DA2DB123C95C64 /* Sources */, - 4A427963DE553632587A5ADF /* Frameworks */, - E6CAB5E75279623276601C95 /* Resources */, - BF506DBD467268993DD0B88B /* Headers */, - ); - buildRules = ( - ); - dependencies = ( - 5E6E70FCD4CD3DEF152EA484 /* PBXTargetDependency */, - B158D90617991ACE7FF89C92 /* PBXTargetDependency */, - E5E1ECE1FCFCE7D924A5661D /* PBXTargetDependency */, - 2C0DE9B3B72582655B86E580 /* PBXTargetDependency */, - ); - name = "Pods-SwaggerClient_Example-SwaggerClient"; - productName = "Pods-SwaggerClient_Example-SwaggerClient"; - productReference = A038A42B885D252D1A20C7CB /* SwaggerClient.framework */; - productType = "com.apple.product-type.framework"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 2773EB90C58135F3C1FC4A1B /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0640; - }; - buildConfigurationList = 99E24E8C0F51BD67AFA23E56 /* Build configuration list for PBXProject "Pods" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = F8DFE02AA7117447C43F2FFC; - productRefGroup = 1919E245EDC5D1667FA4AA3A /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 3D847D51CC40CEBA17C36758 /* Pods-SwaggerClient_Example */, - 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */, - EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */, - 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */, - F41FA180E243133D32149CC3 /* Pods-SwaggerClient_Example-SwaggerClient */, - 7DCA9F990FC46BE1EFE6E984 /* Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient */, - 586988C23CE1F40608512406 /* Pods-SwaggerClient_Tests */, - DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */, - C215F478D13D9D22D8E1EF48 /* Pods-SwaggerClient_Tests-Expecta */, - AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */, - BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */, - 5D6776B420CF321A265D866F /* Pods-SwaggerClient_Tests-Specta */, - 9A7195F471543DF0C0847DF5 /* Pods-SwaggerClient_Tests-SwaggerClient */, - 0302FEB4C8D5554EBF417C18 /* Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - 06ED960DB2AAD40ADDC8FBA2 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 739B0A56F4B979196B38F1D4 /* SwaggerClient.bundle in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 18DC42A60FE85FD053CE074E /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - E6CAB5E75279623276601C95 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ECBEE6653FEB368DF6EA2147 /* SwaggerClient.bundle in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - FD18433AC00713F1D24CEE1F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 0142C86F1CE186B36A8261E9 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2FBDF7CE14C4468420FD55AE /* Pods-SwaggerClient_Tests-Specta-dummy.m in Sources */, - 349C1EC2A3BC841F900B1486 /* SPTCallSite.m in Sources */, - 733CE4BAA5170020996D3E9B /* SPTCompiledExample.m in Sources */, - EEB0BA1DC32939D00C3ED294 /* SPTExample.m in Sources */, - AD94F44BEC5659D1BB34DE23 /* SPTExampleGroup.m in Sources */, - DB63C05804976AC7CDF74F4D /* SPTSharedExampleGroups.m in Sources */, - B540F67558AA7A144899EBBF /* SPTSpec.m in Sources */, - 65EEB46EDB53A949C6316472 /* SPTTestSuite.m in Sources */, - 35B0AC4B7AF8B00BC4C38BE6 /* SpectaDSL.m in Sources */, - 234F4761A980F0FB31468104 /* SpectaUtility.m in Sources */, - D71C1CD54E1E0230C16A87F8 /* XCTestCase+Specta.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 08D9808518E24B8B95461158 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8D650C64BE46E68CB35B4FCA /* AFHTTPRequestOperation.m in Sources */, - 7022EA6C3ED11B8F6D17C915 /* AFHTTPRequestOperationManager.m in Sources */, - 28DA345E3A79443D17917DD3 /* AFHTTPSessionManager.m in Sources */, - 5D36786D11940C4FC2D151F1 /* AFNetworkActivityIndicatorManager.m in Sources */, - B85B153A4B53D16F245FEEAA /* AFNetworkReachabilityManager.m in Sources */, - E500C5512FD6F2D51E9AC635 /* AFSecurityPolicy.m in Sources */, - 10D3E7AAF6BF29347D2C6098 /* AFURLConnectionOperation.m in Sources */, - C070594757FF88D238C2FA87 /* AFURLRequestSerialization.m in Sources */, - B2A892164C701F606A01393A /* AFURLResponseSerialization.m in Sources */, - 485CBCFDC4C3E69D41661405 /* AFURLSessionManager.m in Sources */, - C63074C841FEFC17E3AB5C3C /* Pods-SwaggerClient_Tests-AFNetworking-dummy.m in Sources */, - 592FFE8ADED8118B48C3C008 /* UIActivityIndicatorView+AFNetworking.m in Sources */, - 64839F8447FE9FFE7BEAA520 /* UIAlertView+AFNetworking.m in Sources */, - FA15E8CCF2EE07E232BE3171 /* UIButton+AFNetworking.m in Sources */, - 541A3EF8AB9F89D0C26F5180 /* UIImageView+AFNetworking.m in Sources */, - D973A75729B33D7DBA665F94 /* UIProgressView+AFNetworking.m in Sources */, - 891D33D88CE707237FF15709 /* UIRefreshControl+AFNetworking.m in Sources */, - E4097E7ABE3BFD9AE7B2D446 /* UIWebView+AFNetworking.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3CE9B586C0B1F55752D43B64 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 6FFFCA02F0848062C1CFC252 /* EXPBlockDefinedMatcher.m in Sources */, - 4E0D59D3C52705977CDA2F8C /* EXPDoubleTuple.m in Sources */, - 38DD8E43F24A829555F60CFA /* EXPExpect.m in Sources */, - 15D3342D7E8179197A16CE99 /* EXPFloatTuple.m in Sources */, - 7A1C599B7BB230911B38A23D /* EXPMatcherHelpers.m in Sources */, - 1A42236975D31BC018BADEA8 /* EXPMatchers+beCloseTo.m in Sources */, - 6F0C994E24BAEFAD916AEE27 /* EXPMatchers+beFalsy.m in Sources */, - F26654D315EA6DCA41834C01 /* EXPMatchers+beGreaterThan.m in Sources */, - 480220DF7A8958ABA2B68C4A /* EXPMatchers+beGreaterThanOrEqualTo.m in Sources */, - 3D3DB30244C6BC6C236665C2 /* EXPMatchers+beIdenticalTo.m in Sources */, - 1AE4C4E081C7868C097ED07E /* EXPMatchers+beInTheRangeOf.m in Sources */, - 8182438CCBAC66CC21D7E6D8 /* EXPMatchers+beInstanceOf.m in Sources */, - BF9AD2E3F2BBB0F23C5FE05B /* EXPMatchers+beKindOf.m in Sources */, - 85E4D74887E7F3F3702DBF51 /* EXPMatchers+beLessThan.m in Sources */, - 5A8DE01C8A5A5BA6F321912A /* EXPMatchers+beLessThanOrEqualTo.m in Sources */, - 6DF752A3DC92FFE0ED8186A6 /* EXPMatchers+beNil.m in Sources */, - 5EC683903E3BFB84AF431EE7 /* EXPMatchers+beSubclassOf.m in Sources */, - 98AB219A7D05251D3F7F7191 /* EXPMatchers+beSupersetOf.m in Sources */, - C59AA43C300E2D6018686D5C /* EXPMatchers+beTruthy.m in Sources */, - AF5EA9CC989D2DD5BBC37E6D /* EXPMatchers+beginWith.m in Sources */, - 49207B3420011B51EB18E841 /* EXPMatchers+conformTo.m in Sources */, - F16001F37542754EC6BB8DD2 /* EXPMatchers+contain.m in Sources */, - B4795C0A8815C3A0950EC1B3 /* EXPMatchers+endWith.m in Sources */, - 2B068325226CBE00207FD473 /* EXPMatchers+equal.m in Sources */, - AA31F2218DEBC427DA074A6F /* EXPMatchers+haveCountOf.m in Sources */, - 179CF1D636A8BCC9B4FF0357 /* EXPMatchers+match.m in Sources */, - 76BCBD536C1967E6EE51F9CC /* EXPMatchers+postNotification.m in Sources */, - 7711A28F5EA5D2624146AA49 /* EXPMatchers+raise.m in Sources */, - ABB477C54AD69931FDAD534A /* EXPMatchers+raiseWithReason.m in Sources */, - 7F9EE30367A72427A141D157 /* EXPMatchers+respondTo.m in Sources */, - 74844E56902AF11EAD1519DC /* EXPUnsupportedObject.m in Sources */, - BEF99C501593E888D27462DD /* ExpectaObject.m in Sources */, - BD3DBE17D08805BA594C4CDF /* ExpectaSupport.m in Sources */, - 064D4D263A3BCF74314B1CC0 /* NSValue+Expecta.m in Sources */, - 9E825293685B2F9CCB212441 /* Pods-SwaggerClient_Tests-Expecta-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 44795B49329385F6BF17D23B /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B7BFFB369FFC08F30144EB53 /* AFHTTPRequestOperation.m in Sources */, - 91E570000BEF9E1B7FE2D62C /* AFHTTPRequestOperationManager.m in Sources */, - 69F02A625CD67C7385B76D0C /* AFHTTPSessionManager.m in Sources */, - F17018B643C6833F68258DE9 /* AFNetworkActivityIndicatorManager.m in Sources */, - 738A8A430BD4B242B982A059 /* AFNetworkReachabilityManager.m in Sources */, - 98546537C1F973E3CD32D4FF /* AFSecurityPolicy.m in Sources */, - 9F71319C3E9362B30F6C3769 /* AFURLConnectionOperation.m in Sources */, - 7B97CB82AB5C67E42EF47207 /* AFURLRequestSerialization.m in Sources */, - D9854E458AA2FBD78985A511 /* AFURLResponseSerialization.m in Sources */, - CB9C5D875643FBC019875C60 /* AFURLSessionManager.m in Sources */, - 0D6A55BDCE3AAA3B8A4451D0 /* Pods-SwaggerClient_Example-AFNetworking-dummy.m in Sources */, - DF8E177952FDF501C1A4A2E4 /* UIActivityIndicatorView+AFNetworking.m in Sources */, - 14B409D1DD01CD3148C13D93 /* UIAlertView+AFNetworking.m in Sources */, - B423A4F4EC57E34D565252DC /* UIButton+AFNetworking.m in Sources */, - EE81625A23AF0564339C887C /* UIImageView+AFNetworking.m in Sources */, - F2D019933E1752072C3226C6 /* UIProgressView+AFNetworking.m in Sources */, - 7891CCC1701105C4924B92D2 /* UIRefreshControl+AFNetworking.m in Sources */, - 8E08F266FF1D8F57E4358D4E /* UIWebView+AFNetworking.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 465DA8A121427D77A47133AD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8CDC523BB3A193C0478C2391 /* Pods-SwaggerClient_Example-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 6E74CB31F8190636A0E3EDC4 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 935DB5B30E1569E0AD36149E /* ISO8601Serialization.m in Sources */, - 216BA373617DE71E01797A11 /* NSDate+ISO8601.m in Sources */, - AF7B682321A34F5E0DC249CC /* Pods-SwaggerClient_Tests-ISO8601-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7B2044C659DA2DB123C95C64 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - D0E021101C4457887F895E49 /* JSONValueTransformer+ISO8601.m in Sources */, - 7BD9D6B0473CD492B25067F0 /* Pods-SwaggerClient_Example-SwaggerClient-dummy.m in Sources */, - 5557E105ADC6440D8DE05BE8 /* SWGApiClient.m in Sources */, - 93A71FA7A09487B7309E2291 /* SWGCategory.m in Sources */, - 6D9D7788C3964B9919E6AFDD /* SWGConfiguration.m in Sources */, - A5A2B75AEEE5F1471ABF7C51 /* SWGFile.m in Sources */, - CDB76BF92E8780DFD831170E /* SWGJSONRequestSerializer.m in Sources */, - C9105E9B2229104E74953563 /* SWGJSONResponseSerializer.m in Sources */, - 5EB23F6A3A0BC89591B46C53 /* SWGMyresult.m in Sources */, - 6CBB043C1B99FCC1B8421A4D /* SWGMythingApi.m in Sources */, - 24A7213C685D7D07D1A1FEBD /* SWGObject.m in Sources */, - 3EC6DC73A10ED5CC2F75062A /* SWGOrder.m in Sources */, - 73FCB4F39FE4BFF9537374F4 /* SWGPet.m in Sources */, - 0D7DC58CB3CDFDB33C4CB741 /* SWGPetApi.m in Sources */, - 6C73129BE33A179F9AB0617C /* SWGQueryParamCollection.m in Sources */, - 2FB329EBD1692264B6EF0552 /* SWGStoreApi.m in Sources */, - A325E1719B72BDDEE0616DBF /* SWGTag.m in Sources */, - 7A0E55F5686D8206F7ED79ED /* SWGUser.m in Sources */, - 8288B907B026F63D6B2E4C69 /* SWGUserApi.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7F899B2AE63A9C2AF4594B6E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 5AF80236C8B3D49B88DD6A73 /* ISO8601Serialization.m in Sources */, - FE0A66CD1EBA3E418F2C1D00 /* NSDate+ISO8601.m in Sources */, - DB8F6259B5D23FA526D5B6C7 /* Pods-SwaggerClient_Example-ISO8601-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8448357716917B3811ADC84F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 84DB4D9B2F896BDE2D16EE9C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - A53061A46842AA54DAB54023 /* JSONAPI.m in Sources */, - DFA8365B324D8F74B8235B48 /* JSONHTTPClient.m in Sources */, - 8F5909852A74BE69436DD070 /* JSONKeyMapper.m in Sources */, - 8E1AE5FA00BEAC8AFAA2B331 /* JSONModel+networking.m in Sources */, - 9485712460E60EEE88CAC7F1 /* JSONModel.m in Sources */, - 53DB01B8A07B731462961681 /* JSONModelArray.m in Sources */, - CE1B2D9D23D09D355C7E07FE /* JSONModelClassProperty.m in Sources */, - 2E0CAD7ECD05DB499DB08A87 /* JSONModelError.m in Sources */, - 5396861AA4F84D5063B9B570 /* JSONValueTransformer.m in Sources */, - CECFB59C6E20B976193137D0 /* NSArray+JSONModel.m in Sources */, - 1F6FDD41776492A1FC024230 /* Pods-SwaggerClient_Tests-JSONModel-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8AF5012546A593E5921B31FF /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 9FD38D102529F8D7D3170D67 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 82169A131417A9577A927111 /* Pods-SwaggerClient_Tests-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C1749AA5E0494F78957B7B27 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 61E0F74A03A9676D1F9B9A1A /* JSONValueTransformer+ISO8601.m in Sources */, - 4A2E86089A4A9CBC89A42217 /* Pods-SwaggerClient_Tests-SwaggerClient-dummy.m in Sources */, - D46CB83D2BFA0851BC5D2061 /* SWGApiClient.m in Sources */, - 3DDA99600B95318A88915CE5 /* SWGCategory.m in Sources */, - 895A70C08AF98E52F33DDF0D /* SWGConfiguration.m in Sources */, - 7AC10CEF01A1AEF811D131B9 /* SWGFile.m in Sources */, - E3222F4CDFB84AFDF6739CEF /* SWGJSONRequestSerializer.m in Sources */, - AAD24B3301CA60B702236DAB /* SWGJSONResponseSerializer.m in Sources */, - 0C64F018C08F817B763164B4 /* SWGMyresult.m in Sources */, - D2CB47DBB432B6BAA9C44EF6 /* SWGMythingApi.m in Sources */, - D0230521FC1F6FF0AEB25B02 /* SWGObject.m in Sources */, - 83CE0A6BC031E570966864C9 /* SWGOrder.m in Sources */, - FE2033DD10C73DF0B8267A2C /* SWGPet.m in Sources */, - 015B81A52CCCF49BCE3973BE /* SWGPetApi.m in Sources */, - 708D1BE5029DFC2517A09EDF /* SWGQueryParamCollection.m in Sources */, - EEC3C62F793F896CF5B0B8BF /* SWGStoreApi.m in Sources */, - FE705743662892EB52ADB7B9 /* SWGTag.m in Sources */, - 43EB4E01F9DBC56B8153AF88 /* SWGUser.m in Sources */, - E33D4EA8D951458DF8A05254 /* SWGUserApi.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D73538A10BDC3736D358D63A /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 558377E71A2AECE6C70176A1 /* JSONAPI.m in Sources */, - 0DE7F2395E87EE714F79B368 /* JSONHTTPClient.m in Sources */, - CA78D205AB1EFA5BFB5434FD /* JSONKeyMapper.m in Sources */, - E6E0B4AD1CC2AFC6E80DAA67 /* JSONModel+networking.m in Sources */, - 1BF4F57244442FA9C0CE55BF /* JSONModel.m in Sources */, - C249634F44F546BBF6CA700F /* JSONModelArray.m in Sources */, - 3A595234403693F5B22FB680 /* JSONModelClassProperty.m in Sources */, - C1664322571F72BEDD57250C /* JSONModelError.m in Sources */, - AFFF90368E8F9EF5886C30B2 /* JSONValueTransformer.m in Sources */, - 815056BB9D281AB625FD6525 /* NSArray+JSONModel.m in Sources */, - 3B64A6FDF788A2104D9BB03D /* Pods-SwaggerClient_Example-JSONModel-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 02A00A78A8D4DBA4C494E782 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-AFNetworking"; - target = DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */; - targetProxy = BB29CEBC89A3E750582C41F4 /* PBXContainerItemProxy */; - }; - 1A0AA9815393DBD89407AF6B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-JSONModel"; - target = BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */; - targetProxy = 2F83CC8868CCC58549D23B75 /* PBXContainerItemProxy */; - }; - 1BD6424F23937FAA86565E89 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-ISO8601"; - target = EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */; - targetProxy = F2FE102F982CD5E7539DA87C /* PBXContainerItemProxy */; - }; - 2BC5F748C750AEDB54C6722D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-ISO8601"; - target = AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */; - targetProxy = 6CFF13F0D8A307887FE05E67 /* PBXContainerItemProxy */; - }; - 2C0DE9B3B72582655B86E580 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient"; - target = 7DCA9F990FC46BE1EFE6E984 /* Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient */; - targetProxy = A9E619AFCC2FBD32EE05B6C2 /* PBXContainerItemProxy */; - }; - 2F7257A66A460B6DD6A4EA8E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-SwaggerClient"; - target = 9A7195F471543DF0C0847DF5 /* Pods-SwaggerClient_Tests-SwaggerClient */; - targetProxy = 9B368F4D9DF66B5E965986C6 /* PBXContainerItemProxy */; - }; - 4176E190DC2EF76DC2017F30 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-ISO8601"; - target = AF87B186D8CCE5424F3A8D43 /* Pods-SwaggerClient_Tests-ISO8601 */; - targetProxy = A162F62BEE1492CF1BB6A2BE /* PBXContainerItemProxy */; - }; - 5E6E70FCD4CD3DEF152EA484 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-AFNetworking"; - target = 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */; - targetProxy = 35DEFA078ABE7B02680F7475 /* PBXContainerItemProxy */; - }; - 6300704AD4301AF8D7350451 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-JSONModel"; - target = BBD665C31D4B21357533473D /* Pods-SwaggerClient_Tests-JSONModel */; - targetProxy = 65A8E4E62B9816273B466AA8 /* PBXContainerItemProxy */; - }; - 6FC0DE2C745B1889560F6372 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-SwaggerClient"; - target = F41FA180E243133D32149CC3 /* Pods-SwaggerClient_Example-SwaggerClient */; - targetProxy = B3F82AC3BCEB16AD74AA3091 /* PBXContainerItemProxy */; - }; - 7E019665346D67BA59BD3582 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-Expecta"; - target = C215F478D13D9D22D8E1EF48 /* Pods-SwaggerClient_Tests-Expecta */; - targetProxy = 3E167B43249502B18F5351AC /* PBXContainerItemProxy */; - }; - 8BD39B4AC51572C84586390B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-Specta"; - target = 5D6776B420CF321A265D866F /* Pods-SwaggerClient_Tests-Specta */; - targetProxy = 888799CCFD2AB4A92A9B4A4D /* PBXContainerItemProxy */; - }; - B158D90617991ACE7FF89C92 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-ISO8601"; - target = EC89492AC5A2DC4B6E6BC599 /* Pods-SwaggerClient_Example-ISO8601 */; - targetProxy = EF00F23BFB412FB1141D43C5 /* PBXContainerItemProxy */; - }; - B6FBD2C5C6EF1DBE5A3B8C0E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-AFNetworking"; - target = DDC8A358588D2A3B692812B1 /* Pods-SwaggerClient_Tests-AFNetworking */; - targetProxy = BDC82344596574309B6BB2A3 /* PBXContainerItemProxy */; - }; - BFFCF1DD85CC0EBDD4A15E6F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-AFNetworking"; - target = 58684BF8E23BF0837CADD868 /* Pods-SwaggerClient_Example-AFNetworking */; - targetProxy = F8D1ACE4B4B9D16C36898171 /* PBXContainerItemProxy */; - }; - E5E1ECE1FCFCE7D924A5661D /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-JSONModel"; - target = 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */; - targetProxy = C683E7A210CF97EA075DB68C /* PBXContainerItemProxy */; - }; - EC423479E5CD171647C2D9BE /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient"; - target = 0302FEB4C8D5554EBF417C18 /* Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient */; - targetProxy = E244661BA566E81A5E0825C1 /* PBXContainerItemProxy */; - }; - F5D78FECB621781EB73E6197 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "Pods-SwaggerClient_Example-JSONModel"; - target = 4B19C784C3E2E4F174682EE7 /* Pods-SwaggerClient_Example-JSONModel */; - targetProxy = F965A0DD3DF9CB139F6943BB /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 14C70FE0F9248716EE11B2CF /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_PREPROCESSOR_DEFINITIONS = "RELEASE=1"; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 2D9DCA05584D9947769124F1 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 30FCF9AEE90EB01477EEDD21 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 3C4D84B09966C1EBB9326178 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = JSONModel; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 3D5D5F3CF6A8D4D00622A305 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 3FC10A6D6960BC43BB20B853 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 49924A43BE9497F916594933 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D55054535D9C7D3FBA58D617 /* Pods-SwaggerClient_Example-JSONModel-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = JSONModel; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 4C2807B49537D196CE169CC2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A61413AE7365BA6BD1EC261F /* Pods-SwaggerClient_Tests.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_SwaggerClient_Tests; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 5929DBB10E29005DC83A3346 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Specta; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 6037561365806EA7912120B7 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = AFNetworking; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 6491E34213FA00ABA3EC3414 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - ONLY_ACTIVE_ARCH = YES; - STRIP_INSTALLED_PRODUCT = NO; - SYMROOT = "${SRCROOT}/../build"; - }; - name = Debug; - }; - 813A284274843355078ABEFF /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ISO8601; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 837088993F8D419A5048972B /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; - buildSettings = { - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 89426D48F1A5F252BA31BC19 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = AFNetworking; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 8D9F50000A71314C8478F819 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 8F3972E289E9835DAB0BA58A /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FE51F374F374508653EA274C /* Pods-SwaggerClient_Tests-Specta-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Specta; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - 99980674672C271843AEBE7D /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1284C207920C60CCFF057D06 /* Pods-SwaggerClient_Example.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_SwaggerClient_Example; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - 9EA376E3284FF916BB73C6C8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = JSONModel; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - A1ABD38F7BB787A7BB54FC0E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1964DA329721A95476AFBC20 /* Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - A3EF19A924851BE6C96D5843 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A3519105B4EF41F55126082D /* Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = AFNetworking; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - BDC2F51048C85553B9DC912C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 1186977B42F8F3FC21D1A7B9 /* Pods-SwaggerClient_Example.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_SwaggerClient_Example; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - BDECEB1160D6F35C0C30B5CB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = ISO8601; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - C13AFB5C5EFEEE7E88711C71 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 31E351B8D77A0BDD27675BDB /* Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = SwaggerClient; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - D6EDCE1A62BC8AC3F7F38CFF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4CC80CC87AB4F795DC536F6B /* Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = ISO8601; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - DDAB6F28ED3DCC0EF938E4CC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = AD2CE5220770BB6313C830B7 /* Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = AFNetworking; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - E0D8A215A8D61E60A12A1BFF /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Expecta; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - E8E4045C9D79BC1F23331F37 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EE23659824CABE7F3388FE27 /* Pods-SwaggerClient_Tests-Expecta-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Expecta; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - F6419E521DC6907A23B44A37 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9771D508607ABB6410B0BF9F /* Pods-SwaggerClient_Tests.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_SwaggerClient_Tests; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - F71480DA210FC6DFCC099C62 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 261CD7AA6DF0D6C7C0EBD146 /* Pods-SwaggerClient_Example-ISO8601-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ISO8601; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - F970345CB4D7E00494DA2170 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7A66B4F9A973BBBA0D4AF2D7 /* Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 7.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = JSONModel; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 0CA4D8762B52D96C8C564237 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-AFNetworking" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6037561365806EA7912120B7 /* Debug */, - A3EF19A924851BE6C96D5843 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 0CF9A436B18EF00915610CA8 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - A1ABD38F7BB787A7BB54FC0E /* Debug */, - 3FC10A6D6960BC43BB20B853 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 24A540001943BDE4C634EC51 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Specta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 5929DBB10E29005DC83A3346 /* Debug */, - 8F3972E289E9835DAB0BA58A /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 351BAE8D5BC62A097309ADC9 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 30FCF9AEE90EB01477EEDD21 /* Debug */, - 3D5D5F3CF6A8D4D00622A305 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 3D7EC3A64D24B9B21CAB0CB0 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 99980674672C271843AEBE7D /* Debug */, - BDC2F51048C85553B9DC912C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 440F2EB40823B7BE6C0366BF /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-ISO8601" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 813A284274843355078ABEFF /* Debug */, - D6EDCE1A62BC8AC3F7F38CFF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 45EDD505E7F0B8B9474DB404 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-AFNetworking" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - DDAB6F28ED3DCC0EF938E4CC /* Debug */, - 89426D48F1A5F252BA31BC19 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 6083D3A92D58EC4F28AE1B83 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 837088993F8D419A5048972B /* Debug */, - 2D9DCA05584D9947769124F1 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 85CDE45473383342737F8E25 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-JSONModel" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 3C4D84B09966C1EBB9326178 /* Debug */, - 49924A43BE9497F916594933 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8F5905F41630018F867BF0DD /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-JSONModel" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F970345CB4D7E00494DA2170 /* Debug */, - 9EA376E3284FF916BB73C6C8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 99E24E8C0F51BD67AFA23E56 /* Build configuration list for PBXProject "Pods" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 6491E34213FA00ABA3EC3414 /* Debug */, - 14C70FE0F9248716EE11B2CF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B99147797FD26A68689C683E /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-SwaggerClient" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - C13AFB5C5EFEEE7E88711C71 /* Debug */, - 8D9F50000A71314C8478F819 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - CE9D2C2EB73F81484282144B /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests-Expecta" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - E8E4045C9D79BC1F23331F37 /* Debug */, - E0D8A215A8D61E60A12A1BFF /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D30DD5D7DFF977FDA7B6BEF1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Tests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F6419E521DC6907A23B44A37 /* Debug */, - 4C2807B49537D196CE169CC2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - D60F77FE8CF69D3A0CE90DB1 /* Build configuration list for PBXNativeTarget "Pods-SwaggerClient_Example-ISO8601" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F71480DA210FC6DFCC099C62 /* Debug */, - BDECEB1160D6F35C0C30B5CB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 2773EB90C58135F3C1FC4A1B /* Project object */; -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme deleted file mode 100644 index a91c8dbe5a6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-AFNetworking.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme deleted file mode 100644 index ce67afc33a6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-ISO8601.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme deleted file mode 100644 index ac951f5cd52..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-JSONModel.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme deleted file mode 100644 index f605c7dd48e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme deleted file mode 100644 index 98577a45b4b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example-SwaggerClient.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme deleted file mode 100644 index c7fe2b95938..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Example.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme deleted file mode 100644 index 02301b1756c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-AFNetworking.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme deleted file mode 100644 index 1ce43043397..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Expecta.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme deleted file mode 100644 index 988d2641665..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-ISO8601.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme deleted file mode 100644 index 19eafa3c13f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-JSONModel.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme deleted file mode 100644 index deb7ff17324..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-Specta.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme deleted file mode 100644 index ab0552ad3e4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme deleted file mode 100644 index 81e7708f6eb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests-SwaggerClient.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme deleted file mode 100644 index 18a5bbb7e5f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/Pods-SwaggerClient_Tests.xcscheme +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index a8522689c17..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Pods.xcodeproj/xcuserdata/geekerzp.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,152 +0,0 @@ - - - - - SchemeUserState - - Pods-SwaggerClient_Example-AFNetworking.xcscheme - - isShown - - - Pods-SwaggerClient_Example-ISO8601.xcscheme - - isShown - - - Pods-SwaggerClient_Example-JSONModel.xcscheme - - isShown - - - Pods-SwaggerClient_Example-SwaggerClient-SwaggerClient.xcscheme - - isShown - - - Pods-SwaggerClient_Example-SwaggerClient.xcscheme - - isShown - - - Pods-SwaggerClient_Example.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-AFNetworking.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-Expecta.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-ISO8601.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-JSONModel.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-Specta.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-SwaggerClient-SwaggerClient.xcscheme - - isShown - - - Pods-SwaggerClient_Tests-SwaggerClient.xcscheme - - isShown - - - Pods-SwaggerClient_Tests.xcscheme - - isShown - - - - SuppressBuildableAutocreation - - 0302FEB4C8D5554EBF417C18 - - primary - - - 3D847D51CC40CEBA17C36758 - - primary - - - 4B19C784C3E2E4F174682EE7 - - primary - - - 58684BF8E23BF0837CADD868 - - primary - - - 586988C23CE1F40608512406 - - primary - - - 5D6776B420CF321A265D866F - - primary - - - 7DCA9F990FC46BE1EFE6E984 - - primary - - - 9A7195F471543DF0C0847DF5 - - primary - - - AF87B186D8CCE5424F3A8D43 - - primary - - - BBD665C31D4B21357533473D - - primary - - - C215F478D13D9D22D8E1EF48 - - primary - - - DDC8A358588D2A3B692812B1 - - primary - - - EC89492AC5A2DC4B6E6BC599 - - primary - - - F41FA180E243133D32149CC3 - - primary - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE deleted file mode 100644 index ca257c03c5a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -Copyright (c) 2012-2014 Specta Team. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md deleted file mode 100644 index f453a2eb6e6..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/README.md +++ /dev/null @@ -1,176 +0,0 @@ -# Specta - -A light-weight TDD / BDD framework for Objective-C. - -### Status -[![Build Status](https://travis-ci.org/specta/specta.png)](https://travis-ci.org/specta/specta) -[![Coverage Status](https://coveralls.io/repos/specta/specta/badge.svg)](https://coveralls.io/r/specta/specta) - -## FEATURES - -* An Objective-C RSpec-like BDD DSL -* Quick and easy set up -* Built on top of XCTest -* Excellent Xcode integration - -## SCREENSHOT - -![Specta Screenshot](https://raw.githubusercontent.com/specta/specta/master/misc/specta_screenshot.jpg) - -## SETUP - -Use [CocoaPods](http://github.com/CocoaPods/CocoaPods), [Carthage](https://github.com/carthage/carthage) or [Set up manually](#setting-up-manually) - -### CocoaPods - -1. Add Specta to your project's `Podfile`: - - ```ruby - target :MyApp do - # your app dependencies - end - - target :MyAppTests do - pod 'Specta', '~> 0.5' - # pod 'Expecta', '~> 0.3' # expecta matchers - # pod 'OCMock', '~> 2.2' # OCMock - # pod 'OCHamcrest', '~> 3.0' # hamcrest matchers - # pod 'OCMockito', '~> 1.0' # OCMock - # pod 'LRMocky', '~> 0.9' # LRMocky - end - ``` - -2. Run `pod update` or `pod install` in your project directory. - -### Carthage - -1. Add Specta to your project's `Cartfile.private` - - ``` - github "specta/specta" ~> 0.5 - ``` - -2. Run `carthage update` in your project directory -3. Drag the appropriate `Specta.framework` for your platform (located in Carthage/Build/) into your application’s Xcode project, and add it to your test target(s). -4. If you are building for iOS, a new `Run Script Phase` must be added to copy the framework. The instructions can be found on [Carthage's getting started instructions](https://github.com/carthage/carthage#getting-started) - -### SETTING UP MANUALLY - -1. Clone from Github. -2. Run `rake` in project root to build. -3. Add a "Cocoa/Cocoa Touch Unit Testing Bundle" target if you don't already have one. -4. Copy and add all header files in `Products` folder to the Test target in your Xcode project. -5. For **OS X projects**, copy and add `Specta.framework` in `Products/osx` folder to the test target in your Xcode project. - For **iOS projects**, copy and add `Specta.framework` in `Products/ios` folder to the test target in your Xcode project. - You can alternatively use `libSpecta.a`, if you prefer to add it as a static library for your project. (iOS 7 and below require this) -6. Add `-ObjC` and `-all_load` to the "Other Linker Flags" build setting for the test target in your Xcode project. -7. If you encounter linking issues with `_llvm_*` symbols, ensure your target's "Generate Test Coverage Files" and "Instrument Program Flow" build settings are set to `Yes`. - -## EXAMPLE - -```objective-c -#import // #import "Specta.h" if you're using libSpecta.a - -SharedExamplesBegin(MySharedExamples) -// Global shared examples are shared across all spec files. - -sharedExamplesFor(@"foo", ^(NSDictionary *data) { - __block id bar = nil; - beforeEach(^{ - bar = data[@"bar"]; - }); - it(@"should not be nil", ^{ - XCTAssertNotNil(bar); - }); -}); - -SharedExamplesEnd - -SpecBegin(Thing) - -describe(@"Thing", ^{ - sharedExamplesFor(@"another shared behavior", ^(NSDictionary *data) { - // Locally defined shared examples can override global shared examples within its scope. - }); - - beforeAll(^{ - // This is run once and only once before all of the examples - // in this group and before any beforeEach blocks. - }); - - beforeEach(^{ - // This is run before each example. - }); - - it(@"should do stuff", ^{ - // This is an example block. Place your assertions here. - }); - - it(@"should do some stuff asynchronously", ^{ - waitUntil(^(DoneCallback done) { - // Async example blocks need to invoke done() callback. - done(); - }); - }); - - itShouldBehaveLike(@"a shared behavior", @{@"key" : @"obj"}); - - itShouldBehaveLike(@"another shared behavior", ^{ - // Use a block that returns a dictionary if you need the context to be evaluated lazily, - // e.g. to use an object prepared in a beforeEach block. - return @{@"key" : @"obj"}; - }); - - describe(@"Nested examples", ^{ - it(@"should do even more stuff", ^{ - // ... - }); - }); - - pending(@"pending example"); - - pending(@"another pending example", ^{ - // ... - }); - - afterEach(^{ - // This is run after each example. - }); - - afterAll(^{ - // This is run once and only once after all of the examples - // in this group and after any afterEach blocks. - }); -}); - -SpecEnd -``` - -* `beforeEach` and `afterEach` are also aliased as `before` and `after` respectively. -* `describe` is also aliased as `context`. -* `it` is also aliased as `example` and `specify`. -* `itShouldBehaveLike` is also aliased as `itBehavesLike`. -* Use `pending` or prepend `x` to `describe`, `context`, `example`, `it`, and `specify` to mark examples or groups as pending. -* Use `^(DoneCallback done)` as shown in the example above to make examples wait for completion. `done()` callback needs to be invoked to let Specta know that your test is complete. The default timeout is 10.0 seconds but this can be changed by calling the function `setAsyncSpecTimeout(NSTimeInterval timeout)`. -* `(before|after)(Each/All)` also accept `^(DoneCallback done)`s. -* Do `#define SPT_CEDAR_SYNTAX` before importing Specta if you prefer to write `SPEC_BEGIN` and `SPEC_END` instead of `SpecBegin` and `SpecEnd`. -* Prepend `f` to your `describe`, `context`, `example`, `it`, and `specify` to set focus on examples or groups. When specs are focused, all unfocused specs are skipped. -* To use original XCTest reporter, set an environment variable named `SPECTA_REPORTER_CLASS` to `SPTXCTestReporter` in your test scheme. -* Set an environment variable `SPECTA_NO_SHUFFLE` with value `1` to disable test shuffling. -* Set an environment variable `SPECTA_SEED` to specify the random seed for test shuffling. - -Standard XCTest matchers such as `XCTAssertEqualObjects` and `XCTAssertNil` work, but you probably want to add a nicer matcher framework - [Expecta](http://github.com/specta/expecta/) to your setup. Or if you really prefer, [OCHamcrest](https://github.com/jonreid/OCHamcrest) works fine too. Also, add a mocking framework: [OCMock](http://ocmock.org/). - -## RUNNING TESTS IN COMMAND LINE - -* Run `rake test` in the cloned folder. - -## CONTRIBUTION GUIDELINES - -* Please use only spaces and indent 2 spaces at a time. -* Please prefix instance variable names with a single underscore (`_`). -* Please prefix custom classes and functions defined in the global scope with `SPT`. - -## LICENSE - -Copyright (c) 2012-2015 [Specta Team](https://github.com/specta?tab=members). This software is licensed under the [MIT License](http://github.com/specta/specta/raw/master/LICENSE). diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h deleted file mode 100644 index adcd3b0a130..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.h +++ /dev/null @@ -1,12 +0,0 @@ -#import - -@interface SPTCallSite : NSObject - -@property (nonatomic, copy, readonly) NSString *file; -@property (nonatomic, readonly) NSUInteger line; - -+ (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line; - -- (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m deleted file mode 100644 index 585cecd1316..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCallSite.m +++ /dev/null @@ -1,18 +0,0 @@ -#import "SPTCallSite.h" - -@implementation SPTCallSite - -+ (instancetype)callSiteWithFile:(NSString *)file line:(NSUInteger)line { - return [[self alloc] initWithFile:file line:line]; -} - -- (instancetype)initWithFile:(NSString *)file line:(NSUInteger)line { - self = [super init]; - if (self) { - _file = file; - _line = line; - } - return self; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h deleted file mode 100644 index adb3aaa4331..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.h +++ /dev/null @@ -1,17 +0,0 @@ -#import -#import "SpectaTypes.h" - -@interface SPTCompiledExample : NSObject - -@property (nonatomic, copy) NSString *name; -@property (nonatomic, copy) NSString *testCaseName; -@property (nonatomic, copy) SPTSpecBlock block; - -@property (nonatomic) BOOL pending; -@property (nonatomic, getter=isFocused) BOOL focused; - -@property (nonatomic) SEL testMethodSelector; - -- (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m deleted file mode 100644 index e7621655b98..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTCompiledExample.m +++ /dev/null @@ -1,17 +0,0 @@ -#import "SPTCompiledExample.h" - -@implementation SPTCompiledExample - -- (id)initWithName:(NSString *)name testCaseName:(NSString *)testCaseName block:(SPTSpecBlock)block pending:(BOOL)pending focused:(BOOL)focused { - self = [super init]; - if (self) { - self.name = name; - self.testCaseName = testCaseName; - self.block = block; - self.pending = pending; - self.focused = focused; - } - return self; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h deleted file mode 100644 index 849aacbccc8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.h +++ /dev/null @@ -1,17 +0,0 @@ -#import -#import "SpectaTypes.h" - -@class SPTCallSite; - -@interface SPTExample : NSObject - -@property (nonatomic, copy) NSString *name; -@property (nonatomic, retain) SPTCallSite *callSite; -@property (nonatomic, copy) SPTVoidBlock block; - -@property (nonatomic) BOOL pending; -@property (nonatomic, getter=isFocused) BOOL focused; - -- (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m deleted file mode 100644 index e5905a9d874..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExample.m +++ /dev/null @@ -1,17 +0,0 @@ -#import "SPTExample.h" - -@implementation SPTExample - -- (id)initWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block { - self = [super init]; - if (self) { - self.name = name; - self.callSite = callSite; - self.block = block; - self.focused = focused; - self.pending = block == nil; - } - return self; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h deleted file mode 100644 index f3d0060b55e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.h +++ /dev/null @@ -1,36 +0,0 @@ -#import -#import -#import "SpectaTypes.h" - -@class SPTExample; -@class SPTCallSite; - -@interface SPTExampleGroup : NSObject - -@property (nonatomic, copy) NSString *name; -@property (nonatomic, strong) SPTExampleGroup *root; -@property (nonatomic, strong) SPTExampleGroup *parent; -@property (nonatomic, strong) NSMutableArray *children; -@property (nonatomic, strong) NSMutableArray *beforeAllArray; -@property (nonatomic, strong) NSMutableArray *afterAllArray; -@property (nonatomic, strong) NSMutableArray *beforeEachArray; -@property (nonatomic, strong) NSMutableArray *afterEachArray; -@property (nonatomic, strong) NSMutableDictionary *sharedExamples; -@property (nonatomic) unsigned int exampleCount; -@property (nonatomic) unsigned int ranExampleCount; -@property (nonatomic) unsigned int pendingExampleCount; -@property (nonatomic, getter=isFocused) BOOL focused; - -- (id)initWithName:(NSString *)name parent:(SPTExampleGroup *)parent root:(SPTExampleGroup *)root; - -- (SPTExampleGroup *)addExampleGroupWithName:(NSString *)name focused:(BOOL)focused; -- (SPTExample *)addExampleWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block; - -- (void)addBeforeAllBlock:(SPTVoidBlock)block; -- (void)addAfterAllBlock:(SPTVoidBlock)block; -- (void)addBeforeEachBlock:(SPTVoidBlock)block; -- (void)addAfterEachBlock:(SPTVoidBlock)block; - -- (NSArray *)compileExamplesWithStack:(NSArray *)stack; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m deleted file mode 100644 index cf518004f5e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExampleGroup.m +++ /dev/null @@ -1,335 +0,0 @@ -#import "SPTExampleGroup.h" -#import "SPTExample.h" -#import "SPTCompiledExample.h" -#import "SPTSpec.h" -#import "SpectaUtility.h" -#import "XCTest+Private.h" -#import "SPTGlobalBeforeAfterEach.h" -#import -#import - -static NSArray *ClassesWithClassMethod(SEL classMethodSelector) { - NSMutableArray *classesWithClassMethod = [[NSMutableArray alloc] init]; - - int numberOfClasses = objc_getClassList(NULL, 0); - if (numberOfClasses > 0) { - Class *classes = (Class *)malloc(sizeof(Class) *numberOfClasses); - numberOfClasses = objc_getClassList(classes, numberOfClasses); - - for(int classIndex = 0; classIndex < numberOfClasses; classIndex++) { - Class aClass = classes[classIndex]; - - if (class_conformsToProtocol(aClass, @protocol(SPTGlobalBeforeAfterEach))) { - Method globalMethod = class_getClassMethod(aClass, classMethodSelector); - if (globalMethod) { - [classesWithClassMethod addObject:aClass]; - } - } - } - - free(classes); - } - - return classesWithClassMethod; -} - -static void runExampleBlock(void (^block)(), NSString *name) { - if (!SPTIsBlock(block)) { - return; - } - - ((SPTVoidBlock)block)(); -} - -typedef NS_ENUM(NSInteger, SPTExampleGroupOrder) { - SPTExampleGroupOrderOutermostFirst = 1, - SPTExampleGroupOrderInnermostFirst -}; - -@interface SPTExampleGroup () - -- (void)incrementExampleCount; -- (void)incrementPendingExampleCount; -- (void)resetRanExampleCountIfNeeded; -- (void)incrementRanExampleCount; -- (void)runBeforeHooks:(NSString *)compiledName; -- (void)runBeforeAllHooks:(NSString *)compiledName; -- (void)runBeforeEachHooks:(NSString *)compiledName; -- (void)runAfterHooks:(NSString *)compiledName; -- (void)runAfterEachHooks:(NSString *)compiledName; -- (void)runAfterAllHooks:(NSString *)compiledName; - -@end - -@implementation SPTExampleGroup - -- (id)init { - self = [super init]; - if (self) { - self.name = nil; - self.root = nil; - self.parent = nil; - self.children = [NSMutableArray array]; - self.beforeAllArray = [NSMutableArray array]; - self.afterAllArray = [NSMutableArray array]; - self.beforeEachArray = [NSMutableArray array]; - self.afterEachArray = [NSMutableArray array]; - self.sharedExamples = [NSMutableDictionary dictionary]; - self.exampleCount = 0; - self.pendingExampleCount = 0; - self.ranExampleCount = 0; - } - return self; -} - -- (id)initWithName:(NSString *)name parent:(SPTExampleGroup *)parent root:(SPTExampleGroup *)root { - self = [self init]; - if (self) { - self.name = name; - self.parent = parent; - self.root = root; - } - return self; -} - -- (SPTExampleGroup *)addExampleGroupWithName:(NSString *)name focused:(BOOL)focused { - SPTExampleGroup *group = [[SPTExampleGroup alloc] initWithName:name parent:self root:self.root]; - group.focused = focused; - [self.children addObject:group]; - return group; -} - -- (SPTExample *)addExampleWithName:(NSString *)name callSite:(SPTCallSite *)callSite focused:(BOOL)focused block:(SPTVoidBlock)block { - SPTExample *example; - @synchronized(self) { - example = [[SPTExample alloc] initWithName:name callSite:callSite focused:focused block:block]; - [self.children addObject:example]; - - [self incrementExampleCount]; - if (example.pending) { - [self incrementPendingExampleCount]; - } - } - return example; -} - -- (void)incrementExampleCount { - SPTExampleGroup *group = self; - while (group != nil) { - group.exampleCount ++; - group = group.parent; - } -} - -- (void)incrementPendingExampleCount { - SPTExampleGroup *group = self; - while (group != nil) { - group.pendingExampleCount ++; - group = group.parent; - } -} - -- (void)resetRanExampleCountIfNeeded { - SPTExampleGroup *group = self; - while (group != nil) { - if (group.ranExampleCount >= group.exampleCount) { - group.ranExampleCount = 0; - } - group = group.parent; - } -} - -- (void)incrementRanExampleCount { - SPTExampleGroup *group = self; - while (group != nil) { - group.ranExampleCount ++; - group = group.parent; - } -} - -- (void)addBeforeAllBlock:(SPTVoidBlock)block { - if (!block) return; - [self.beforeAllArray addObject:[block copy]]; -} - -- (void)addAfterAllBlock:(SPTVoidBlock)block { - if (!block) return; - [self.afterAllArray addObject:[block copy]]; -} - -- (void)addBeforeEachBlock:(SPTVoidBlock)block { - if (!block) return; - [self.beforeEachArray addObject:[block copy]]; -} - -- (void)addAfterEachBlock:(SPTVoidBlock)block { - if (!block) return; - [self.afterEachArray addObject:[block copy]]; -} - -- (void)runGlobalBeforeEachHooks:(NSString *)compiledName { - static NSArray *globalBeforeEachClasses; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - globalBeforeEachClasses = ClassesWithClassMethod(@selector(beforeEach)); - }); - - for (Class class in globalBeforeEachClasses) { - [class beforeEach]; - } -} - -- (void)runGlobalAfterEachHooks:(NSString *)compiledName { - static NSArray *globalAfterEachClasses; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - globalAfterEachClasses = ClassesWithClassMethod(@selector(afterEach)); - }); - - for (Class class in globalAfterEachClasses) { - [class afterEach]; - } -} - -// Builds an array of example groups that enclose the current group. -// When in innermost-first order, the most deeply nested example groups, -// beginning with self, are placed at the beginning of the array. -// When in outermost-first order, the opposite is true, and the last -// group in the array (self) is the most deeply nested. -- (NSArray *)exampleGroupStackInOrder:(SPTExampleGroupOrder)order { - NSMutableArray *groups = [NSMutableArray array]; - SPTExampleGroup *group = self; - while (group != nil) { - switch (order) { - case SPTExampleGroupOrderOutermostFirst: - [groups insertObject:group atIndex:0]; - break; - case SPTExampleGroupOrderInnermostFirst: - [groups addObject:group]; - break; - } - group = group.parent; - } - - return [groups copy]; -} - -- (void)runBeforeHooks:(NSString *)compiledName { - [self runBeforeAllHooks:compiledName]; - [self runBeforeEachHooks:compiledName]; -} - -- (void)runBeforeAllHooks:(NSString *)compiledName { - for(SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderOutermostFirst]) { - if (group.ranExampleCount == 0) { - for (id beforeAllBlock in group.beforeAllArray) { - runExampleBlock(beforeAllBlock, [NSString stringWithFormat:@"%@ - before all block", compiledName]); - } - } - } -} - -- (void)runBeforeEachHooks:(NSString *)compiledName { - [self runGlobalBeforeEachHooks:compiledName]; - for (SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderOutermostFirst]) { - for (id beforeEachBlock in group.beforeEachArray) { - runExampleBlock(beforeEachBlock, [NSString stringWithFormat:@"%@ - before each block", compiledName]); - } - } -} - -- (void)runAfterHooks:(NSString *)compiledName { - [self runAfterEachHooks:compiledName]; - [self runAfterAllHooks:compiledName]; -} - -- (void)runAfterEachHooks:(NSString *)compiledName { - for (SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderInnermostFirst]) { - for (id afterEachBlock in group.afterEachArray) { - runExampleBlock(afterEachBlock, [NSString stringWithFormat:@"%@ - after each block", compiledName]); - } - } - [self runGlobalAfterEachHooks:compiledName]; -} - -- (void)runAfterAllHooks:(NSString *)compiledName { - for (SPTExampleGroup *group in [self exampleGroupStackInOrder:SPTExampleGroupOrderInnermostFirst]) { - if (group.ranExampleCount == group.exampleCount) { - for (id afterAllBlock in group.afterAllArray) { - runExampleBlock(afterAllBlock, [NSString stringWithFormat:@"%@ - after all block", compiledName]); - } - } - } -} - -- (BOOL)isFocusedOrHasFocusedAncestor { - SPTExampleGroup *ancestor = self; - while (ancestor != nil) { - if (ancestor.focused) { - return YES; - } else { - ancestor = ancestor.parent; - } - } - - return NO; -} - -- (NSArray *)compileExamplesWithStack:(NSArray *)stack { - BOOL groupIsFocusedOrHasFocusedAncestor = [self isFocusedOrHasFocusedAncestor]; - - NSArray *compiled = @[]; - - for(id child in self.children) { - if ([child isKindOfClass:[SPTExampleGroup class]]) { - SPTExampleGroup *group = child; - NSArray *newStack = [stack arrayByAddingObject:group]; - compiled = [compiled arrayByAddingObjectsFromArray:[group compileExamplesWithStack:newStack]]; - - } else if ([child isKindOfClass:[SPTExample class]]) { - SPTExample *example = child; - NSArray *newStack = [stack arrayByAddingObject:example]; - - NSString *compiledName = [spt_map(newStack, ^id(id obj, NSUInteger idx) { - return [obj name]; - }) componentsJoinedByString:@" "]; - - NSString *testCaseName = [spt_map(newStack, ^id(id obj, NSUInteger idx) { - return spt_underscorize([obj name]); - }) componentsJoinedByString:@"__"]; - - // If example is pending, run only before- and after-all hooks. - // Otherwise, run the example and all before and after hooks. - SPTSpecBlock compiledBlock = example.pending ? ^(SPTSpec *spec){ - @synchronized(self.root) { - [self resetRanExampleCountIfNeeded]; - [self runBeforeAllHooks:compiledName]; - [self incrementRanExampleCount]; - [self runAfterAllHooks:compiledName]; - } - } : ^(SPTSpec *spec) { - @synchronized(self.root) { - [self resetRanExampleCountIfNeeded]; - [self runBeforeHooks:compiledName]; - } - @try { - runExampleBlock(example.block, compiledName); - } - @catch(NSException *e) { - [spec spt_handleException:e]; - } - @finally { - @synchronized(self.root) { - [self incrementRanExampleCount]; - [self runAfterHooks:compiledName]; - } - } - }; - SPTCompiledExample *compiledExample = [[SPTCompiledExample alloc] initWithName:compiledName testCaseName:testCaseName block:compiledBlock pending:example.pending focused:(groupIsFocusedOrHasFocusedAncestor || example.focused)]; - compiled = [compiled arrayByAddingObject:compiledExample]; - } - } - return compiled; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h deleted file mode 100644 index 9581f0bc75d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTExcludeGlobalBeforeAfterEach.h +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright (c) 2015 Specta Team. All rights reserved. - */ -#import - -// This protocol was used for blacklisting classes for global beforeEach and afterEach blocks. -// Now, instead, classes are whitelisted by implementing the SPTGlobalBeforeAfterEach protocol. -__deprecated_msg("Please whitelist classes instead with the SPTGlobalBeforeAfterEach protocol") -@protocol SPTExcludeGlobalBeforeAfterEach -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h deleted file mode 100644 index 490359ddf4e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTGlobalBeforeAfterEach.h +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright (c) 2015 Specta Team. All rights reserved. - */ -#import - -// This protocol is used for whitelisting classes for global beforeEach and afterEach blocks. -// If you want a class to participate in those just add this protocol to a category and it will be -// included. -@protocol SPTGlobalBeforeAfterEach - -@optional -+ (void)beforeEach; -+ (void)afterEach; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h deleted file mode 100644 index 090acba799d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.h +++ /dev/null @@ -1,17 +0,0 @@ -#import -#import -#import - -@class _XCTestCaseImplementation; - -@class SPTExampleGroup; - -@interface SPTSharedExampleGroups : XCTestCase - -+ (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup; -+ (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup; - -- (void)sharedExampleGroups; - -@end - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m deleted file mode 100644 index 35b405c10f3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSharedExampleGroups.m +++ /dev/null @@ -1,74 +0,0 @@ -#import "SPTSharedExampleGroups.h" -#import "SPTExampleGroup.h" -#import "SPTSpec.h" -#import "SpectaUtility.h" -#import - -NSMutableDictionary *globalSharedExampleGroups = nil; -BOOL initialized = NO; - -@implementation SPTSharedExampleGroups - -+ (void)initialize { - Class SPTSharedExampleGroupsClass = [SPTSharedExampleGroups class]; - if ([self class] == SPTSharedExampleGroupsClass) { - if (!initialized) { - initialized = YES; - globalSharedExampleGroups = [[NSMutableDictionary alloc] init]; - - Class *classes = NULL; - int numClasses = objc_getClassList(NULL, 0); - - if (numClasses > 0) { - classes = (Class *)malloc(sizeof(Class) * numClasses); - numClasses = objc_getClassList(classes, numClasses); - - Class klass, superClass; - for(uint i = 0; i < numClasses; i++) { - klass = classes[i]; - superClass = class_getSuperclass(klass); - if (superClass == SPTSharedExampleGroupsClass) { - [[[klass alloc] init] sharedExampleGroups]; - } - } - - free(classes); - } - } - } -} - -+ (void)addSharedExampleGroupWithName:(NSString *)name block:(SPTDictionaryBlock)block exampleGroup:(SPTExampleGroup *)exampleGroup { - (exampleGroup == nil ? globalSharedExampleGroups : exampleGroup.sharedExamples)[name] = [block copy]; -} - -+ (SPTDictionaryBlock)sharedExampleGroupWithName:(NSString *)name exampleGroup:(SPTExampleGroup *)exampleGroup { - SPTDictionaryBlock sharedExampleGroup = nil; - while (exampleGroup != nil) { - if ((sharedExampleGroup = exampleGroup.sharedExamples[name])) { - return sharedExampleGroup; - } - exampleGroup = exampleGroup.parent; - } - return globalSharedExampleGroups[name]; -} - -- (void)sharedExampleGroups {} - -- (void)spt_handleException:(NSException *)exception { - [SPTCurrentSpec spt_handleException:exception]; -} - -- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected { - [SPTCurrentSpec recordFailureWithDescription:description inFile:filename atLine:lineNumber expected:expected]; -} - -- (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception { - [SPTCurrentSpec _recordUnexpectedFailureWithDescription:description exception:exception]; -} - -- (_XCTestCaseImplementation *)internalImplementation { - return [SPTCurrentSpec internalImplementation]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h deleted file mode 100644 index ada4ea2d717..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.h +++ /dev/null @@ -1,28 +0,0 @@ -#import -#import - -@class - SPTTestSuite -, SPTCompiledExample -; - -@interface SPTSpec : XCTestCase - -@property (strong) XCTestCaseRun *spt_run; -@property (nonatomic) BOOL spt_pending; -@property (nonatomic) BOOL spt_skipped; - -+ (BOOL)spt_isDisabled; -+ (void)spt_setDisabled:(BOOL)disabled; -+ (BOOL)spt_focusedExamplesExist; -+ (SEL)spt_convertToTestMethod:(SPTCompiledExample *)example; -+ (SPTTestSuite *)spt_testSuite; -+ (void)spt_setCurrentTestSuite; -+ (void)spt_unsetCurrentTestSuite; -+ (void)spt_setCurrentTestSuiteFileName:(NSString *)fileName lineNumber:(NSUInteger)lineNumber; - -- (void)spec; -- (BOOL)spt_shouldRunExample:(SPTCompiledExample *)example; -- (void)spt_runExample:(SPTCompiledExample *)example; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m deleted file mode 100644 index 76717830326..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTSpec.m +++ /dev/null @@ -1,209 +0,0 @@ -#import "SPTSpec.h" -#import "SPTTestSuite.h" -#import "SPTCompiledExample.h" -#import "SPTSharedExampleGroups.h" -#import "SpectaUtility.h" -#import -#import "XCTest+Private.h" - -@implementation SPTSpec - -+ (void)initialize { - [SPTSharedExampleGroups initialize]; - SPTTestSuite *testSuite = [[SPTTestSuite alloc] init]; - SPTSpec *spec = [[[self class] alloc] init]; - NSString *specName = NSStringFromClass([self class]); - objc_setAssociatedObject(self, "spt_testSuite", testSuite, OBJC_ASSOCIATION_RETAIN_NONATOMIC); - [self spt_setCurrentTestSuite]; - @try { - [spec spec]; - } - @catch (NSException *exception) { - fprintf(stderr, "%s: An exception has occured outside of tests, aborting.\n\n%s (%s) \n", [specName UTF8String], [[exception name] UTF8String], [[exception reason] UTF8String]); - if ([exception respondsToSelector:@selector(callStackSymbols)]) { - NSArray *callStackSymbols = [exception callStackSymbols]; - if (callStackSymbols) { - NSString *callStack = [NSString stringWithFormat:@"\n Call Stack:\n %@\n", [callStackSymbols componentsJoinedByString:@"\n "]]; - fprintf(stderr, "%s", [callStack UTF8String]); - } - } - exit(1); - } - @finally { - [self spt_unsetCurrentTestSuite]; - } - [testSuite compile]; - [super initialize]; -} - -+ (SPTTestSuite *)spt_testSuite { - return objc_getAssociatedObject(self, "spt_testSuite"); -} - -+ (BOOL)spt_isDisabled { - return [self spt_testSuite].disabled; -} - -+ (void)spt_setDisabled:(BOOL)disabled { - [self spt_testSuite].disabled = disabled; -} - -+ (NSArray *)spt_allSpecClasses { - static NSArray *allSpecClasses = nil; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - - NSMutableArray *specClasses = [[NSMutableArray alloc] init]; - - int numberOfClasses = objc_getClassList(NULL, 0); - if (numberOfClasses > 0) { - Class *classes = (Class *)malloc(sizeof(Class) * numberOfClasses); - numberOfClasses = objc_getClassList(classes, numberOfClasses); - - for (int classIndex = 0; classIndex < numberOfClasses; classIndex++) { - Class aClass = classes[classIndex]; - if (spt_isSpecClass(aClass)) { - [specClasses addObject:aClass]; - } - } - - free(classes); - } - - allSpecClasses = [specClasses copy]; - }); - - return allSpecClasses; -} - -+ (BOOL)spt_focusedExamplesExist { - for (Class specClass in [self spt_allSpecClasses]) { - SPTTestSuite *testSuite = [specClass spt_testSuite]; - if (testSuite.disabled == NO && [testSuite hasFocusedExamples]) { - return YES; - } - } - - return NO; -} - -+ (SEL)spt_convertToTestMethod:(SPTCompiledExample *)example { - @synchronized(example) { - if (!example.testMethodSelector) { - IMP imp = imp_implementationWithBlock(^(SPTSpec *self) { - [self spt_runExample:example]; - }); - - SEL sel; - unsigned int i = 0; - - do { - i++; - if (i == 1) { - sel = NSSelectorFromString([NSString stringWithFormat:@"test_%@", example.testCaseName]); - } else { - sel = NSSelectorFromString([NSString stringWithFormat:@"test_%@_%u", example.testCaseName, i]); - } - } while([self instancesRespondToSelector:sel]); - - class_addMethod(self, sel, imp, "@@:"); - example.testMethodSelector = sel; - } - } - - return example.testMethodSelector; -} - -+ (void)spt_setCurrentTestSuite { - SPTTestSuite *testSuite = [self spt_testSuite]; - [[NSThread currentThread] threadDictionary][spt_kCurrentTestSuiteKey] = testSuite; -} - -+ (void)spt_unsetCurrentTestSuite { - [[[NSThread currentThread] threadDictionary] removeObjectForKey:spt_kCurrentTestSuiteKey]; -} - -+ (void)spt_setCurrentTestSuiteFileName:(NSString *)fileName lineNumber:(NSUInteger)lineNumber { - SPTTestSuite *testSuite = [self spt_testSuite]; - testSuite.fileName = fileName; - testSuite.lineNumber = lineNumber; -} - -- (void)spec {} - -- (BOOL)spt_shouldRunExample:(SPTCompiledExample *)example { - return [[self class] spt_isDisabled] == NO && - (example.focused || [[self class] spt_focusedExamplesExist] == NO); -} - -- (void)spt_runExample:(SPTCompiledExample *)example { - [[NSThread currentThread] threadDictionary][spt_kCurrentSpecKey] = self; - - if ([self spt_shouldRunExample:example]) { - self.spt_pending = example.pending; - example.block(self); - } else if (!example.pending) { - self.spt_skipped = YES; - } - - [[[NSThread currentThread] threadDictionary] removeObjectForKey:spt_kCurrentSpecKey]; -} - -#pragma mark - XCTestCase overrides - -+ (NSArray *)testInvocations { - NSArray *compiledExamples = [self spt_testSuite].compiledExamples; - [NSMutableArray arrayWithCapacity:[compiledExamples count]]; - - NSMutableSet *addedSelectors = [NSMutableSet setWithCapacity:[compiledExamples count]]; - NSMutableArray *selectors = [NSMutableArray arrayWithCapacity:[compiledExamples count]]; - - // dynamically generate test methods with compiled examples - for (SPTCompiledExample *example in compiledExamples) { - SEL sel = [self spt_convertToTestMethod:example]; - NSString *selName = NSStringFromSelector(sel); - [selectors addObject: selName]; - [addedSelectors addObject: selName]; - } - - // look for any other test methods that may be present in class. - unsigned int n; - Method *imethods = class_copyMethodList(self, &n); - - for (NSUInteger i = 0; i < n; i++) { - struct objc_method_description *desc = method_getDescription(imethods[i]); - - char *types = desc->types; - SEL sel = desc->name; - NSString *selName = NSStringFromSelector(sel); - - if (strcmp(types, "@@:") == 0 && [selName hasPrefix:@"test"] && ![addedSelectors containsObject:selName]) { - [selectors addObject:NSStringFromSelector(sel)]; - } - } - - free(imethods); - - // create invocations from test method selectors - NSMutableArray *invocations = [NSMutableArray arrayWithCapacity:[selectors count]]; - for (NSString *selName in selectors) { - SEL sel = NSSelectorFromString(selName); - NSInvocation *inv = [NSInvocation invocationWithMethodSignature:[self instanceMethodSignatureForSelector:sel]]; - [inv setSelector:sel]; - [invocations addObject:inv]; - } - - return spt_shuffle(invocations); -} - -- (void)recordFailureWithDescription:(NSString *)description inFile:(NSString *)filename atLine:(NSUInteger)lineNumber expected:(BOOL)expected { - SPTSpec *currentSpec = SPTCurrentSpec; - [currentSpec.spt_run recordFailureWithDescription:description inFile:filename atLine:lineNumber expected:expected]; -} - -- (void)performTest:(XCTestRun *)run { - self.spt_run = (XCTestCaseRun *)run; - [super performTest:run]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h deleted file mode 100644 index 9bd90162d5f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.h +++ /dev/null @@ -1,21 +0,0 @@ -#import - -@class - SPTExample -, SPTExampleGroup -; - -@interface SPTTestSuite : NSObject - -@property (nonatomic, strong) SPTExampleGroup *rootGroup; -@property (nonatomic, strong) NSMutableArray *groupStack; -@property (nonatomic, strong) NSArray *compiledExamples; -@property (nonatomic, copy) NSString *fileName; -@property (nonatomic) NSUInteger lineNumber; -@property (nonatomic, getter = isDisabled) BOOL disabled; -@property (nonatomic) BOOL hasFocusedExamples; - -- (SPTExampleGroup *)currentGroup; -- (void)compile; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m deleted file mode 100644 index 7053edd6972..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SPTTestSuite.m +++ /dev/null @@ -1,31 +0,0 @@ -#import "SPTTestSuite.h" -#import "SPTExampleGroup.h" -#import "SPTCompiledExample.h" - -@implementation SPTTestSuite - -- (id)init { - self = [super init]; - if (self) { - self.rootGroup = [[SPTExampleGroup alloc] init]; - self.rootGroup.root = self.rootGroup; - self.groupStack = [NSMutableArray arrayWithObject:self.rootGroup]; - } - return self; -} - -- (SPTExampleGroup *)currentGroup { - return [self.groupStack lastObject]; -} - -- (void)compile { - self.compiledExamples = [self.rootGroup compileExamplesWithStack:@[]]; - for (SPTCompiledExample *example in self.compiledExamples) { - if (example.focused) { - self.hasFocusedExamples = YES; - break; - } - } -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h deleted file mode 100644 index dda17f915a8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/Specta.h +++ /dev/null @@ -1,14 +0,0 @@ -#import -#import - -//! Project version number for Specta. -FOUNDATION_EXPORT double SpectaVersionNumber; - -//! Project version string for Specta. -FOUNDATION_EXPORT const unsigned char SpectaVersionString[]; - -// In this header, you should import all the public headers of your framework using statements like #import - -#import -#import -#import diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h deleted file mode 100644 index 284d4f54092..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.h +++ /dev/null @@ -1,90 +0,0 @@ -#import - -#define SpecBegin(name) _SPTSpecBegin(name, __FILE__, __LINE__) -#define SpecEnd _SPTSpecEnd - -#define SharedExamplesBegin(name) _SPTSharedExampleGroupsBegin(name) -#define SharedExamplesEnd _SPTSharedExampleGroupsEnd -#define SharedExampleGroupsBegin(name) _SPTSharedExampleGroupsBegin(name) -#define SharedExampleGroupsEnd _SPTSharedExampleGroupsEnd - -typedef void (^DoneCallback)(void); - -OBJC_EXTERN void describe(NSString *name, void (^block)()); -OBJC_EXTERN void fdescribe(NSString *name, void (^block)()); - -OBJC_EXTERN void context(NSString *name, void (^block)()); -OBJC_EXTERN void fcontext(NSString *name, void (^block)()); - -OBJC_EXTERN void it(NSString *name, void (^block)()); -OBJC_EXTERN void fit(NSString *name, void (^block)()); - -OBJC_EXTERN void example(NSString *name, void (^block)()); -OBJC_EXTERN void fexample(NSString *name, void (^block)()); - -OBJC_EXTERN void specify(NSString *name, void (^block)()); -OBJC_EXTERN void fspecify(NSString *name, void (^block)()); - -#define pending(...) spt_pending_(__VA_ARGS__, nil) -#define xdescribe(...) spt_pending_(__VA_ARGS__, nil) -#define xcontext(...) spt_pending_(__VA_ARGS__, nil) -#define xexample(...) spt_pending_(__VA_ARGS__, nil) -#define xit(...) spt_pending_(__VA_ARGS__, nil) -#define xspecify(...) spt_pending_(__VA_ARGS__, nil) - -OBJC_EXTERN void beforeAll(void (^block)()); -OBJC_EXTERN void afterAll(void (^block)()); - -OBJC_EXTERN void beforeEach(void (^block)()); -OBJC_EXTERN void afterEach(void (^block)()); - -OBJC_EXTERN void before(void (^block)()); -OBJC_EXTERN void after(void (^block)()); - -OBJC_EXTERN void sharedExamplesFor(NSString *name, void (^block)(NSDictionary *data)); -OBJC_EXTERN void sharedExamples(NSString *name, void (^block)(NSDictionary *data)); - -#define itShouldBehaveLike(...) spt_itShouldBehaveLike_(@(__FILE__), __LINE__, __VA_ARGS__) -#define itBehavesLike(...) spt_itShouldBehaveLike_(@(__FILE__), __LINE__, __VA_ARGS__) - -OBJC_EXTERN void waitUntil(void (^block)(DoneCallback done)); -/** - * Runs the @c block and waits until the @c done block is called or the - * @c timeout has passed. - * - * @param timeout timeout for this @c block only; does not affect the global - * timeout, as @c setAsyncSpecTimeout() does. - * @param ^block runs test code - */ -OBJC_EXTERN void waitUntilTimeout(NSTimeInterval timeout, void (^block)(DoneCallback done)); - -OBJC_EXTERN void setAsyncSpecTimeout(NSTimeInterval timeout); - -// ---------------------------------------------------------------------------- - -#define _SPTSpecBegin(name, file, line) \ -@interface name##Spec : SPTSpec \ -@end \ -@implementation name##Spec \ -- (void)spec { \ - [[self class] spt_setCurrentTestSuiteFileName:(@(file)) lineNumber:(line)]; - -#define _SPTSpecEnd \ -} \ -@end - -#define _SPTSharedExampleGroupsBegin(name) \ -@interface name##SharedExampleGroups : SPTSharedExampleGroups \ -@end \ -@implementation name##SharedExampleGroups \ -- (void)sharedExampleGroups { - -#define _SPTSharedExampleGroupsEnd \ -} \ -@end - -OBJC_EXTERN void spt_it_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()); -OBJC_EXTERN void spt_fit_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()); -OBJC_EXTERN void spt_pending_(NSString *name, ...); -OBJC_EXTERN void spt_itShouldBehaveLike_(NSString *fileName, NSUInteger lineNumber, NSString *name, id dictionaryOrBlock); -OBJC_EXTERN void spt_itShouldBehaveLike_block(NSString *fileName, NSUInteger lineNumber, NSString *name, NSDictionary *(^block)()); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m deleted file mode 100644 index 10edcd56a70..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaDSL.m +++ /dev/null @@ -1,189 +0,0 @@ -#import "SpectaDSL.h" -#import "SpectaTypes.h" -#import "SpectaUtility.h" -#import "SPTTestSuite.h" -#import "SPTExampleGroup.h" -#import "SPTSharedExampleGroups.h" -#import "SPTSpec.h" -#import "SPTCallSite.h" -#import - -static NSTimeInterval asyncSpecTimeout = 10.0; - -static void spt_defineItBlock(NSString *name, NSString *fileName, NSUInteger lineNumber, BOOL focused, void (^block)()) { - SPTReturnUnlessBlockOrNil(block); - SPTCallSite *site = nil; - if (lineNumber && fileName) { - site = [SPTCallSite callSiteWithFile:fileName line:lineNumber]; - } - [SPTCurrentGroup addExampleWithName:name callSite:site focused:focused block:block]; -} - -static void spt_defineDescribeBlock(NSString *name, BOOL focused, void (^block)()) { - if (block) { - [SPTGroupStack addObject:[SPTCurrentGroup addExampleGroupWithName:name focused:focused]]; - block(); - [SPTGroupStack removeLastObject]; - } else { - spt_defineItBlock(name, nil, 0, focused, nil); - } -} - -void spt_it_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()) { - spt_defineItBlock(name, fileName, lineNumber, NO, block); -} - -void spt_fit_(NSString *name, NSString *fileName, NSUInteger lineNumber, void (^block)()) { - spt_defineItBlock(name, fileName, lineNumber, YES, block); -} - -void spt_pending_(NSString *name, ...) { - spt_defineItBlock(name, nil, 0, NO, nil); -} - -void spt_itShouldBehaveLike_(NSString *fileName, NSUInteger lineNumber, NSString *name, id dictionaryOrBlock) { - SPTDictionaryBlock block = [SPTSharedExampleGroups sharedExampleGroupWithName:name exampleGroup:SPTCurrentGroup]; - if (block) { - if (SPTIsBlock(dictionaryOrBlock)) { - id (^dataBlock)(void) = [dictionaryOrBlock copy]; - - describe(name, ^{ - __block NSMutableDictionary *dataDict = [[NSMutableDictionary alloc] init]; - - beforeEach(^{ - NSDictionary *blockData = dataBlock(); - [dataDict removeAllObjects]; - [dataDict addEntriesFromDictionary:blockData]; - }); - - block(dataDict); - - afterAll(^{ - dataDict = nil; - }); - }); - } else { - NSDictionary *data = dictionaryOrBlock; - - describe(name, ^{ - block(data); - }); - } - } else { - SPTSpec *currentSpec = SPTCurrentSpec; - if (currentSpec) { - [currentSpec recordFailureWithDescription:@"itShouldBehaveLike should not be invoked inside an example block!" inFile:fileName atLine:lineNumber expected:NO]; - } else { - it(name, ^{ - [SPTCurrentSpec recordFailureWithDescription:[NSString stringWithFormat:@"Shared example group \"%@\" does not exist.", name] inFile:fileName atLine:lineNumber expected:NO]; - }); - } - } -} - -void spt_itShouldBehaveLike_block(NSString *fileName, NSUInteger lineNumber, NSString *name, NSDictionary *(^block)()) { - spt_itShouldBehaveLike_(fileName, lineNumber, name, (id)block); -} - -void describe(NSString *name, void (^block)()) { - spt_defineDescribeBlock(name, NO, block); -} - -void fdescribe(NSString *name, void (^block)()) { - spt_defineDescribeBlock(name, YES, block); -} - -void context(NSString *name, void (^block)()) { - describe(name, block); -} - -void fcontext(NSString *name, void (^block)()) { - fdescribe(name, block); -} - -void it(NSString *name, void (^block)()) { - spt_defineItBlock(name, nil, 0, NO, block); -} - -void fit(NSString *name, void (^block)()) { - spt_defineItBlock(name, nil, 0, YES, block); -} - -void example(NSString *name, void (^block)()) { - it(name, block); -} - -void fexample(NSString *name, void (^block)()) { - fit(name, block); -} - -void specify(NSString *name, void (^block)()) { - it(name, block); -} - -void fspecify(NSString *name, void (^block)()) { - fit(name, block); -} - -void beforeAll(void (^block)()) { - SPTReturnUnlessBlockOrNil(block); - [SPTCurrentGroup addBeforeAllBlock:block]; -} - -void afterAll(void (^block)()) { - SPTReturnUnlessBlockOrNil(block); - [SPTCurrentGroup addAfterAllBlock:block]; -} - -void beforeEach(void (^block)()) { - SPTReturnUnlessBlockOrNil(block); - [SPTCurrentGroup addBeforeEachBlock:block]; -} - -void afterEach(void (^block)()) { - SPTReturnUnlessBlockOrNil(block); - [SPTCurrentGroup addAfterEachBlock:block]; -} - -void before(void (^block)()) { - beforeEach(block); -} - -void after(void (^block)()) { - afterEach(block); -} - -void sharedExamplesFor(NSString *name, void (^block)(NSDictionary *data)) { - [SPTSharedExampleGroups addSharedExampleGroupWithName:name block:block exampleGroup:SPTCurrentGroup]; -} - -void sharedExamples(NSString *name, void (^block)(NSDictionary *data)) { - sharedExamplesFor(name, block); -} - -void waitUntil(void (^block)(DoneCallback done)) { - waitUntilTimeout(asyncSpecTimeout, block); -} - -void waitUntilTimeout(NSTimeInterval timeout, void (^block)(DoneCallback done)) { - __block uint32_t complete = 0; - dispatch_async(dispatch_get_main_queue(), ^{ - block(^{ - OSAtomicOr32Barrier(1, &complete); - }); - }); - NSDate *timeoutDate = [NSDate dateWithTimeIntervalSinceNow:timeout]; - while (!complete && [timeoutDate timeIntervalSinceNow] > 0) { - [[NSRunLoop currentRunLoop] runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.01]]; - } - if (!complete) { - NSString *message = [NSString stringWithFormat:@"failed to invoke done() callback before timeout (%f seconds)", timeout]; - SPTSpec *currentSpec = SPTCurrentSpec; - SPTTestSuite *testSuite = [[currentSpec class] spt_testSuite]; - [currentSpec recordFailureWithDescription:message inFile:testSuite.fileName atLine:testSuite.lineNumber expected:YES]; - } -} - -void setAsyncSpecTimeout(NSTimeInterval timeout) { - asyncSpecTimeout = timeout; -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h deleted file mode 100644 index f1f0ae3eaac..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaTypes.h +++ /dev/null @@ -1,5 +0,0 @@ -@class SPTSpec; - -typedef void (^SPTVoidBlock)(); -typedef void (^SPTSpecBlock)(SPTSpec *spec); -typedef void (^SPTDictionaryBlock)(NSDictionary *dictionary); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h deleted file mode 100644 index a3a8f071f5e..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.h +++ /dev/null @@ -1,18 +0,0 @@ -#import - -extern NSString * const spt_kCurrentTestSuiteKey; -extern NSString * const spt_kCurrentSpecKey; - -#define SPTCurrentTestSuite [[NSThread mainThread] threadDictionary][spt_kCurrentTestSuiteKey] -#define SPTCurrentSpec [[NSThread mainThread] threadDictionary][spt_kCurrentSpecKey] -#define SPTCurrentGroup [SPTCurrentTestSuite currentGroup] -#define SPTGroupStack [SPTCurrentTestSuite groupStack] - -#define SPTReturnUnlessBlockOrNil(block) if ((block) && !SPTIsBlock((block))) return; -#define SPTIsBlock(obj) [(obj) isKindOfClass:NSClassFromString(@"NSBlock")] - -BOOL spt_isSpecClass(Class aClass); -NSString *spt_underscorize(NSString *string); -NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)); -NSArray *spt_shuffle(NSArray *array); -unsigned int spt_seed(); diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m deleted file mode 100644 index 9b2ee804d51..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/SpectaUtility.m +++ /dev/null @@ -1,79 +0,0 @@ -#import "SpectaUtility.h" -#import "SPTSpec.h" -#import - -NSString * const spt_kCurrentTestSuiteKey = @"SPTCurrentTestSuite"; -NSString * const spt_kCurrentSpecKey = @"SPTCurrentSpec"; - -static unsigned int seed = 0; - -BOOL spt_isSpecClass(Class aClass) { - Class superclass = class_getSuperclass(aClass); - while (superclass != Nil) { - if (superclass == [SPTSpec class]) { - return YES; - } else { - superclass = class_getSuperclass(superclass); - } - } - return NO; -} - -NSString *spt_underscorize(NSString *string) { - static NSMutableCharacterSet *invalidCharSet; - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - invalidCharSet = [[NSMutableCharacterSet alloc] init]; - [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet controlCharacterSet]]; - [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet illegalCharacterSet]]; - [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet newlineCharacterSet]]; - [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet nonBaseCharacterSet]]; - [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet punctuationCharacterSet]]; - [invalidCharSet formUnionWithCharacterSet:[NSCharacterSet symbolCharacterSet]]; - }); - NSString *stripped = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - stripped = [[stripped componentsSeparatedByCharactersInSet:invalidCharSet] componentsJoinedByString:@""]; - - NSArray *components = [stripped componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; - stripped = [[components objectsAtIndexes:[components indexesOfObjectsPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) { - return ![obj isEqualToString:@""]; - }]] componentsJoinedByString:@"_"]; - return stripped; -} - -NSArray *spt_map(NSArray *array, id (^block)(id obj, NSUInteger idx)) { - NSMutableArray *mapped = [NSMutableArray arrayWithCapacity:[array count]]; - [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { - [mapped addObject:block(obj, idx)]; - }]; - return mapped; -} - -NSArray *spt_shuffle(NSArray *array) { - if (![[[[NSProcessInfo processInfo] environment] objectForKey:@"SPECTA_SHUFFLE"] isEqualToString:@"1"]) { - return array; - } - spt_seed(); - NSMutableArray *shuffled = [array mutableCopy]; - NSUInteger count = [shuffled count]; - for (NSUInteger i = 0; i < count; i++) { - NSUInteger r = random() % count; - [shuffled exchangeObjectAtIndex:i withObjectAtIndex:r]; - } - return shuffled; -} - -unsigned int spt_seed() { - static dispatch_once_t onceToken; - dispatch_once(&onceToken, ^{ - NSString *envSeed = [[[NSProcessInfo processInfo] environment] objectForKey:@"SPECTA_SEED"]; - if (envSeed) { - sscanf([envSeed UTF8String], "%u", &seed); - } else { - seed = arc4random(); - } - srandom(seed); - printf("Test Seed: %u\n", seed); - }); - return seed; -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h deleted file mode 100644 index 0b83aeb2189..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTest+Private.h +++ /dev/null @@ -1,40 +0,0 @@ -#import - -#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000 || __MAC_OS_X_VERSION_MAX_ALLOWED >= 101100 - -@interface XCTestObservationCenter (SPTTestSuspention) - -- (void)_suspendObservationForBlock:(void (^)(void))block; - -@end - -#else - -@interface XCTestObservationCenter : NSObject - -+ (id)sharedObservationCenter; -- (void)_suspendObservationForBlock:(void (^)(void))block; - -@end - -#endif - -@protocol XCTestObservation -@end - -@interface _XCTestDriverTestObserver : NSObject - -- (void)stopObserving; -- (void)startObserving; - -@end - -@interface _XCTestCaseImplementation : NSObject -@end - -@interface XCTestCase () - -- (_XCTestCaseImplementation *)internalImplementation; -- (void)_recordUnexpectedFailureWithDescription:(NSString *)description exception:(NSException *)exception; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h deleted file mode 100644 index 9ca8f8ab1eb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.h +++ /dev/null @@ -1,7 +0,0 @@ -#import - -@interface XCTestCase (Specta) - -- (void)spt_handleException:(NSException *)exception; - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m deleted file mode 100644 index 4c503eec12a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Specta/Specta/Specta/XCTestCase+Specta.m +++ /dev/null @@ -1,65 +0,0 @@ -#import -#import "XCTestCase+Specta.h" -#import "SPTSpec.h" -#import "SPTExample.h" -#import "SPTSharedExampleGroups.h" -#import "SpectaUtility.h" -#import "XCTest+Private.h" - -@interface XCTestCase (xct_allSubclasses) - -- (NSArray *)allSubclasses; -- (void)_dequeueFailures; - -@end - -@implementation XCTestCase (Specta) - -+ (void)load { - Method allSubclasses = class_getClassMethod(self, @selector(allSubclasses)); - Method allSubclasses_swizzle = class_getClassMethod(self , @selector(spt_allSubclasses_swizzle)); - method_exchangeImplementations(allSubclasses, allSubclasses_swizzle); - - Method dequeueFailures = class_getInstanceMethod(self, @selector(_dequeueFailures)); - Method dequeueFailures_swizzle = class_getInstanceMethod(self, @selector(spt_dequeueFailures)); - method_exchangeImplementations(dequeueFailures, dequeueFailures_swizzle); -} - -+ (NSArray *)spt_allSubclasses_swizzle { - NSArray *subclasses = [self spt_allSubclasses_swizzle]; // call original - NSMutableArray *filtered = [NSMutableArray arrayWithCapacity:[subclasses count]]; - // exclude SPTSpec base class and all subclasses of SPTSharedExampleGroups - for (id subclass in subclasses) { - if (subclass != [SPTSpec class] && ![subclass isKindOfClass:[SPTSharedExampleGroups class]]) { - [filtered addObject:subclass]; - } - } - return spt_shuffle(filtered); -} - -- (void)spt_dequeueFailures { - void(^dequeueFailures)() = ^() { - [self spt_dequeueFailures]; - }; - - if ([NSThread isMainThread]) { - dequeueFailures(); - } else { - dispatch_sync(dispatch_get_main_queue(), dequeueFailures); - } -} - -- (void)spt_handleException:(NSException *)exception { - NSString *description = [exception reason]; - if ([exception userInfo]) { - id line = [exception userInfo][@"line"]; - id file = [exception userInfo][@"file"]; - if ([line isKindOfClass:[NSNumber class]] && [file isKindOfClass:[NSString class]]) { - [self recordFailureWithDescription:description inFile:file atLine:[line unsignedIntegerValue] expected:YES]; - return; - } - } - [self _recordUnexpectedFailureWithDescription:description exception:exception]; -} - -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist deleted file mode 100644 index 45fdab38185..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.5.4 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig deleted file mode 100644 index 6038dd05ec4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Example-AFNetworking.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_EXAMPLE_AFNETWORKING_OTHER_LDFLAGS} -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m deleted file mode 100644 index 121351f3b6d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Example_AFNetworking : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Example_AFNetworking -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch deleted file mode 100644 index e597ce6d7a5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h deleted file mode 100644 index c0674fea370..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking-umbrella.h +++ /dev/null @@ -1,34 +0,0 @@ -#import - -#import "AFHTTPRequestOperation.h" -#import "AFHTTPRequestOperationManager.h" -#import "AFHTTPSessionManager.h" -#import "AFNetworking.h" -#import "AFNetworkReachabilityManager.h" -#import "AFSecurityPolicy.h" -#import "AFURLConnectionOperation.h" -#import "AFURLRequestSerialization.h" -#import "AFURLResponseSerialization.h" -#import "AFURLSessionManager.h" -#import "AFURLConnectionOperation.h" -#import "AFHTTPRequestOperation.h" -#import "AFHTTPRequestOperationManager.h" -#import "AFURLSessionManager.h" -#import "AFHTTPSessionManager.h" -#import "AFNetworkReachabilityManager.h" -#import "AFSecurityPolicy.h" -#import "AFURLRequestSerialization.h" -#import "AFURLResponseSerialization.h" -#import "AFNetworkActivityIndicatorManager.h" -#import "UIActivityIndicatorView+AFNetworking.h" -#import "UIAlertView+AFNetworking.h" -#import "UIButton+AFNetworking.h" -#import "UIImageView+AFNetworking.h" -#import "UIKit+AFNetworking.h" -#import "UIProgressView+AFNetworking.h" -#import "UIRefreshControl+AFNetworking.h" -#import "UIWebView+AFNetworking.h" - -FOUNDATION_EXPORT double AFNetworkingVersionNumber; -FOUNDATION_EXPORT const unsigned char AFNetworkingVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap deleted file mode 100644 index 27b03b27d63..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module AFNetworking { - umbrella header "Pods-SwaggerClient_Example-AFNetworking-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig deleted file mode 100644 index 2062d788591..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-AFNetworking/Pods-SwaggerClient_Example-AFNetworking.xcconfig +++ /dev/null @@ -1 +0,0 @@ -PODS_SWAGGERCLIENT_EXAMPLE_AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist deleted file mode 100644 index 08376429b62..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.3.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig deleted file mode 100644 index 174001d709b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Example-ISO8601.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_EXAMPLE_ISO_____OTHER_LDFLAGS} -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m deleted file mode 100644 index d00d9499765..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Example_ISO8601 : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Example_ISO8601 -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch deleted file mode 100644 index e597ce6d7a5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h deleted file mode 100644 index cb8c2f8c323..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601-umbrella.h +++ /dev/null @@ -1,9 +0,0 @@ -#import - -#import "ISO8601.h" -#import "ISO8601Serialization.h" -#import "NSDate+ISO8601.h" - -FOUNDATION_EXPORT double ISO8601VersionNumber; -FOUNDATION_EXPORT const unsigned char ISO8601VersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap deleted file mode 100644 index 67b0fba4245..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module ISO8601 { - umbrella header "Pods-SwaggerClient_Example-ISO8601-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig deleted file mode 100644 index f5de60d3b21..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-ISO8601/Pods-SwaggerClient_Example-ISO8601.xcconfig +++ /dev/null @@ -1 +0,0 @@ -PODS_SWAGGERCLIENT_EXAMPLE_ISO_____OTHER_LDFLAGS = -framework "Foundation" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist deleted file mode 100644 index 01903d77110..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig deleted file mode 100644 index 7145cef6bf3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Example-JSONModel.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/JSONModel" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m deleted file mode 100644 index dad0697d0cb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Example_JSONModel : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Example_JSONModel -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch deleted file mode 100644 index e597ce6d7a5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h deleted file mode 100644 index a976352169b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#import - -#import "JSONModel.h" -#import "JSONModelArray.h" -#import "JSONModelClassProperty.h" -#import "JSONModelError.h" -#import "NSArray+JSONModel.h" -#import "JSONModelLib.h" -#import "JSONAPI.h" -#import "JSONHTTPClient.h" -#import "JSONModel+networking.h" -#import "JSONKeyMapper.h" -#import "JSONValueTransformer.h" - -FOUNDATION_EXPORT double JSONModelVersionNumber; -FOUNDATION_EXPORT const unsigned char JSONModelVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap deleted file mode 100644 index 4282e5d525a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module JSONModel { - umbrella header "Pods-SwaggerClient_Example-JSONModel-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-JSONModel/Pods-SwaggerClient_Example-JSONModel.xcconfig deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist deleted file mode 100644 index 4ba5fa28b78..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig deleted file mode 100644 index e9a17045872..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Example-SwaggerClient.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwaggerClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m deleted file mode 100644 index 4b501b10324..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Example_SwaggerClient : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Example_SwaggerClient -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch deleted file mode 100644 index e597ce6d7a5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Example-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h deleted file mode 100644 index c06b45cd7d2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient-umbrella.h +++ /dev/null @@ -1,24 +0,0 @@ -#import - -#import "JSONValueTransformer+ISO8601.h" -#import "SWGApiClient.h" -#import "SWGCategory.h" -#import "SWGConfiguration.h" -#import "SWGFile.h" -#import "SWGJSONRequestSerializer.h" -#import "SWGJSONResponseSerializer.h" -#import "SWGMyresult.h" -#import "SWGMythingApi.h" -#import "SWGObject.h" -#import "SWGOrder.h" -#import "SWGPet.h" -#import "SWGPetApi.h" -#import "SWGQueryParamCollection.h" -#import "SWGStoreApi.h" -#import "SWGTag.h" -#import "SWGUser.h" -#import "SWGUserApi.h" - -FOUNDATION_EXPORT double SwaggerClientVersionNumber; -FOUNDATION_EXPORT const unsigned char SwaggerClientVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap deleted file mode 100644 index 7abc3afbdc0..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SwaggerClient { - umbrella header "Pods-SwaggerClient_Example-SwaggerClient-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example-SwaggerClient/Pods-SwaggerClient_Example-SwaggerClient.xcconfig deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist deleted file mode 100644 index 69745425863..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown deleted file mode 100644 index 3d56e061c3f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.markdown +++ /dev/null @@ -1,100 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## AFNetworking - -Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -## ISO8601 - -Copyright (c) 2014 Sam Soffes, http://soff.es - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -## JSONModel - -JSONModel - -Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -This code is distributed under the terms and conditions of the MIT license. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in the -Software without restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - - -## SwaggerClient - -Copyright (c) 2015 geekerzp - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -Generated by CocoaPods - http://cocoapods.org diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist deleted file mode 100644 index 14fcac8bb22..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-acknowledgements.plist +++ /dev/null @@ -1,142 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - Title - AFNetworking - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2014 Sam Soffes, http://soff.es - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Title - ISO8601 - Type - PSGroupSpecifier - - - FooterText - JSONModel - -Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -This code is distributed under the terms and conditions of the MIT license. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in the -Software without restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - - Title - JSONModel - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2015 geekerzp <geekerzp@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - Title - SwaggerClient - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - http://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m deleted file mode 100644 index 8cff8be0250..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Example : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Example -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h deleted file mode 100644 index 577f1da7e4c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-environment.h +++ /dev/null @@ -1,68 +0,0 @@ - -// To check if a library is compiled with CocoaPods you -// can use the `COCOAPODS` macro definition which is -// defined in the xcconfigs so it is available in -// headers also when they are imported in the client -// project. - - -// AFNetworking -#define COCOAPODS_POD_AVAILABLE_AFNetworking -#define COCOAPODS_VERSION_MAJOR_AFNetworking 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking 4 - -// AFNetworking/NSURLConnection -#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLConnection -#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLConnection 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLConnection 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLConnection 4 - -// AFNetworking/NSURLSession -#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLSession -#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLSession 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLSession 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLSession 4 - -// AFNetworking/Reachability -#define COCOAPODS_POD_AVAILABLE_AFNetworking_Reachability -#define COCOAPODS_VERSION_MAJOR_AFNetworking_Reachability 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_Reachability 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_Reachability 4 - -// AFNetworking/Security -#define COCOAPODS_POD_AVAILABLE_AFNetworking_Security -#define COCOAPODS_VERSION_MAJOR_AFNetworking_Security 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_Security 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_Security 4 - -// AFNetworking/Serialization -#define COCOAPODS_POD_AVAILABLE_AFNetworking_Serialization -#define COCOAPODS_VERSION_MAJOR_AFNetworking_Serialization 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_Serialization 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_Serialization 4 - -// AFNetworking/UIKit -#define COCOAPODS_POD_AVAILABLE_AFNetworking_UIKit -#define COCOAPODS_VERSION_MAJOR_AFNetworking_UIKit 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_UIKit 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_UIKit 4 - -// ISO8601 -#define COCOAPODS_POD_AVAILABLE_ISO8601 -#define COCOAPODS_VERSION_MAJOR_ISO8601 0 -#define COCOAPODS_VERSION_MINOR_ISO8601 3 -#define COCOAPODS_VERSION_PATCH_ISO8601 0 - -// JSONModel -#define COCOAPODS_POD_AVAILABLE_JSONModel -#define COCOAPODS_VERSION_MAJOR_JSONModel 1 -#define COCOAPODS_VERSION_MINOR_JSONModel 1 -#define COCOAPODS_VERSION_PATCH_JSONModel 0 - -// SwaggerClient -#define COCOAPODS_POD_AVAILABLE_SwaggerClient -#define COCOAPODS_VERSION_MAJOR_SwaggerClient 0 -#define COCOAPODS_VERSION_MINOR_SwaggerClient 1 -#define COCOAPODS_VERSION_PATCH_SwaggerClient 0 - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh deleted file mode 100755 index 5000ed902ca..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh +++ /dev/null @@ -1,61 +0,0 @@ -#!/bin/sh -set -e - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -install_framework() -{ - local source="${BUILT_PRODUCTS_DIR}/Pods-SwaggerClient_Example/$1" - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source=$(readlink "${source}") - fi - - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" ${source} ${destination}" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" "${source}" "${destination}" - # Resign the code if required by the build settings to avoid unstable apps - if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then - code_sign "${destination}/$1" - fi - - # Embed linked Swift runtime libraries - local basename - basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then - code_sign "${destination}/${lib}" - fi - done -} - -# Signs a framework with the provided identity -code_sign() { - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" -} - - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework 'AFNetworking.framework' - install_framework 'ISO8601.framework' - install_framework 'JSONModel.framework' - install_framework 'SwaggerClient.framework' -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework 'AFNetworking.framework' - install_framework 'ISO8601.framework' - install_framework 'JSONModel.framework' - install_framework 'SwaggerClient.framework' -fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh deleted file mode 100755 index 43f08523e1c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-resources.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY=$(cd "${1%/*}" && pwd) - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]]; then - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h deleted file mode 100644 index ae48c113af8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double Pods_SwaggerClient_ExampleVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_SwaggerClient_ExampleVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig deleted file mode 100644 index decd9a900fe..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "ISO8601" -framework "JSONModel" -framework "SwaggerClient" -OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap deleted file mode 100644 index 14d347684cb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_SwaggerClient_Example { - umbrella header "Pods-SwaggerClient_Example-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig deleted file mode 100644 index decd9a900fe..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "ISO8601" -framework "JSONModel" -framework "SwaggerClient" -OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Example -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist deleted file mode 100644 index 45fdab38185..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.5.4 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig deleted file mode 100644 index c0dfe5e1977..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Tests-AFNetworking.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/AFNetworking" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_AFNETWORKING_OTHER_LDFLAGS} -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m deleted file mode 100644 index d0c911293c3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests_AFNetworking : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests_AFNetworking -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch deleted file mode 100644 index a0fd887ec64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h deleted file mode 100644 index c0674fea370..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking-umbrella.h +++ /dev/null @@ -1,34 +0,0 @@ -#import - -#import "AFHTTPRequestOperation.h" -#import "AFHTTPRequestOperationManager.h" -#import "AFHTTPSessionManager.h" -#import "AFNetworking.h" -#import "AFNetworkReachabilityManager.h" -#import "AFSecurityPolicy.h" -#import "AFURLConnectionOperation.h" -#import "AFURLRequestSerialization.h" -#import "AFURLResponseSerialization.h" -#import "AFURLSessionManager.h" -#import "AFURLConnectionOperation.h" -#import "AFHTTPRequestOperation.h" -#import "AFHTTPRequestOperationManager.h" -#import "AFURLSessionManager.h" -#import "AFHTTPSessionManager.h" -#import "AFNetworkReachabilityManager.h" -#import "AFSecurityPolicy.h" -#import "AFURLRequestSerialization.h" -#import "AFURLResponseSerialization.h" -#import "AFNetworkActivityIndicatorManager.h" -#import "UIActivityIndicatorView+AFNetworking.h" -#import "UIAlertView+AFNetworking.h" -#import "UIButton+AFNetworking.h" -#import "UIImageView+AFNetworking.h" -#import "UIKit+AFNetworking.h" -#import "UIProgressView+AFNetworking.h" -#import "UIRefreshControl+AFNetworking.h" -#import "UIWebView+AFNetworking.h" - -FOUNDATION_EXPORT double AFNetworkingVersionNumber; -FOUNDATION_EXPORT const unsigned char AFNetworkingVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap deleted file mode 100644 index 6000a4918ad..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module AFNetworking { - umbrella header "Pods-SwaggerClient_Tests-AFNetworking-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig deleted file mode 100644 index 4ce4ab2de66..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-AFNetworking/Pods-SwaggerClient_Tests-AFNetworking.xcconfig +++ /dev/null @@ -1 +0,0 @@ -PODS_SWAGGERCLIENT_TESTS_AFNETWORKING_OTHER_LDFLAGS = -framework "CoreGraphics" -framework "MobileCoreServices" -framework "Security" -framework "SystemConfiguration" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist deleted file mode 100644 index 69745425863..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig deleted file mode 100644 index e18db53277d..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Tests-Expecta.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" ${PODS_SWAGGERCLIENT_TESTS_EXPECTA_FRAMEWORK_SEARCH_PATHS} -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Expecta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_EXPECTA_OTHER_LDFLAGS} -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m deleted file mode 100644 index 482295da5cb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests_Expecta : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests_Expecta -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch deleted file mode 100644 index a0fd887ec64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h deleted file mode 100644 index 79e13088a46..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta-umbrella.h +++ /dev/null @@ -1,45 +0,0 @@ -#import - -#import "EXPBlockDefinedMatcher.h" -#import "EXPDefines.h" -#import "EXPDoubleTuple.h" -#import "Expecta.h" -#import "ExpectaObject.h" -#import "ExpectaSupport.h" -#import "EXPExpect.h" -#import "EXPFloatTuple.h" -#import "EXPMatcher.h" -#import "EXPUnsupportedObject.h" -#import "EXPMatcherHelpers.h" -#import "EXPMatchers+beCloseTo.h" -#import "EXPMatchers+beFalsy.h" -#import "EXPMatchers+beginWith.h" -#import "EXPMatchers+beGreaterThan.h" -#import "EXPMatchers+beGreaterThanOrEqualTo.h" -#import "EXPMatchers+beIdenticalTo.h" -#import "EXPMatchers+beInstanceOf.h" -#import "EXPMatchers+beInTheRangeOf.h" -#import "EXPMatchers+beKindOf.h" -#import "EXPMatchers+beLessThan.h" -#import "EXPMatchers+beLessThanOrEqualTo.h" -#import "EXPMatchers+beNil.h" -#import "EXPMatchers+beSubclassOf.h" -#import "EXPMatchers+beSupersetOf.h" -#import "EXPMatchers+beTruthy.h" -#import "EXPMatchers+conformTo.h" -#import "EXPMatchers+contain.h" -#import "EXPMatchers+endWith.h" -#import "EXPMatchers+equal.h" -#import "EXPMatchers+haveCountOf.h" -#import "EXPMatchers+match.h" -#import "EXPMatchers+postNotification.h" -#import "EXPMatchers+raise.h" -#import "EXPMatchers+raiseWithReason.h" -#import "EXPMatchers+respondTo.h" -#import "EXPMatchers.h" -#import "NSObject+Expecta.h" -#import "NSValue+Expecta.h" - -FOUNDATION_EXPORT double ExpectaVersionNumber; -FOUNDATION_EXPORT const unsigned char ExpectaVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap deleted file mode 100644 index 6c1abefa610..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Expecta { - umbrella header "Pods-SwaggerClient_Tests-Expecta-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig deleted file mode 100644 index 2aa144b52d8..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Expecta/Pods-SwaggerClient_Tests-Expecta.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -PODS_SWAGGERCLIENT_TESTS_EXPECTA_FRAMEWORK_SEARCH_PATHS = $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" "$(SDKROOT)/Developer/Library/Frameworks" -PODS_SWAGGERCLIENT_TESTS_EXPECTA_OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist deleted file mode 100644 index 08376429b62..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.3.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig deleted file mode 100644 index ed2be536d46..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Tests-ISO8601.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/ISO8601" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_ISO_____OTHER_LDFLAGS} -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m deleted file mode 100644 index 11ef219610c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests_ISO8601 : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests_ISO8601 -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch deleted file mode 100644 index a0fd887ec64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h deleted file mode 100644 index cb8c2f8c323..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601-umbrella.h +++ /dev/null @@ -1,9 +0,0 @@ -#import - -#import "ISO8601.h" -#import "ISO8601Serialization.h" -#import "NSDate+ISO8601.h" - -FOUNDATION_EXPORT double ISO8601VersionNumber; -FOUNDATION_EXPORT const unsigned char ISO8601VersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap deleted file mode 100644 index 9b57225fa7b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module ISO8601 { - umbrella header "Pods-SwaggerClient_Tests-ISO8601-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig deleted file mode 100644 index d9702176287..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-ISO8601/Pods-SwaggerClient_Tests-ISO8601.xcconfig +++ /dev/null @@ -1 +0,0 @@ -PODS_SWAGGERCLIENT_TESTS_ISO_____OTHER_LDFLAGS = -framework "Foundation" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist deleted file mode 100644 index 01903d77110..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig deleted file mode 100644 index ba2e6833224..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Tests-JSONModel.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/JSONModel" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m deleted file mode 100644 index 448bc3508f5..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests_JSONModel : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests_JSONModel -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch deleted file mode 100644 index a0fd887ec64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h deleted file mode 100644 index a976352169b..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel-umbrella.h +++ /dev/null @@ -1,17 +0,0 @@ -#import - -#import "JSONModel.h" -#import "JSONModelArray.h" -#import "JSONModelClassProperty.h" -#import "JSONModelError.h" -#import "NSArray+JSONModel.h" -#import "JSONModelLib.h" -#import "JSONAPI.h" -#import "JSONHTTPClient.h" -#import "JSONModel+networking.h" -#import "JSONKeyMapper.h" -#import "JSONValueTransformer.h" - -FOUNDATION_EXPORT double JSONModelVersionNumber; -FOUNDATION_EXPORT const unsigned char JSONModelVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap deleted file mode 100644 index fe2c58e963a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module JSONModel { - umbrella header "Pods-SwaggerClient_Tests-JSONModel-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-JSONModel/Pods-SwaggerClient_Tests-JSONModel.xcconfig deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist deleted file mode 100644 index 98bb3e157b3..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.2 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig deleted file mode 100644 index d5415cec587..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Tests-Specta.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" ${PODS_SWAGGERCLIENT_TESTS_SPECTA_FRAMEWORK_SEARCH_PATHS} -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Specta" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = ${PODS_SWAGGERCLIENT_TESTS_SPECTA_OTHER_LDFLAGS} -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m deleted file mode 100644 index 45689da3374..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests_Specta : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests_Specta -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch deleted file mode 100644 index a0fd887ec64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h deleted file mode 100644 index c6cc903818a..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta-umbrella.h +++ /dev/null @@ -1,21 +0,0 @@ -#import - -#import "Specta.h" -#import "SpectaDSL.h" -#import "SpectaTypes.h" -#import "SpectaUtility.h" -#import "SPTCallSite.h" -#import "SPTCompiledExample.h" -#import "SPTExample.h" -#import "SPTExampleGroup.h" -#import "SPTExcludeGlobalBeforeAfterEach.h" -#import "SPTGlobalBeforeAfterEach.h" -#import "SPTSharedExampleGroups.h" -#import "SPTSpec.h" -#import "SPTTestSuite.h" -#import "XCTest+Private.h" -#import "XCTestCase+Specta.h" - -FOUNDATION_EXPORT double SpectaVersionNumber; -FOUNDATION_EXPORT const unsigned char SpectaVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap deleted file mode 100644 index 3c36f0e1733..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Specta { - umbrella header "Pods-SwaggerClient_Tests-Specta-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig deleted file mode 100644 index 23ae7b74d46..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-Specta/Pods-SwaggerClient_Tests-Specta.xcconfig +++ /dev/null @@ -1,2 +0,0 @@ -PODS_SWAGGERCLIENT_TESTS_SPECTA_FRAMEWORK_SEARCH_PATHS = $(inherited) $(DEVELOPER_FRAMEWORKS_DIR) "$(PLATFORM_DIR)/Developer/Library/Frameworks" "$(DEVELOPER_DIR)/Platforms/iPhoneSimulator.platform/Developer/Library/Frameworks" "$(SDKROOT)/Developer/Library/Frameworks" -PODS_SWAGGERCLIENT_TESTS_SPECTA_OTHER_LDFLAGS = -framework "Foundation" -framework "XCTest" \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist deleted file mode 100644 index 4ba5fa28b78..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig deleted file mode 100644 index 1a0bff64c1f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-Private.xcconfig +++ /dev/null @@ -1,9 +0,0 @@ -#include "Pods-SwaggerClient_Tests-SwaggerClient.xcconfig" -CONFIGURATION_BUILD_DIR = $PODS_FRAMEWORK_BUILD_PATH -FRAMEWORK_SEARCH_PATHS = "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/SwaggerClient" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/AFNetworking" "${PODS_ROOT}/Headers/Public/Expecta" "${PODS_ROOT}/Headers/Public/ISO8601" "${PODS_ROOT}/Headers/Public/JSONModel" "${PODS_ROOT}/Headers/Public/Specta" "${PODS_ROOT}/Headers/Public/SwaggerClient" -OTHER_LDFLAGS = -ObjC -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT} -SKIP_INSTALL = YES \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m deleted file mode 100644 index 2ffbcb3c277..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests_SwaggerClient : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests_SwaggerClient -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch deleted file mode 100644 index a0fd887ec64..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-prefix.pch +++ /dev/null @@ -1,5 +0,0 @@ -#ifdef __OBJC__ -#import -#endif - -#import "Pods-SwaggerClient_Tests-environment.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h deleted file mode 100644 index c06b45cd7d2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h +++ /dev/null @@ -1,24 +0,0 @@ -#import - -#import "JSONValueTransformer+ISO8601.h" -#import "SWGApiClient.h" -#import "SWGCategory.h" -#import "SWGConfiguration.h" -#import "SWGFile.h" -#import "SWGJSONRequestSerializer.h" -#import "SWGJSONResponseSerializer.h" -#import "SWGMyresult.h" -#import "SWGMythingApi.h" -#import "SWGObject.h" -#import "SWGOrder.h" -#import "SWGPet.h" -#import "SWGPetApi.h" -#import "SWGQueryParamCollection.h" -#import "SWGStoreApi.h" -#import "SWGTag.h" -#import "SWGUser.h" -#import "SWGUserApi.h" - -FOUNDATION_EXPORT double SwaggerClientVersionNumber; -FOUNDATION_EXPORT const unsigned char SwaggerClientVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap deleted file mode 100644 index 8f68ac79d83..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module SwaggerClient { - umbrella header "Pods-SwaggerClient_Tests-SwaggerClient-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests-SwaggerClient/Pods-SwaggerClient_Tests-SwaggerClient.xcconfig deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist deleted file mode 100644 index 69745425863..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Info.plist +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown deleted file mode 100644 index cfedc7b5ebb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.markdown +++ /dev/null @@ -1,147 +0,0 @@ -# Acknowledgements -This application makes use of the following third party libraries: - -## AFNetworking - -Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -## Expecta - -Copyright (c) 2011-2015 Specta Team - https://github.com/specta - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - -## ISO8601 - -Copyright (c) 2014 Sam Soffes, http://soff.es - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - -## JSONModel - -JSONModel - -Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -This code is distributed under the terms and conditions of the MIT license. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in the -Software without restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - - -## Specta - -Copyright (c) 2012-2014 Specta Team. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - -## SwaggerClient - -Copyright (c) 2015 geekerzp - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - -Generated by CocoaPods - http://cocoapods.org diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist deleted file mode 100644 index 33f0788f6e2..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-acknowledgements.plist +++ /dev/null @@ -1,197 +0,0 @@ - - - - - PreferenceSpecifiers - - - FooterText - This application makes use of the following third party libraries: - Title - Acknowledgements - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2011–2015 Alamofire Software Foundation (http://alamofire.org/) - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - Title - AFNetworking - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2011-2015 Specta Team - https://github.com/specta - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - Title - Expecta - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2014 Sam Soffes, http://soff.es - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - - Title - ISO8601 - Type - PSGroupSpecifier - - - FooterText - JSONModel - -Copyright (c) 2012-2014 Marin Todorov, Underplot ltd. -This code is distributed under the terms and conditions of the MIT license. - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in the -Software without restriction, including without limitation the rights to use, copy, -modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, -and to permit persons to whom the Software is furnished to do so, subject to the -following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A -PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT -HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF -CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE -OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -The MIT License in plain English: http://www.touch-code-magazine.com/JSONModel/MITLicense - - Title - JSONModel - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2012-2014 Specta Team. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - - Title - Specta - Type - PSGroupSpecifier - - - FooterText - Copyright (c) 2015 geekerzp <geekerzp@gmail.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. - - Title - SwaggerClient - Type - PSGroupSpecifier - - - FooterText - Generated by CocoaPods - http://cocoapods.org - Title - - Type - PSGroupSpecifier - - - StringsTable - Acknowledgements - Title - Acknowledgements - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m deleted file mode 100644 index 3070d921688..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-dummy.m +++ /dev/null @@ -1,5 +0,0 @@ -#import -@interface PodsDummy_Pods_SwaggerClient_Tests : NSObject -@end -@implementation PodsDummy_Pods_SwaggerClient_Tests -@end diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h deleted file mode 100644 index 3705e69c6fb..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-environment.h +++ /dev/null @@ -1,80 +0,0 @@ - -// To check if a library is compiled with CocoaPods you -// can use the `COCOAPODS` macro definition which is -// defined in the xcconfigs so it is available in -// headers also when they are imported in the client -// project. - - -// AFNetworking -#define COCOAPODS_POD_AVAILABLE_AFNetworking -#define COCOAPODS_VERSION_MAJOR_AFNetworking 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking 4 - -// AFNetworking/NSURLConnection -#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLConnection -#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLConnection 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLConnection 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLConnection 4 - -// AFNetworking/NSURLSession -#define COCOAPODS_POD_AVAILABLE_AFNetworking_NSURLSession -#define COCOAPODS_VERSION_MAJOR_AFNetworking_NSURLSession 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_NSURLSession 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_NSURLSession 4 - -// AFNetworking/Reachability -#define COCOAPODS_POD_AVAILABLE_AFNetworking_Reachability -#define COCOAPODS_VERSION_MAJOR_AFNetworking_Reachability 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_Reachability 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_Reachability 4 - -// AFNetworking/Security -#define COCOAPODS_POD_AVAILABLE_AFNetworking_Security -#define COCOAPODS_VERSION_MAJOR_AFNetworking_Security 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_Security 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_Security 4 - -// AFNetworking/Serialization -#define COCOAPODS_POD_AVAILABLE_AFNetworking_Serialization -#define COCOAPODS_VERSION_MAJOR_AFNetworking_Serialization 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_Serialization 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_Serialization 4 - -// AFNetworking/UIKit -#define COCOAPODS_POD_AVAILABLE_AFNetworking_UIKit -#define COCOAPODS_VERSION_MAJOR_AFNetworking_UIKit 2 -#define COCOAPODS_VERSION_MINOR_AFNetworking_UIKit 5 -#define COCOAPODS_VERSION_PATCH_AFNetworking_UIKit 4 - -// Expecta -#define COCOAPODS_POD_AVAILABLE_Expecta -#define COCOAPODS_VERSION_MAJOR_Expecta 1 -#define COCOAPODS_VERSION_MINOR_Expecta 0 -#define COCOAPODS_VERSION_PATCH_Expecta 0 - -// ISO8601 -#define COCOAPODS_POD_AVAILABLE_ISO8601 -#define COCOAPODS_VERSION_MAJOR_ISO8601 0 -#define COCOAPODS_VERSION_MINOR_ISO8601 3 -#define COCOAPODS_VERSION_PATCH_ISO8601 0 - -// JSONModel -#define COCOAPODS_POD_AVAILABLE_JSONModel -#define COCOAPODS_VERSION_MAJOR_JSONModel 1 -#define COCOAPODS_VERSION_MINOR_JSONModel 1 -#define COCOAPODS_VERSION_PATCH_JSONModel 0 - -// Specta -#define COCOAPODS_POD_AVAILABLE_Specta -#define COCOAPODS_VERSION_MAJOR_Specta 1 -#define COCOAPODS_VERSION_MINOR_Specta 0 -#define COCOAPODS_VERSION_PATCH_Specta 2 - -// SwaggerClient -#define COCOAPODS_POD_AVAILABLE_SwaggerClient -#define COCOAPODS_VERSION_MAJOR_SwaggerClient 0 -#define COCOAPODS_VERSION_MINOR_SwaggerClient 1 -#define COCOAPODS_VERSION_PATCH_SwaggerClient 0 - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh deleted file mode 100755 index 12a617f5427..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh +++ /dev/null @@ -1,65 +0,0 @@ -#!/bin/sh -set -e - -echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" -mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - -SWIFT_STDLIB_PATH="${DT_TOOLCHAIN_DIR}/usr/lib/swift/${PLATFORM_NAME}" - -install_framework() -{ - local source="${BUILT_PRODUCTS_DIR}/Pods-SwaggerClient_Tests/$1" - local destination="${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - - if [ -L "${source}" ]; then - echo "Symlinked..." - source=$(readlink "${source}") - fi - - # use filter instead of exclude so missing patterns dont' throw errors - echo "rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" ${source} ${destination}" - rsync -av --filter "- CVS/" --filter "- .svn/" --filter "- .git/" --filter "- .hg/" --filter "- Headers/" --filter "- PrivateHeaders/" --filter "- Modules/" "${source}" "${destination}" - # Resign the code if required by the build settings to avoid unstable apps - if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then - code_sign "${destination}/$1" - fi - - # Embed linked Swift runtime libraries - local basename - basename=$(echo $1 | sed -E s/\\..+// && exit ${PIPESTATUS[0]}) - local swift_runtime_libs - swift_runtime_libs=$(xcrun otool -LX "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/$1/${basename}" | grep --color=never @rpath/libswift | sed -E s/@rpath\\/\(.+dylib\).*/\\1/g | uniq -u && exit ${PIPESTATUS[0]}) - for lib in $swift_runtime_libs; do - echo "rsync -auv \"${SWIFT_STDLIB_PATH}/${lib}\" \"${destination}\"" - rsync -auv "${SWIFT_STDLIB_PATH}/${lib}" "${destination}" - if [ "${CODE_SIGNING_REQUIRED}" == "YES" ]; then - code_sign "${destination}/${lib}" - fi - done -} - -# Signs a framework with the provided identity -code_sign() { - # Use the current code_sign_identitiy - echo "Code Signing $1 with Identity ${EXPANDED_CODE_SIGN_IDENTITY_NAME}" - echo "/usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements $1" - /usr/bin/codesign --force --sign ${EXPANDED_CODE_SIGN_IDENTITY} --preserve-metadata=identifier,entitlements "$1" -} - - -if [[ "$CONFIGURATION" == "Debug" ]]; then - install_framework 'AFNetworking.framework' - install_framework 'Expecta.framework' - install_framework 'ISO8601.framework' - install_framework 'JSONModel.framework' - install_framework 'Specta.framework' - install_framework 'SwaggerClient.framework' -fi -if [[ "$CONFIGURATION" == "Release" ]]; then - install_framework 'AFNetworking.framework' - install_framework 'Expecta.framework' - install_framework 'ISO8601.framework' - install_framework 'JSONModel.framework' - install_framework 'Specta.framework' - install_framework 'SwaggerClient.framework' -fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh deleted file mode 100755 index 43f08523e1c..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-resources.sh +++ /dev/null @@ -1,93 +0,0 @@ -#!/bin/sh -set -e - -mkdir -p "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" - -RESOURCES_TO_COPY=${PODS_ROOT}/resources-to-copy-${TARGETNAME}.txt -> "$RESOURCES_TO_COPY" - -XCASSET_FILES=() - -realpath() { - DIRECTORY=$(cd "${1%/*}" && pwd) - FILENAME="${1##*/}" - echo "$DIRECTORY/$FILENAME" -} - -install_resource() -{ - case $1 in - *.storyboard) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .storyboard`.storyboardc" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.xib) - echo "ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile ${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib ${PODS_ROOT}/$1 --sdk ${SDKROOT}" - ibtool --reference-external-strings-file --errors --warnings --notices --output-format human-readable-text --compile "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename \"$1\" .xib`.nib" "${PODS_ROOT}/$1" --sdk "${SDKROOT}" - ;; - *.framework) - echo "mkdir -p ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - mkdir -p "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - echo "rsync -av ${PODS_ROOT}/$1 ${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - rsync -av "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}" - ;; - *.xcdatamodel) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1"`.mom\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodel`.mom" - ;; - *.xcdatamodeld) - echo "xcrun momc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd\"" - xcrun momc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcdatamodeld`.momd" - ;; - *.xcmappingmodel) - echo "xcrun mapc \"${PODS_ROOT}/$1\" \"${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm\"" - xcrun mapc "${PODS_ROOT}/$1" "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/`basename "$1" .xcmappingmodel`.cdm" - ;; - *.xcassets) - ABSOLUTE_XCASSET_FILE=$(realpath "${PODS_ROOT}/$1") - XCASSET_FILES+=("$ABSOLUTE_XCASSET_FILE") - ;; - /*) - echo "$1" - echo "$1" >> "$RESOURCES_TO_COPY" - ;; - *) - echo "${PODS_ROOT}/$1" - echo "${PODS_ROOT}/$1" >> "$RESOURCES_TO_COPY" - ;; - esac -} - -rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${CONFIGURATION_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -if [[ "${ACTION}" == "install" ]]; then - rsync -avr --copy-links --no-relative --exclude '*/.svn/*' --files-from="$RESOURCES_TO_COPY" / "${INSTALL_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi -rm -f "$RESOURCES_TO_COPY" - -if [[ -n "${WRAPPER_EXTENSION}" ]] && [ "`xcrun --find actool`" ] && [ -n "$XCASSET_FILES" ] -then - case "${TARGETED_DEVICE_FAMILY}" in - 1,2) - TARGET_DEVICE_ARGS="--target-device ipad --target-device iphone" - ;; - 1) - TARGET_DEVICE_ARGS="--target-device iphone" - ;; - 2) - TARGET_DEVICE_ARGS="--target-device ipad" - ;; - *) - TARGET_DEVICE_ARGS="--target-device mac" - ;; - esac - - # Find all other xcassets (this unfortunately includes those of path pods and other targets). - OTHER_XCASSETS=$(find "$PWD" -iname "*.xcassets" -type d) - while read line; do - if [[ $line != "`realpath $PODS_ROOT`*" ]]; then - XCASSET_FILES+=("$line") - fi - done <<<"$OTHER_XCASSETS" - - printf "%s\0" "${XCASSET_FILES[@]}" | xargs -0 xcrun actool --output-format human-readable-text --notices --warnings --platform "${PLATFORM_NAME}" --minimum-deployment-target "${IPHONEOS_DEPLOYMENT_TARGET}" ${TARGET_DEVICE_ARGS} --compress-pngs --compile "${BUILT_PRODUCTS_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}" -fi diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h deleted file mode 100644 index a7d41120961..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-umbrella.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - - -FOUNDATION_EXPORT double Pods_SwaggerClient_TestsVersionNumber; -FOUNDATION_EXPORT const unsigned char Pods_SwaggerClient_TestsVersionString[]; - diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig deleted file mode 100644 index fe70161b278..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Expecta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Specta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "Expecta" -framework "ISO8601" -framework "JSONModel" -framework "Specta" -framework "SwaggerClient" -OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap deleted file mode 100644 index 9701f82c7d4..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.modulemap +++ /dev/null @@ -1,6 +0,0 @@ -framework module Pods_SwaggerClient_Tests { - umbrella header "Pods-SwaggerClient_Tests-umbrella.h" - - export * - module * { export * } -} diff --git a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig b/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig deleted file mode 100644 index fe70161b278..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig +++ /dev/null @@ -1,8 +0,0 @@ -FRAMEWORK_SEARCH_PATHS = $(inherited) "$PODS_FRAMEWORK_BUILD_PATH" -GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_CFLAGS = $(inherited) -iquote "$PODS_FRAMEWORK_BUILD_PATH/AFNetworking.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Expecta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/ISO8601.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/JSONModel.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/Specta.framework/Headers" -iquote "$PODS_FRAMEWORK_BUILD_PATH/SwaggerClient.framework/Headers" -OTHER_LDFLAGS = $(inherited) -ObjC -framework "AFNetworking" -framework "Expecta" -framework "ISO8601" -framework "JSONModel" -framework "Specta" -framework "SwaggerClient" -OTHER_LIBTOOLFLAGS = $(OTHER_LDFLAGS) -PODS_FRAMEWORK_BUILD_PATH = $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/Pods-SwaggerClient_Tests -PODS_ROOT = ${SRCROOT}/Pods \ No newline at end of file diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 9b3fa18954f..00000000000 --- a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index ddc6d5bd9aac719d8834d040581a3436a73792c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16390 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 Date: Sat, 27 Jun 2015 16:10:28 +0800 Subject: [PATCH 12/22] Supoort customize classPrefix in objc client. --- .../codegen/languages/ObjcClientCodegen.java | 1 + .../resources/objc/ApiClient-body.mustache | 65 +++++++++---------- .../resources/objc/ApiClient-header.mustache | 20 +++--- .../objc/Configuration-body.mustache | 8 +-- .../objc/Configuration-header.mustache | 2 +- .../main/resources/objc/File-body.mustache | 6 +- .../main/resources/objc/File-header.mustache | 4 +- .../objc/JSONRequestSerializer-body.mustache | 4 +- .../JSONRequestSerializer-header.mustache | 2 +- .../objc/JSONResponseSerializer-body.mustache | 4 +- .../JSONResponseSerializer-header.mustache | 2 +- .../main/resources/objc/Object-body.mustache | 4 +- .../resources/objc/Object-header.mustache | 2 +- .../objc/QueryParamCollection-body.mustache | 4 +- .../objc/QueryParamCollection-header.mustache | 2 +- .../src/main/resources/objc/api-body.mustache | 12 ++-- .../main/resources/objc/api-header.mustache | 8 +-- .../main/resources/objc/model-header.mustache | 4 +- samples/client/petstore/objc/LICENSE | 19 ------ .../objc/SwaggerClient/SWGApiClient.h | 8 ++- .../objc/SwaggerClient/SWGApiClient.m | 3 - .../petstore/objc/SwaggerClient/SWGFile.h | 2 +- .../petstore/objc/SwaggerClient/SWGFile.m | 2 +- .../petstore/objc/SwaggerClient/SWGPet.h | 4 +- .../petstore/objc/SwaggerClient/SWGPetApi.h | 4 +- .../petstore/objc/SwaggerClient/SWGPetApi.m | 4 +- .../petstore/objc/SwaggerClient/SWGStoreApi.h | 2 +- .../petstore/objc/SwaggerClient/SWGStoreApi.m | 2 +- .../petstore/objc/SwaggerClient/SWGUserApi.h | 2 +- .../petstore/objc/SwaggerClient/SWGUserApi.m | 2 +- .../SwaggerClient.xcodeproj/project.pbxproj | 2 - .../objc/{ => SwaggerClientTests}/pom.xml | 2 +- 32 files changed, 97 insertions(+), 115 deletions(-) delete mode 100644 samples/client/petstore/objc/LICENSE rename samples/client/petstore/objc/{ => SwaggerClientTests}/pom.xml (97%) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 6859ba56ea6..287957d1924 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -138,6 +138,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { additionalProperties.put("podName", podName); additionalProperties.put("podVersion", podVersion); + additionalProperties.put("classPrefix", classPrefix); String swaggerFolder = podName; diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index d7e6fac8385..13c0c84ac58 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -1,11 +1,8 @@ -#import "SWGApiClient.h" -#import "SWGFile.h" -#import "SWGQueryParamCollection.h" -#import "SWGConfiguration.h" +#import "{{classPrefix}}ApiClient.h" -@implementation SWGApiClient +@implementation {{classPrefix}}ApiClient -NSString *const SWGResponseObjectErrorKey = @"SWGResponseObject"; +NSString *const {{classPrefix}}ResponseObjectErrorKey = @"{{classPrefix}}ResponseObject"; static long requestId = 0; static bool offlineState = false; @@ -58,7 +55,7 @@ static bool loggingEnabled = true; return sharedQueue; } -+(SWGApiClient *)sharedClientFromPool:(NSString *)baseUrl { ++({{classPrefix}}ApiClient *)sharedClientFromPool:(NSString *)baseUrl { static NSMutableDictionary *_pool = nil; if (queuedRequests == nil) { queuedRequests = [[NSMutableSet alloc]init]; @@ -72,16 +69,16 @@ static bool loggingEnabled = true; _pool = [[NSMutableDictionary alloc] init]; // initialize URL cache - [SWGApiClient configureCacheWithMemoryAndDiskCapacity:4*1024*1024 diskSize:32*1024*1024]; + [{{classPrefix}}ApiClient configureCacheWithMemoryAndDiskCapacity:4*1024*1024 diskSize:32*1024*1024]; // configure reachability - [SWGApiClient configureCacheReachibilityForHost:baseUrl]; + [{{classPrefix}}ApiClient configureCacheReachibilityForHost:baseUrl]; } @synchronized(self) { - SWGApiClient * client = [_pool objectForKey:baseUrl]; + {{classPrefix}}ApiClient * client = [_pool objectForKey:baseUrl]; if (client == nil) { - client = [[SWGApiClient alloc] initWithBaseURL:[NSURL URLWithString:baseUrl]]; + client = [[{{classPrefix}}ApiClient alloc] initWithBaseURL:[NSURL URLWithString:baseUrl]]; [_pool setValue:client forKey:baseUrl ]; if(loggingEnabled) NSLog(@"new client for path %@", baseUrl); @@ -156,7 +153,7 @@ static bool loggingEnabled = true; } +(NSNumber*) queueRequest { - NSNumber* requestId = [SWGApiClient nextRequestId]; + NSNumber* requestId = [{{classPrefix}}ApiClient nextRequestId]; if(loggingEnabled) NSLog(@"added %@ to request queue", requestId); [queuedRequests addObject:requestId]; @@ -221,31 +218,31 @@ static bool loggingEnabled = true; } +(void) configureCacheReachibilityForHost:(NSString*)host { - [[SWGApiClient sharedClientFromPool:host].reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { + [[{{classPrefix}}ApiClient sharedClientFromPool:host].reachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { reachabilityStatus = status; switch (status) { case AFNetworkReachabilityStatusUnknown: if(loggingEnabled) NSLog(@"reachability changed to AFNetworkReachabilityStatusUnknown"); - [SWGApiClient setOfflineState:true]; + [{{classPrefix}}ApiClient setOfflineState:true]; break; case AFNetworkReachabilityStatusNotReachable: if(loggingEnabled) NSLog(@"reachability changed to AFNetworkReachabilityStatusNotReachable"); - [SWGApiClient setOfflineState:true]; + [{{classPrefix}}ApiClient setOfflineState:true]; break; case AFNetworkReachabilityStatusReachableViaWWAN: if(loggingEnabled) NSLog(@"reachability changed to AFNetworkReachabilityStatusReachableViaWWAN"); - [SWGApiClient setOfflineState:false]; + [{{classPrefix}}ApiClient setOfflineState:false]; break; case AFNetworkReachabilityStatusReachableViaWiFi: if(loggingEnabled) NSLog(@"reachability changed to AFNetworkReachabilityStatusReachableViaWiFi"); - [SWGApiClient setOfflineState:false]; + [{{classPrefix}}ApiClient setOfflineState:false]; break; default: break; @@ -255,7 +252,7 @@ static bool loggingEnabled = true; reachabilityChangeBlock(status); } }]; - [[SWGApiClient sharedClientFromPool:host].reachabilityManager startMonitoring]; + [[{{classPrefix}}ApiClient sharedClientFromPool:host].reachabilityManager startMonitoring]; } -(NSString*) pathWithQueryParamsToString:(NSString*) path @@ -272,32 +269,32 @@ static bool loggingEnabled = true; id queryParam = [queryParams valueForKey:key]; if([queryParam isKindOfClass:[NSString class]]){ [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, - [SWGApiClient escape:key], [SWGApiClient escape:[queryParams valueForKey:key]]]]; + [{{classPrefix}}ApiClient escape:key], [{{classPrefix}}ApiClient escape:[queryParams valueForKey:key]]]]; } - else if([queryParam isKindOfClass:[SWGQueryParamCollection class]]){ - SWGQueryParamCollection * coll = (SWGQueryParamCollection*) queryParam; + else if([queryParam isKindOfClass:[{{classPrefix}}QueryParamCollection class]]){ + {{classPrefix}}QueryParamCollection * coll = ({{classPrefix}}QueryParamCollection*) queryParam; NSArray* values = [coll values]; NSString* format = [coll format]; if([format isEqualToString:@"csv"]) { [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, - [SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@","]]]]; + [{{classPrefix}}ApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@","]]]]; } else if([format isEqualToString:@"tsv"]) { [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, - [SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@"\t"]]]]; + [{{classPrefix}}ApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@"\t"]]]]; } else if([format isEqualToString:@"pipes"]) { [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, - [SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@"|"]]]]; + [{{classPrefix}}ApiClient escape:key], [NSString stringWithFormat:@"%@", [values componentsJoinedByString:@"|"]]]]; } else if([format isEqualToString:@"multi"]) { for(id obj in values) { [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, - [SWGApiClient escape:key], [NSString stringWithFormat:@"%@", obj]]]; + [{{classPrefix}}ApiClient escape:key], [NSString stringWithFormat:@"%@", obj]]]; counter += 1; } @@ -305,7 +302,7 @@ static bool loggingEnabled = true; } else { [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, - [SWGApiClient escape:key], [NSString stringWithFormat:@"%@", [queryParams valueForKey:key]]]]; + [{{classPrefix}}ApiClient escape:key], [NSString stringWithFormat:@"%@", [queryParams valueForKey:key]]]]; } counter += 1; @@ -333,7 +330,7 @@ static bool loggingEnabled = true; NSMutableDictionary *headersWithAuth = [NSMutableDictionary dictionaryWithDictionary:*headers]; NSMutableDictionary *querysWithAuth = [NSMutableDictionary dictionaryWithDictionary:*querys]; - SWGConfiguration *config = [SWGConfiguration sharedConfig]; + {{classPrefix}}Configuration *config = [{{classPrefix}}Configuration sharedConfig]; for (NSString *auth in authSettings) { NSDictionary *authSetting = [[config authSettings] objectForKey:auth]; @@ -486,7 +483,7 @@ static bool loggingEnabled = true; completionBlock: (void (^)(id, NSError *))completionBlock { // setting request serializer if ([requestContentType isEqualToString:@"application/json"]) { - self.requestSerializer = [SWGJSONRequestSerializer serializer]; + self.requestSerializer = [{{classPrefix}}JSONRequestSerializer serializer]; } else if ([requestContentType isEqualToString:@"application/x-www-form-urlencoded"]) { self.requestSerializer = [AFHTTPRequestSerializer serializer]; @@ -500,7 +497,7 @@ static bool loggingEnabled = true; // setting response serializer if ([responseContentType isEqualToString:@"application/json"]) { - self.responseSerializer = [SWGJSONResponseSerializer serializer]; + self.responseSerializer = [{{classPrefix}}JSONResponseSerializer serializer]; } else { self.responseSerializer = [AFHTTPResponseSerializer serializer]; @@ -511,11 +508,11 @@ static bool loggingEnabled = true; NSMutableURLRequest * request = nil; if (body != nil && [body isKindOfClass:[NSArray class]]){ - SWGFile * file; + {{classPrefix}}File * file; NSMutableDictionary * params = [[NSMutableDictionary alloc] init]; for(id obj in body) { - if([obj isKindOfClass:[SWGFile class]]) { - file = (SWGFile*) obj; + if([obj isKindOfClass:[{{classPrefix}}File class]]) { + file = ({{classPrefix}}File*) obj; requestContentType = @"multipart/form-data"; } else if([obj isKindOfClass:[NSDictionary class]]) { @@ -598,7 +595,7 @@ static bool loggingEnabled = true; // Always disable cookies! [request setHTTPShouldHandleCookies:NO]; - NSNumber* requestId = [SWGApiClient queueRequest]; + NSNumber* requestId = [{{classPrefix}}ApiClient queueRequest]; AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id response) { if([self executeRequestWithId:requestId]) { @@ -612,7 +609,7 @@ static bool loggingEnabled = true; NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; if(operation.responseObject) { // Add in the (parsed) response body. - userInfo[SWGResponseObjectErrorKey] = operation.responseObject; + userInfo[{{classPrefix}}ResponseObjectErrorKey] = operation.responseObject; } NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index d4bc3e3b81d..68647a9175b 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -1,8 +1,12 @@ #import #import -#import "AFHTTPRequestOperationManager.h" -#import "SWGJSONResponseSerializer.h" -#import "SWGJSONRequestSerializer.h" +#import +#import "{{classPrefix}}JSONResponseSerializer.h" +#import "{{classPrefix}}JSONRequestSerializer.h" +#import "{{classPrefix}}File.h" +#import "{{classPrefix}}QueryParamCollection.h" +#import "{{classPrefix}}Configuration.h" + {{#models}}{{#model}}#import "{{classname}}.h" {{/model}}{{/models}} @@ -12,10 +16,10 @@ * * The corresponding value is the parsed response body for an HTTP error. */ -extern NSString *const SWGResponseObjectErrorKey; +extern NSString *const {{classPrefix}}ResponseObjectErrorKey; -@interface SWGApiClient : AFHTTPRequestOperationManager +@interface {{classPrefix}}ApiClient : AFHTTPRequestOperationManager @property(nonatomic, assign) NSURLRequestCachePolicy cachePolicy; @property(nonatomic, assign) NSTimeInterval timeoutInterval; @@ -31,9 +35,9 @@ extern NSString *const SWGResponseObjectErrorKey; * * @param baseUrl The base url of api client. * - * @return The SWGApiClient instance. + * @return The {{classPrefix}}ApiClient instance. */ -+(SWGApiClient *)sharedClientFromPool:(NSString *)baseUrl; ++({{classPrefix}}ApiClient *)sharedClientFromPool:(NSString *)baseUrl; /** * Get the operations queue @@ -122,7 +126,7 @@ extern NSString *const SWGResponseObjectErrorKey; /** * Set the client reachability strategy * - * @param host The host of SWGApiClient. + * @param host The host of {{classPrefix}}ApiClient. */ +(void) configureCacheReachibilityForHost:(NSString*)host; diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache index 1e5e7135574..b410c45371f 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache @@ -1,18 +1,18 @@ -#import "SWGConfiguration.h" +#import "{{classPrefix}}Configuration.h" -@interface SWGConfiguration () +@interface {{classPrefix}}Configuration () @property (readwrite, nonatomic, strong) NSMutableDictionary *mutableApiKey; @property (readwrite, nonatomic, strong) NSMutableDictionary *mutableApiKeyPrefix; @end -@implementation SWGConfiguration +@implementation {{classPrefix}}Configuration #pragma mark - Singletion Methods + (instancetype) sharedConfig { - static SWGConfiguration *shardConfig = nil; + static {{classPrefix}}Configuration *shardConfig = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ shardConfig = [[self alloc] init]; diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache index 33023ca3c6f..03af5bf76a7 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache @@ -1,6 +1,6 @@ #import -@interface SWGConfiguration : NSObject +@interface {{classPrefix}}Configuration : NSObject /** diff --git a/modules/swagger-codegen/src/main/resources/objc/File-body.mustache b/modules/swagger-codegen/src/main/resources/objc/File-body.mustache index 42552767af4..83a382ec6bc 100644 --- a/modules/swagger-codegen/src/main/resources/objc/File-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/File-body.mustache @@ -1,6 +1,6 @@ -#import "SWGFile.h" +#import "{{classPrefix}}File.h" -@implementation SWGFile +@implementation {{classPrefix}}File @synthesize name = _name; @synthesize mimeType = _mimeType; @@ -23,4 +23,4 @@ return self; } -@end \ No newline at end of file +@end diff --git a/modules/swagger-codegen/src/main/resources/objc/File-header.mustache b/modules/swagger-codegen/src/main/resources/objc/File-header.mustache index fd87e13bace..3395ba6d796 100644 --- a/modules/swagger-codegen/src/main/resources/objc/File-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/File-header.mustache @@ -1,6 +1,6 @@ #import -@interface SWGFile : NSObject +@interface {{classPrefix}}File : NSObject @property(nonatomic, readonly) NSString* name; @property(nonatomic, readonly) NSString* mimeType; @@ -11,4 +11,4 @@ mimeType: (NSString*) mimeType data: (NSData*) data; -@end \ No newline at end of file +@end diff --git a/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-body.mustache index 631a20a5a6e..78b1409b6b9 100644 --- a/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-body.mustache @@ -1,6 +1,6 @@ -#import "SWGJSONRequestSerializer.h" +#import "{{classPrefix}}JSONRequestSerializer.h" -@implementation SWGJSONRequestSerializer +@implementation {{classPrefix}}JSONRequestSerializer /// /// When customize a request serializer, diff --git a/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-header.mustache index 49dd7fca3e2..a0732b93706 100644 --- a/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/JSONRequestSerializer-header.mustache @@ -1,5 +1,5 @@ #import #import -@interface SWGJSONRequestSerializer : AFJSONRequestSerializer +@interface {{classPrefix}}JSONRequestSerializer : AFJSONRequestSerializer @end diff --git a/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-body.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-body.mustache index a2dd21bcf5d..3a19dd1ca4e 100644 --- a/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-body.mustache @@ -1,4 +1,4 @@ -#import "SWGJSONResponseSerializer.h" +#import "{{classPrefix}}JSONResponseSerializer.h" static BOOL JSONParseError(NSError *error) { if ([error.domain isEqualToString:NSCocoaErrorDomain] && error.code == 3840) { @@ -8,7 +8,7 @@ static BOOL JSONParseError(NSError *error) { return NO; } -@implementation SWGJSONResponseSerializer +@implementation {{classPrefix}}JSONResponseSerializer /// /// When customize a response serializer, diff --git a/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-header.mustache b/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-header.mustache index 16cda122217..7a5f152e271 100644 --- a/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/JSONResponseSerializer-header.mustache @@ -1,6 +1,6 @@ #import #import -@interface SWGJSONResponseSerializer : AFJSONResponseSerializer +@interface {{classPrefix}}JSONResponseSerializer : AFJSONResponseSerializer @end diff --git a/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache index 1f897ab1d56..122484f1ad4 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Object-body.mustache @@ -1,4 +1,4 @@ -#import "SWGObject.h" +#import "{{classPrefix}}Object.h" -@implementation SWGObject +@implementation {{classPrefix}}Object @end diff --git a/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache index ccec208abc0..f73d1bab9b0 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache @@ -1,5 +1,5 @@ #import #import "JSONModel.h" -@interface SWGObject : JSONModel +@interface {{classPrefix}}Object : JSONModel @end diff --git a/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-body.mustache b/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-body.mustache index 83303045185..23d0c8eaa86 100644 --- a/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-body.mustache @@ -1,6 +1,6 @@ -#import "SWGQueryParamCollection.h" +#import "{{classPrefix}}QueryParamCollection.h" -@implementation SWGQueryParamCollection +@implementation {{classPrefix}}QueryParamCollection @synthesize values = _values; @synthesize format = _format; diff --git a/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-header.mustache b/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-header.mustache index 3b771881b0f..0389cce98be 100644 --- a/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/QueryParamCollection-header.mustache @@ -1,6 +1,6 @@ #import -@interface SWGQueryParamCollection : NSObject +@interface {{classPrefix}}QueryParamCollection : NSObject @property(nonatomic, readonly) NSArray* values; @property(nonatomic, readonly) NSString* format; diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 473f3684243..1b9d09985ff 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -69,7 +69,7 @@ static NSString * basePath = @"{{basePath}}"; } -(unsigned long) requestQueueSize { - return [SWGApiClient requestQueueSize]; + return [{{classPrefix}}ApiClient requestQueueSize]; } #pragma mark - Api Methods @@ -106,7 +106,7 @@ static NSString * basePath = @"{{basePath}}"; NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; {{#queryParams}}if({{paramName}} != nil) { {{#collectionFormat}} - queryParams[@"{{baseName}}"] = [[SWGQueryParamCollection alloc] initWithValuesAndFormat: {{baseName}} format: @"{{collectionFormat}}"]; + queryParams[@"{{baseName}}"] = [[{{classPrefix}}QueryParamCollection alloc] initWithValuesAndFormat: {{baseName}} format: @"{{collectionFormat}}"]; {{/collectionFormat}} {{^collectionFormat}}queryParams[@"{{baseName}}"] = {{paramName}};{{/collectionFormat}} } @@ -118,7 +118,7 @@ static NSString * basePath = @"{{basePath}}"; {{/headerParams}} // HTTP header `Accept` - headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[{{#produces}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}}]]; + headerParams[@"Accept"] = [{{classPrefix}}ApiClient selectHeaderAccept:@[{{#produces}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}}]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; } @@ -133,7 +133,7 @@ static NSString * basePath = @"{{basePath}}"; } // request content type - NSString *requestContentType = [SWGApiClient selectHeaderContentType:@[{{#consumes}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}}]]; + NSString *requestContentType = [{{classPrefix}}ApiClient selectHeaderContentType:@[{{#consumes}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/consumes}}]]; // Authentication setting NSArray *authSettings = @[{{#authMethods}}@"{{name}}"{{#hasMore}}, {{/hasMore}}{{/authMethods}}]; @@ -146,7 +146,7 @@ static NSString * basePath = @"{{basePath}}"; NSMutableArray *objs = [[NSMutableArray alloc] init]; for (id dict in (NSArray*)bodyParam) { if([dict respondsToSelector:@selector(toDictionary)]) { - [objs addObject:[(SWGObject*)dict toDictionary]]; + [objs addObject:[({{classPrefix}}Object*)dict toDictionary]]; } else{ [objs addObject:dict]; @@ -155,7 +155,7 @@ static NSString * basePath = @"{{basePath}}"; bodyParam = objs; } else if([bodyParam respondsToSelector:@selector(toDictionary)]) { - bodyParam = [(SWGObject*)bodyParam toDictionary]; + bodyParam = [({{classPrefix}}Object*)bodyParam toDictionary]; } {{/bodyParam}} {{^bodyParam}} diff --git a/modules/swagger-codegen/src/main/resources/objc/api-header.mustache b/modules/swagger-codegen/src/main/resources/objc/api-header.mustache index 7f14262d116..263c213dd6f 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-header.mustache @@ -1,16 +1,16 @@ #import {{#imports}}#import "{{import}}.h" {{/imports}} -#import "SWGObject.h" -#import "SWGApiClient.h" +#import "{{classPrefix}}Object.h" +#import "{{classPrefix}}ApiClient.h" {{newline}} {{#operations}} @interface {{classname}}: NSObject -@property(nonatomic, assign)SWGApiClient *apiClient; +@property(nonatomic, assign){{classPrefix}}ApiClient *apiClient; --(instancetype) initWithApiClient:(SWGApiClient *)apiClient; +-(instancetype) initWithApiClient:({{classPrefix}}ApiClient *)apiClient; -(void) addHeader:(NSString*)value forKey:(NSString*)key; -(unsigned long) requestQueueSize; +({{classname}}*) apiWithHeader:(NSString*)headerValue key:(NSString*)key; diff --git a/modules/swagger-codegen/src/main/resources/objc/model-header.mustache b/modules/swagger-codegen/src/main/resources/objc/model-header.mustache index 81ac19a0b73..4afaec31a24 100644 --- a/modules/swagger-codegen/src/main/resources/objc/model-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/model-header.mustache @@ -1,5 +1,5 @@ #import -#import "SWGObject.h" +#import "{{classPrefix}}Object.h" {{#imports}}#import "{{import}}.h" {{/imports}} {{newline}} @@ -9,7 +9,7 @@ @protocol {{classname}} @end -@interface {{classname}} : SWGObject +@interface {{classname}} : {{classPrefix}}Object {{#vars}} {{#description}}/* {{{description}}} {{^required}}[optional]{{/required}} diff --git a/samples/client/petstore/objc/LICENSE b/samples/client/petstore/objc/LICENSE deleted file mode 100644 index 0a7c3babc79..00000000000 --- a/samples/client/petstore/objc/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright (c) 2015 geekerzp - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index 34722ed3ad9..e3f70231b2b 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -1,8 +1,12 @@ #import #import -#import "AFHTTPRequestOperationManager.h" +#import #import "SWGJSONResponseSerializer.h" -#import "SWGJSONRequestSerializer.h" +#import "SWGJSONRequestSerializer.h" +#import "SWGFile.h" +#import "SWGQueryParamCollection.h" +#import "SWGConfiguration.h" + #import "SWGUser.h" #import "SWGCategory.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m index d7e6fac8385..2206b95ed1a 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m @@ -1,7 +1,4 @@ #import "SWGApiClient.h" -#import "SWGFile.h" -#import "SWGQueryParamCollection.h" -#import "SWGConfiguration.h" @implementation SWGApiClient diff --git a/samples/client/petstore/objc/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClient/SWGFile.h index fd87e13bace..f96fb1fab8a 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGFile.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGFile.h @@ -11,4 +11,4 @@ mimeType: (NSString*) mimeType data: (NSData*) data; -@end \ No newline at end of file +@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGFile.m b/samples/client/petstore/objc/SwaggerClient/SWGFile.m index 42552767af4..9a1304c2696 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGFile.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGFile.m @@ -23,4 +23,4 @@ return self; } -@end \ No newline at end of file +@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPet.h b/samples/client/petstore/objc/SwaggerClient/SWGPet.h index 9b8a274d20b..edd54e9f31a 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPet.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGPet.h @@ -1,7 +1,7 @@ #import #import "SWGObject.h" -#import "SwaggerClient.SWGTag.h" -#import "SwaggerClient.SWGCategory.h" +#import "SWGTag.h" +#import "SWGCategory.h" @protocol SWGPet diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h index ef8e4d1f271..257a7d1453e 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h @@ -1,6 +1,6 @@ #import -#import "SwaggerClient.SWGPet.h" -#import "SwaggerClient.SWGFile.h" +#import "SWGPet.h" +#import "SWGFile.h" #import "SWGObject.h" #import "SWGApiClient.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 88fda7755b0..01d127bc283 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -1,8 +1,8 @@ #import "SWGPetApi.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" -#import "SwaggerClient.SWGPet.h" -#import "SwaggerClient.SWGFile.h" +#import "SWGPet.h" +#import "SWGFile.h" @interface SWGPetApi () diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h index d155f275d1e..7488c1baa70 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.h @@ -1,5 +1,5 @@ #import -#import "SwaggerClient.SWGOrder.h" +#import "SWGOrder.h" #import "SWGObject.h" #import "SWGApiClient.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m index 8248b043431..71b5af87744 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m @@ -1,7 +1,7 @@ #import "SWGStoreApi.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" -#import "SwaggerClient.SWGOrder.h" +#import "SWGOrder.h" @interface SWGStoreApi () diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h index 481ce8c9c4d..6fda87cca70 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.h @@ -1,5 +1,5 @@ #import -#import "SwaggerClient.SWGUser.h" +#import "SWGUser.h" #import "SWGObject.h" #import "SWGApiClient.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m index 52f3fed4133..06b6d2ce666 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m @@ -1,7 +1,7 @@ #import "SWGUserApi.h" #import "SWGFile.h" #import "SWGQueryParamCollection.h" -#import "SwaggerClient.SWGUser.h" +#import "SWGUser.h" @interface SWGUserApi () diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index 5e768ade5c6..160ab6c70a8 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -40,7 +40,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 06B47F8BDBE73A9C03BFBEA2 /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = ""; }; 1A81C3BE3E54961CD827EAE3 /* Pods-SwaggerClient_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig"; sourceTree = ""; }; 4CCE21315897B7D544C83242 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -189,7 +188,6 @@ children = ( E9675D953C6DCDE71A1BDFD4 /* SwaggerClient.podspec */, 4CCE21315897B7D544C83242 /* README.md */, - 06B47F8BDBE73A9C03BFBEA2 /* LICENSE */, ); name = "Podspec Metadata"; sourceTree = ""; diff --git a/samples/client/petstore/objc/pom.xml b/samples/client/petstore/objc/SwaggerClientTests/pom.xml similarity index 97% rename from samples/client/petstore/objc/pom.xml rename to samples/client/petstore/objc/SwaggerClientTests/pom.xml index 85fc5ff6139..d1f461da7fd 100644 --- a/samples/client/petstore/objc/pom.xml +++ b/samples/client/petstore/objc/SwaggerClientTests/pom.xml @@ -51,7 +51,7 @@ -workspace SwaggerClient.xcworkspace -scheme - SwaggerClient + SwaggerClient-Example test -destination platform=iOS Simulator,name=iPhone 6,OS=8.3 From f48a7f20e64a44b5b3afb0acf7985b7cde19192f Mon Sep 17 00:00:00 2001 From: geekerzp Date: Sat, 27 Jun 2015 16:54:37 +0800 Subject: [PATCH 13/22] Update config-help of objc cli --- .../io/swagger/codegen/languages/ObjcClientCodegen.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 287957d1924..cb5992aa1fe 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -103,9 +103,9 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { instantiationTypes.put("map", "NSMutableDictionary"); cliOptions.clear(); - cliOptions.add(new CliOption("classPrefix", "prefix for generated classes")); - cliOptions.add(new CliOption("podName", "cocoapods package name")); - cliOptions.add(new CliOption("podVersion", "cocoapods package version")); + cliOptions.add(new CliOption("classPrefix", "prefix for generated classes (convention: Abbreviation of pod name e.g. `HN` for `HackerNews`), default: `SWG`")); + cliOptions.add(new CliOption("podName", "cocoapods package name (convention: CameCase), default: `SwaggerClient`")); + cliOptions.add(new CliOption("podVersion", "cocoapods package version, default: `1.0.0`")); } public CodegenType getTag() { From 0e56d0d1c692222eccc13080cf7d2102b02ee610 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Fri, 3 Jul 2015 14:29:30 +0800 Subject: [PATCH 14/22] Support file downloading in Objc codegen. --- .../codegen/languages/ObjcClientCodegen.java | 1 + .../resources/objc/ApiClient-body.mustache | 146 +++++++++++++----- .../resources/objc/ApiClient-header.mustache | 5 +- .../objc/Configuration-body.mustache | 1 + .../objc/Configuration-header.mustache | 5 + .../main/resources/objc/File-body.mustache | 17 +- .../main/resources/objc/File-header.mustache | 31 ++++ .../src/main/resources/objc/api-body.mustache | 16 +- .../objc/SwaggerClient/SWGApiClient.h | 5 +- .../objc/SwaggerClient/SWGApiClient.m | 146 +++++++++++++----- .../objc/SwaggerClient/SWGConfiguration.h | 5 + .../objc/SwaggerClient/SWGConfiguration.m | 1 + .../petstore/objc/SwaggerClient/SWGFile.h | 31 ++++ .../petstore/objc/SwaggerClient/SWGFile.m | 17 +- .../petstore/objc/SwaggerClient/SWGPetApi.m | 71 +++++---- .../petstore/objc/SwaggerClient/SWGStoreApi.m | 43 +++--- .../petstore/objc/SwaggerClient/SWGUserApi.m | 67 ++++---- 17 files changed, 428 insertions(+), 180 deletions(-) diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index cb5992aa1fe..e751bda408e 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -69,6 +69,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("number", "NSNumber"); typeMapping.put("List", "NSArray"); typeMapping.put("object", "NSObject"); + typeMapping.put("file", "File"); // ref: http://www.tutorialspoint.com/objective_c/objective_c_basic_syntax.htm reservedWords = new HashSet( diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index 13c0c84ac58..af82da664ee 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -348,6 +348,16 @@ static bool loggingEnabled = true; *querys = [NSDictionary dictionaryWithDictionary:querysWithAuth]; } +#pragma mark - Predicate methods + +- (BOOL) isDownloadFile:(NSString *)responseType { + if ([responseType isEqualToString:@"{{classPrefix}}File*"]) { + return YES; + } else { + return NO; + } +} + #pragma mark - Deserialize methods - (id) deserialize:(id) data class:(NSString *) class { @@ -356,8 +366,8 @@ static bool loggingEnabled = true; NSMutableArray *resultArray = nil; NSMutableDictionary *resultDict = nil; - // return nil if data is nil - if (!data) { + // return nil if data is nil or class is nil + if (!data || !class) { return nil; } @@ -470,6 +480,94 @@ static bool loggingEnabled = true; return nil; } +#pragma mark - Operation Methods + +- (void) operationWithCompletionBlock: (NSURLRequest *)request + requestId: (NSNumber *) requestId + completionBlock: (void (^)(id, NSError *))completionBlock { + AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request + success:^(AFHTTPRequestOperation *operation, id response) { + if([self executeRequestWithId:requestId]) { + if(self.logServerResponses) { + [self logResponse:response forRequest:request error:nil]; + } + completionBlock(response, nil); + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if([self executeRequestWithId:requestId]) { + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if(operation.responseObject) { + // Add in the (parsed) response body. + userInfo[{{classPrefix}}ResponseObjectErrorKey] = operation.responseObject; + } + NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; + + if(self.logServerResponses) + [self logResponse:nil forRequest:request error:augmentedError]; + completionBlock(nil, augmentedError); + } + }]; + + [self.operationQueue addOperation:op]; +} + +- (void) downloadOperationWithCompletionBlock: (NSURLRequest *)request + requestId: (NSNumber *) requestId + completionBlock: (void (^)(id, NSError *))completionBlock { + AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request + success:^(AFHTTPRequestOperation *operation, id responseObject) { + {{classPrefix}}Configuration *config = [{{classPrefix}}Configuration sharedConfig]; + NSString *directory = nil; + if (config.tempFolderPath) { + directory = config.tempFolderPath; + } + else { + directory = NSTemporaryDirectory(); + } + + NSDictionary *headers = operation.response.allHeaderFields; + NSString *filename = nil; + if ([headers objectForKey:@"Content-Disposition"]) { + + NSString *pattern = @"filename=['\"]?([^'\"\\s]+)['\"]?"; + NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern + options:NSRegularExpressionCaseInsensitive + error:nil]; + NSString *contentDispositionHeader = [headers objectForKey:@"Content-Disposition"]; + NSTextCheckingResult *match = [regexp firstMatchInString:contentDispositionHeader + options:0 + range:NSMakeRange(0, [contentDispositionHeader length])]; + filename = [contentDispositionHeader substringWithRange:[match rangeAtIndex:1]]; + } + else { + filename = [NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]]; + } + + NSString *filepath = [directory stringByAppendingPathComponent:filename]; + + {{classPrefix}}File *file = [[{{classPrefix}}File alloc] initWithPath:filepath data:operation.responseData name:filename]; + completionBlock(file, nil); + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + + if ([self executeRequestWithId:requestId]) { + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if (operation.responseObject) { + userInfo[{{classPrefix}}ResponseObjectErrorKey] = operation.responseObject; + } + + NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; + + if (self.logServerResponses) { + [self logResponse:nil forRequest:request error:augmentedError]; + } + + completionBlock(nil, augmentedError); + } + }]; + + [self.operationQueue addOperation:op]; +} + #pragma mark - Perform Request Methods -(NSNumber*) requestWithCompletionBlock: (NSString*) path @@ -480,6 +578,7 @@ static bool loggingEnabled = true; authSettings: (NSArray *) authSettings requestContentType: (NSString*) requestContentType responseContentType: (NSString*) responseContentType + responseType: (NSString *) responseType completionBlock: (void (^)(id, NSError *))completionBlock { // setting request serializer if ([requestContentType isEqualToString:@"application/json"]) { @@ -596,40 +695,17 @@ static bool loggingEnabled = true; [request setHTTPShouldHandleCookies:NO]; NSNumber* requestId = [{{classPrefix}}ApiClient queueRequest]; - AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request - success:^(AFHTTPRequestOperation *operation, id response) { - if([self executeRequestWithId:requestId]) { - if(self.logServerResponses) { - [self logResponse:response forRequest:request error:nil]; - } - completionBlock(response, nil); - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if([self executeRequestWithId:requestId]) { - NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; - if(operation.responseObject) { - // Add in the (parsed) response body. - userInfo[{{classPrefix}}ResponseObjectErrorKey] = operation.responseObject; - } - NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; - - if(self.logServerResponses) - [self logResponse:nil forRequest:request error:augmentedError]; - completionBlock(nil, augmentedError); - } - }]; - - [self.operationQueue addOperation:op]; + if ([self isDownloadFile:responseType]) { + [self downloadOperationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { + completionBlock(data, error); + }]; + } + else { + [self operationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { + completionBlock([self deserialize:data class:responseType], error); + }]; + } return requestId; } @end - - - - - - - - - diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index 68647a9175b..ee309d774c5 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -199,10 +199,7 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; authSettings: (NSArray *) authSettings requestContentType:(NSString*) requestContentType responseContentType:(NSString*) responseContentType + responseType:(NSString *) responseType completionBlock:(void (^)(id, NSError *))completionBlock; - @end - - - diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache index b410c45371f..6b681b0ffd5 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache @@ -27,6 +27,7 @@ if (self) { self.username = @""; self.password = @""; + self.tempFolderPath = nil; self.mutableApiKey = [NSMutableDictionary dictionary]; self.mutableApiKeyPrefix = [NSMutableDictionary dictionary]; } diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache index 03af5bf76a7..579cb4e15a9 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache @@ -23,6 +23,11 @@ @property (nonatomic) NSString *username; @property (nonatomic) NSString *password; +/** + * Temp folder for file download + */ +@property (nonatomic) NSString *tempFolderPath; + /** * Get configuration singleton instance */ diff --git a/modules/swagger-codegen/src/main/resources/objc/File-body.mustache b/modules/swagger-codegen/src/main/resources/objc/File-body.mustache index 83a382ec6bc..496fd0c2519 100644 --- a/modules/swagger-codegen/src/main/resources/objc/File-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/File-body.mustache @@ -2,10 +2,6 @@ @implementation {{classPrefix}}File -@synthesize name = _name; -@synthesize mimeType = _mimeType; -@synthesize data = _data; - - (id) init { self = [super init]; return self; @@ -23,4 +19,17 @@ return self; } +- (id) initWithPath:(NSString *)filepath data:(NSData *)data name:(NSString *)filename { + self = [super init]; + + if (self) { + _name = filename; + _data = data; + _path = filepath; + [data writeToFile:_path atomically:YES]; + } + + return self; +} + @end diff --git a/modules/swagger-codegen/src/main/resources/objc/File-header.mustache b/modules/swagger-codegen/src/main/resources/objc/File-header.mustache index 3395ba6d796..3bea6848e6b 100644 --- a/modules/swagger-codegen/src/main/resources/objc/File-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/File-header.mustache @@ -2,13 +2,44 @@ @interface {{classPrefix}}File : NSObject +/** + * File name + */ @property(nonatomic, readonly) NSString* name; + +/** + * File mimeType, for `multipart/form` post + */ @property(nonatomic, readonly) NSString* mimeType; + +/** + * File data + */ @property(nonatomic, readonly) NSData* data; + +/** + * File field parameter name, for `multipart/form` post + */ @property(nonatomic) NSString* paramName; +/** + * File path + */ +@property(nonatomic, readonly) NSString *path; + +/** + * Initialize with `filename`, `mimeType`, `filedata`. + */ - (id) initWithNameData: (NSString*) filename mimeType: (NSString*) mimeType data: (NSData*) data; + +/** + * Initialize with `filepath`, `filedata`, `filename` + * and write file data into file path. + */ +- (id) initWithPath: (NSString *) filepath + data: (NSData *) data + name: (NSString *) filename; @end diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 1b9d09985ff..5a0442705dd 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -84,8 +84,8 @@ static NSString * basePath = @"{{basePath}}"; /// -(NSNumber*) {{nickname}}WithCompletionBlock{{^allParams}}: {{/allParams}}{{#allParams}}{{#secondaryParam}} {{paramName}}{{/secondaryParam}}: ({{{dataType}}}) {{paramName}} {{/allParams}} - {{#returnBaseType}}{{#hasParams}}completionHandler: {{/hasParams}}(void (^)({{{returnType}}} output, NSError* error))completionBlock{{/returnBaseType}} - {{^returnBaseType}}{{#hasParams}}completionHandler: {{/hasParams}}(void (^)(NSError* error))completionBlock{{/returnBaseType}} { + {{#returnBaseType}}{{#hasParams}}completionHandler: {{/hasParams}}(void (^)({{{returnType}}} output, NSError* error))completionBlock { {{/returnBaseType}} + {{^returnBaseType}}{{#hasParams}}completionHandler: {{/hasParams}}(void (^)(NSError* error))completionBlock { {{/returnBaseType}} {{#allParams}}{{#required}} // verify the required parameter '{{paramName}}' is set @@ -100,7 +100,7 @@ static NSString * basePath = @"{{basePath}}"; if ([requestUrl rangeOfString:@".{format}"].location != NSNotFound) [requestUrl replaceCharactersInRange: [requestUrl rangeOfString:@".{format}"] withString:@".json"]; - {{#pathParams}}[requestUrl replaceCharactersInRange: [requestUrl rangeOfString:[NSString stringWithFormat:@"%@%@%@", @"{", @"{{baseName}}", @"}"]] withString: [SWGApiClient escape:{{paramName}}]]; + {{#pathParams}}[requestUrl replaceCharactersInRange: [requestUrl rangeOfString:[NSString stringWithFormat:@"%@%@%@", @"{", @"{{baseName}}", @"}"]] withString: [{{classPrefix}}ApiClient escape:{{paramName}}]]; {{/pathParams}} NSMutableDictionary* queryParams = [[NSMutableDictionary alloc] init]; @@ -116,8 +116,8 @@ static NSString * basePath = @"{{basePath}}"; {{#headerParams}}if({{paramName}} != nil) headerParams[@"{{baseName}}"] = {{paramName}}; {{/headerParams}} - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [{{classPrefix}}ApiClient selectHeaderAccept:@[{{#produces}}@"{{mediaType}}"{{#hasMore}}, {{/hasMore}}{{/produces}}]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -197,9 +197,10 @@ static NSString * basePath = @"{{basePath}}"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: {{^returnType}}nil{{/returnType}}{{#returnType}}@"{{{ returnType }}}"{{/returnType}} completionBlock: ^(id data, NSError *error) { {{^returnType}}completionBlock(error);{{/returnType}} - {{#returnType}}completionBlock([self.apiClient deserialize: data class:@"{{{returnType}}}"], error);{{/returnType}} + {{#returnType}}completionBlock(({{{ returnType }}})data, error);{{/returnType}} } ]; } @@ -209,6 +210,3 @@ static NSString * basePath = @"{{basePath}}"; {{newline}} {{/operations}} @end - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index e3f70231b2b..638e9b59952 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -203,10 +203,7 @@ extern NSString *const SWGResponseObjectErrorKey; authSettings: (NSArray *) authSettings requestContentType:(NSString*) requestContentType responseContentType:(NSString*) responseContentType + responseType:(NSString *) responseType completionBlock:(void (^)(id, NSError *))completionBlock; - @end - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m index 2206b95ed1a..febaac0fa72 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m @@ -348,6 +348,16 @@ static bool loggingEnabled = true; *querys = [NSDictionary dictionaryWithDictionary:querysWithAuth]; } +#pragma mark - Predicate methods + +- (BOOL) isDownloadFile:(NSString *)responseType { + if ([responseType isEqualToString:@"SWGFile*"]) { + return YES; + } else { + return NO; + } +} + #pragma mark - Deserialize methods - (id) deserialize:(id) data class:(NSString *) class { @@ -356,8 +366,8 @@ static bool loggingEnabled = true; NSMutableArray *resultArray = nil; NSMutableDictionary *resultDict = nil; - // return nil if data is nil - if (!data) { + // return nil if data is nil or class is nil + if (!data || !class) { return nil; } @@ -470,6 +480,94 @@ static bool loggingEnabled = true; return nil; } +#pragma mark - Operation Methods + +- (void) operationWithCompletionBlock: (NSURLRequest *)request + requestId: (NSNumber *) requestId + completionBlock: (void (^)(id, NSError *))completionBlock { + AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request + success:^(AFHTTPRequestOperation *operation, id response) { + if([self executeRequestWithId:requestId]) { + if(self.logServerResponses) { + [self logResponse:response forRequest:request error:nil]; + } + completionBlock(response, nil); + } + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + if([self executeRequestWithId:requestId]) { + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if(operation.responseObject) { + // Add in the (parsed) response body. + userInfo[SWGResponseObjectErrorKey] = operation.responseObject; + } + NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; + + if(self.logServerResponses) + [self logResponse:nil forRequest:request error:augmentedError]; + completionBlock(nil, augmentedError); + } + }]; + + [self.operationQueue addOperation:op]; +} + +- (void) downloadOperationWithCompletionBlock: (NSURLRequest *)request + requestId: (NSNumber *) requestId + completionBlock: (void (^)(id, NSError *))completionBlock { + AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request + success:^(AFHTTPRequestOperation *operation, id responseObject) { + SWGConfiguration *config = [SWGConfiguration sharedConfig]; + NSString *directory = nil; + if (config.tempFolderPath) { + directory = config.tempFolderPath; + } + else { + directory = NSTemporaryDirectory(); + } + + NSDictionary *headers = operation.response.allHeaderFields; + NSString *filename = nil; + if ([headers objectForKey:@"Content-Disposition"]) { + + NSString *pattern = @"filename=['\"]?([^'\"\\s]+)['\"]?"; + NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern + options:NSRegularExpressionCaseInsensitive + error:nil]; + NSString *contentDispositionHeader = [headers objectForKey:@"Content-Disposition"]; + NSTextCheckingResult *match = [regexp firstMatchInString:contentDispositionHeader + options:0 + range:NSMakeRange(0, [contentDispositionHeader length])]; + filename = [contentDispositionHeader substringWithRange:[match rangeAtIndex:1]]; + } + else { + filename = [NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]]; + } + + NSString *filepath = [directory stringByAppendingPathComponent:filename]; + + SWGFile *file = [[SWGFile alloc] initWithPath:filepath data:operation.responseData name:filename]; + completionBlock(file, nil); + } failure:^(AFHTTPRequestOperation *operation, NSError *error) { + + if ([self executeRequestWithId:requestId]) { + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if (operation.responseObject) { + userInfo[SWGResponseObjectErrorKey] = operation.responseObject; + } + + NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; + + if (self.logServerResponses) { + [self logResponse:nil forRequest:request error:augmentedError]; + } + + completionBlock(nil, augmentedError); + } + }]; + + [self.operationQueue addOperation:op]; +} + #pragma mark - Perform Request Methods -(NSNumber*) requestWithCompletionBlock: (NSString*) path @@ -480,6 +578,7 @@ static bool loggingEnabled = true; authSettings: (NSArray *) authSettings requestContentType: (NSString*) requestContentType responseContentType: (NSString*) responseContentType + responseType: (NSString *) responseType completionBlock: (void (^)(id, NSError *))completionBlock { // setting request serializer if ([requestContentType isEqualToString:@"application/json"]) { @@ -596,40 +695,17 @@ static bool loggingEnabled = true; [request setHTTPShouldHandleCookies:NO]; NSNumber* requestId = [SWGApiClient queueRequest]; - AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request - success:^(AFHTTPRequestOperation *operation, id response) { - if([self executeRequestWithId:requestId]) { - if(self.logServerResponses) { - [self logResponse:response forRequest:request error:nil]; - } - completionBlock(response, nil); - } - } failure:^(AFHTTPRequestOperation *operation, NSError *error) { - if([self executeRequestWithId:requestId]) { - NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; - if(operation.responseObject) { - // Add in the (parsed) response body. - userInfo[SWGResponseObjectErrorKey] = operation.responseObject; - } - NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; - - if(self.logServerResponses) - [self logResponse:nil forRequest:request error:augmentedError]; - completionBlock(nil, augmentedError); - } - }]; - - [self.operationQueue addOperation:op]; + if ([self isDownloadFile:responseType]) { + [self downloadOperationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { + completionBlock(data, error); + }]; + } + else { + [self operationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { + completionBlock([self deserialize:data class:responseType], error); + }]; + } return requestId; } @end - - - - - - - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h index 33023ca3c6f..cb334828549 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h @@ -23,6 +23,11 @@ @property (nonatomic) NSString *username; @property (nonatomic) NSString *password; +/** + * Temp folder for file download + */ +@property (nonatomic) NSString *tempFolderPath; + /** * Get configuration singleton instance */ diff --git a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m index 89d5a597946..69fb424d8d8 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m @@ -27,6 +27,7 @@ if (self) { self.username = @""; self.password = @""; + self.tempFolderPath = nil; self.mutableApiKey = [NSMutableDictionary dictionary]; self.mutableApiKeyPrefix = [NSMutableDictionary dictionary]; } diff --git a/samples/client/petstore/objc/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClient/SWGFile.h index f96fb1fab8a..bca7cd3d447 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGFile.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGFile.h @@ -2,13 +2,44 @@ @interface SWGFile : NSObject +/** + * File name + */ @property(nonatomic, readonly) NSString* name; + +/** + * File mimeType, for `multipart/form` post + */ @property(nonatomic, readonly) NSString* mimeType; + +/** + * File data + */ @property(nonatomic, readonly) NSData* data; + +/** + * File field parameter name, for `multipart/form` post + */ @property(nonatomic) NSString* paramName; +/** + * File path + */ +@property(nonatomic, readonly) NSString *path; + +/** + * Initialize with `filename`, `mimeType`, `filedata`. + */ - (id) initWithNameData: (NSString*) filename mimeType: (NSString*) mimeType data: (NSData*) data; + +/** + * Initialize with `filepath`, `filedata`, `filename` + * and write file data into file path. + */ +- (id) initWithPath: (NSString *) filepath + data: (NSData *) data + name: (NSString *) filename; @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGFile.m b/samples/client/petstore/objc/SwaggerClient/SWGFile.m index 9a1304c2696..46ad41508c4 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGFile.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGFile.m @@ -2,10 +2,6 @@ @implementation SWGFile -@synthesize name = _name; -@synthesize mimeType = _mimeType; -@synthesize data = _data; - - (id) init { self = [super init]; return self; @@ -23,4 +19,17 @@ return self; } +- (id) initWithPath:(NSString *)filepath data:(NSData *)data name:(NSString *)filename { + self = [super init]; + + if (self) { + _name = filename; + _data = data; + _path = filepath; + [data writeToFile:_path atomically:YES]; + } + + return self; +} + @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 01d127bc283..33c38b8ed2c 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -83,7 +83,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) updatePetWithCompletionBlock: (SWGPet*) body - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { @@ -100,8 +100,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -153,6 +153,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -170,7 +171,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) addPetWithCompletionBlock: (SWGPet*) body - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { @@ -187,8 +188,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -240,6 +241,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -256,8 +258,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) findPetsByStatusWithCompletionBlock: (NSArray*) status - completionHandler: (void (^)(NSArray* output, NSError* error))completionBlock - { + completionHandler: (void (^)(NSArray* output, NSError* error))completionBlock { + @@ -280,8 +282,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -320,9 +322,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"NSArray*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"NSArray*"], error); + completionBlock((NSArray*)data, error); } ]; } @@ -336,8 +339,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) findPetsByTagsWithCompletionBlock: (NSArray*) tags - completionHandler: (void (^)(NSArray* output, NSError* error))completionBlock - { + completionHandler: (void (^)(NSArray* output, NSError* error))completionBlock { + @@ -360,8 +363,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -400,9 +403,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"NSArray*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"NSArray*"], error); + completionBlock((NSArray*)data, error); } ]; } @@ -416,8 +420,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) getPetByIdWithCompletionBlock: (NSNumber*) petId - completionHandler: (void (^)(SWGPet* output, NSError* error))completionBlock - { + completionHandler: (void (^)(SWGPet* output, NSError* error))completionBlock { + // verify the required parameter 'petId' is set @@ -440,8 +444,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -480,9 +484,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"SWGPet*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"SWGPet*"], error); + completionBlock((SWGPet*)data, error); } ]; } @@ -503,7 +508,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; status: (NSString*) status - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { // verify the required parameter 'petId' is set @@ -526,8 +531,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -582,6 +587,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -602,7 +608,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; petId: (NSNumber*) petId - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { // verify the required parameter 'petId' is set @@ -627,8 +633,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; if(apiKey != nil) headerParams[@"api_key"] = apiKey; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -667,6 +673,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -690,7 +697,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; file: (SWGFile*) file - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { // verify the required parameter 'petId' is set @@ -713,8 +720,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -776,6 +783,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -786,6 +794,3 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; @end - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m index 71b5af87744..85a0afe47b0 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m @@ -78,8 +78,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// @returns NSDictionary* /* NSString, NSNumber */ /// -(NSNumber*) getInventoryWithCompletionBlock: - (void (^)(NSDictionary* /* NSString, NSNumber */ output, NSError* error))completionBlock - { + (void (^)(NSDictionary* /* NSString, NSNumber */ output, NSError* error))completionBlock { + @@ -96,8 +96,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -136,9 +136,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"NSDictionary* /* NSString, NSNumber */" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"NSDictionary* /* NSString, NSNumber */"], error); + completionBlock((NSDictionary* /* NSString, NSNumber */)data, error); } ]; } @@ -152,8 +153,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) placeOrderWithCompletionBlock: (SWGOrder*) body - completionHandler: (void (^)(SWGOrder* output, NSError* error))completionBlock - { + completionHandler: (void (^)(SWGOrder* output, NSError* error))completionBlock { + @@ -170,8 +171,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -223,9 +224,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"SWGOrder*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"SWGOrder*"], error); + completionBlock((SWGOrder*)data, error); } ]; } @@ -239,8 +241,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) getOrderByIdWithCompletionBlock: (NSString*) orderId - completionHandler: (void (^)(SWGOrder* output, NSError* error))completionBlock - { + completionHandler: (void (^)(SWGOrder* output, NSError* error))completionBlock { + // verify the required parameter 'orderId' is set @@ -263,8 +265,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -303,9 +305,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"SWGOrder*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"SWGOrder*"], error); + completionBlock((SWGOrder*)data, error); } ]; } @@ -320,7 +323,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) deleteOrderWithCompletionBlock: (NSString*) orderId - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { // verify the required parameter 'orderId' is set @@ -343,8 +346,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -383,6 +386,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -393,6 +397,3 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; @end - - - diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m index 06b6d2ce666..d28d94011b7 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m @@ -82,7 +82,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) createUserWithCompletionBlock: (SWGUser*) body - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { @@ -99,8 +99,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -152,6 +152,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -169,7 +170,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) createUsersWithArrayInputWithCompletionBlock: (NSArray*) body - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { @@ -186,8 +187,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -239,6 +240,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -256,7 +258,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) createUsersWithListInputWithCompletionBlock: (NSArray*) body - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { @@ -273,8 +275,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -326,6 +328,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -345,8 +348,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) loginUserWithCompletionBlock: (NSString*) username password: (NSString*) password - completionHandler: (void (^)(NSString* output, NSError* error))completionBlock - { + completionHandler: (void (^)(NSString* output, NSError* error))completionBlock { + @@ -371,8 +374,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -411,9 +414,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"NSString*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"NSString*"], error); + completionBlock((NSString*)data, error); } ]; } @@ -425,7 +429,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) logoutUserWithCompletionBlock: - (void (^)(NSError* error))completionBlock { + (void (^)(NSError* error))completionBlock { @@ -442,8 +446,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -482,6 +486,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -498,8 +503,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) getUserByNameWithCompletionBlock: (NSString*) username - completionHandler: (void (^)(SWGUser* output, NSError* error))completionBlock - { + completionHandler: (void (^)(SWGUser* output, NSError* error))completionBlock { + // verify the required parameter 'username' is set @@ -522,8 +527,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -562,9 +567,10 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: @"SWGUser*" completionBlock: ^(id data, NSError *error) { - completionBlock([self.apiClient deserialize: data class:@"SWGUser*"], error); + completionBlock((SWGUser*)data, error); } ]; } @@ -582,7 +588,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; body: (SWGUser*) body - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { // verify the required parameter 'username' is set @@ -605,8 +611,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -658,6 +664,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -675,7 +682,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; -(NSNumber*) deleteUserWithCompletionBlock: (NSString*) username - completionHandler: (void (^)(NSError* error))completionBlock { + completionHandler: (void (^)(NSError* error))completionBlock { // verify the required parameter 'username' is set @@ -698,8 +705,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSMutableDictionary* headerParams = [NSMutableDictionary dictionaryWithDictionary:self.defaultHeaders]; - - // HTTP header `Accept` + + // HTTP header `Accept` headerParams[@"Accept"] = [SWGApiClient selectHeaderAccept:@[@"application/json", @"application/xml"]]; if ([headerParams[@"Accept"] length] == 0) { [headerParams removeObjectForKey:@"Accept"]; @@ -738,6 +745,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; authSettings: authSettings requestContentType: requestContentType responseContentType: responseContentType + responseType: nil completionBlock: ^(id data, NSError *error) { completionBlock(error); @@ -748,6 +756,3 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; @end - - - From 3f017af4648271d62ff0bb8a823b06e44eb54d31 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Fri, 3 Jul 2015 18:20:39 +0800 Subject: [PATCH 15/22] Update objc client. Replace SWGFile with NSURL. --- .../codegen/languages/ObjcClientCodegen.java | 7 +- .../resources/objc/ApiClient-body.mustache | 109 +++++++----------- .../resources/objc/ApiClient-header.mustache | 3 +- .../main/resources/objc/File-body.mustache | 35 ------ .../main/resources/objc/File-header.mustache | 45 -------- .../src/main/resources/objc/api-body.mustache | 23 +--- .../objc/SwaggerClient/SWGApiClient.h | 3 +- .../objc/SwaggerClient/SWGApiClient.m | 109 +++++++----------- .../petstore/objc/SwaggerClient/SWGPetApi.h | 3 +- .../petstore/objc/SwaggerClient/SWGPetApi.m | 86 ++++++-------- .../petstore/objc/SwaggerClient/SWGStoreApi.m | 29 ++--- .../petstore/objc/SwaggerClient/SWGUserApi.m | 52 +++++---- .../xcshareddata/SwaggerClient.xccheckout | 41 +++++++ .../UserInterfaceState.xcuserstate | Bin 0 -> 12123 bytes .../SwaggerClientTests/Tests/PetApiTest.m | 17 ++- 15 files changed, 227 insertions(+), 335 deletions(-) delete mode 100644 modules/swagger-codegen/src/main/resources/objc/File-body.mustache delete mode 100644 modules/swagger-codegen/src/main/resources/objc/File-header.mustache create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/SwaggerClient.xccheckout create mode 100644 samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index e751bda408e..314067c2ae0 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -36,6 +36,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { defaultIncludes.add("bool"); defaultIncludes.add("BOOL"); defaultIncludes.add("int"); + defaultIncludes.add("NSURL"); defaultIncludes.add("NSString"); defaultIncludes.add("NSObject"); defaultIncludes.add("NSArray"); @@ -50,6 +51,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { languageSpecificPrimitives.add("NSString"); languageSpecificPrimitives.add("NSObject"); languageSpecificPrimitives.add("NSDate"); + languageSpecificPrimitives.add("NSURL"); languageSpecificPrimitives.add("bool"); languageSpecificPrimitives.add("BOOL"); @@ -69,7 +71,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { typeMapping.put("number", "NSNumber"); typeMapping.put("List", "NSArray"); typeMapping.put("object", "NSObject"); - typeMapping.put("file", "File"); + typeMapping.put("file", "NSURL"); // ref: http://www.tutorialspoint.com/objective_c/objective_c_basic_syntax.htm reservedWords = new HashSet( @@ -97,6 +99,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { "NSObject", "NSString", "NSDate", + "NSURL", "NSDictionary") ); @@ -156,8 +159,6 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("JSONResponseSerializer-body.mustache", swaggerFolder, classPrefix + "JSONResponseSerializer.m")); supportingFiles.add(new SupportingFile("JSONRequestSerializer-body.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.m")); supportingFiles.add(new SupportingFile("JSONRequestSerializer-header.mustache", swaggerFolder, classPrefix + "JSONRequestSerializer.h")); - supportingFiles.add(new SupportingFile("File-header.mustache", swaggerFolder, classPrefix + "File.h")); - supportingFiles.add(new SupportingFile("File-body.mustache", swaggerFolder, classPrefix + "File.m")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.m", swaggerFolder, "JSONValueTransformer+ISO8601.m")); supportingFiles.add(new SupportingFile("JSONValueTransformer+ISO8601.h", swaggerFolder, "JSONValueTransformer+ISO8601.h")); supportingFiles.add(new SupportingFile("Configuration-body.mustache", swaggerFolder, classPrefix + "Configuration.m")); diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index af82da664ee..e068829caf6 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -348,16 +348,6 @@ static bool loggingEnabled = true; *querys = [NSDictionary dictionaryWithDictionary:querysWithAuth]; } -#pragma mark - Predicate methods - -- (BOOL) isDownloadFile:(NSString *)responseType { - if ([responseType isEqualToString:@"{{classPrefix}}File*"]) { - return YES; - } else { - return NO; - } -} - #pragma mark - Deserialize methods - (id) deserialize:(id) data class:(NSString *) class { @@ -542,10 +532,11 @@ static bool loggingEnabled = true; else { filename = [NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]]; } - + NSString *filepath = [directory stringByAppendingPathComponent:filename]; + NSURL *file = [NSURL fileURLWithPath:filepath]; - {{classPrefix}}File *file = [[{{classPrefix}}File alloc] initWithPath:filepath data:operation.responseData name:filename]; + [operation.responseData writeToURL:file atomically:YES]; completionBlock(file, nil); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { @@ -573,6 +564,8 @@ static bool loggingEnabled = true; -(NSNumber*) requestWithCompletionBlock: (NSString*) path method: (NSString*) method queryParams: (NSDictionary*) queryParams + formParams: (NSDictionary *) formParams + files: (NSDictionary *) files body: (id) body headerParams: (NSDictionary*) headerParams authSettings: (NSArray *) authSettings @@ -606,66 +599,38 @@ static bool loggingEnabled = true; [self updateHeaderParams:&headerParams queryParams:&queryParams WithAuthSettings:authSettings]; NSMutableURLRequest * request = nil; - if (body != nil && [body isKindOfClass:[NSArray class]]){ - {{classPrefix}}File * file; - NSMutableDictionary * params = [[NSMutableDictionary alloc] init]; - for(id obj in body) { - if([obj isKindOfClass:[{{classPrefix}}File class]]) { - file = ({{classPrefix}}File*) obj; - requestContentType = @"multipart/form-data"; - } - else if([obj isKindOfClass:[NSDictionary class]]) { - for(NSString * key in obj) { - params[key] = obj[key]; - } - } - } - NSString * urlString = [[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString]; - - // request with multipart form - if([requestContentType isEqualToString:@"multipart/form-data"]) { - request = [self.requestSerializer multipartFormRequestWithMethod: @"POST" - URLString: urlString - parameters: nil - constructingBodyWithBlock: ^(id formData) { - - for(NSString * key in params) { - NSData* data = [params[key] dataUsingEncoding:NSUTF8StringEncoding]; - [formData appendPartWithFormData: data name: key]; - } - - if (file) { - [formData appendPartWithFileData: [file data] - name: [file paramName] - fileName: [file name] - mimeType: [file mimeType]]; - } - - } - error:nil]; - } - // request with form parameters or json - else { - NSString* pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; - NSString* urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; - - request = [self.requestSerializer requestWithMethod:method - URLString:urlString - parameters:params - error:nil]; - } - + NSString* pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; + NSString* urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; + if (files.count > 0) { + request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" + URLString:urlString + parameters:nil + constructingBodyWithBlock:^(id formData) { + [formParams enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + NSData *data = [obj dataUsingEncoding:NSUTF8StringEncoding]; + [formData appendPartWithFormData:data name:key]; + }]; + [files enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + NSURL *filePath = (NSURL *)obj; + [formData appendPartWithFileURL:filePath name:key error:nil]; + }]; + } error:nil]; } else { - NSString * pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; - NSString * urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; - - request = [self.requestSerializer requestWithMethod: method - URLString: urlString - parameters: body - error: nil]; + if (formParams) { + request = [self.requestSerializer requestWithMethod:method + URLString:urlString + parameters:formParams + error:nil]; + } + if (body) { + request = [self.requestSerializer requestWithMethod:method + URLString:urlString + parameters:body + error:nil]; + } } - + BOOL hasHeaderParams = false; if(headerParams != nil && [headerParams count] > 0) { hasHeaderParams = true; @@ -695,7 +660,7 @@ static bool loggingEnabled = true; [request setHTTPShouldHandleCookies:NO]; NSNumber* requestId = [{{classPrefix}}ApiClient queueRequest]; - if ([self isDownloadFile:responseType]) { + if ([responseType isEqualToString:@"NSURL*"]) { [self downloadOperationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { completionBlock(data, error); }]; @@ -709,3 +674,7 @@ static bool loggingEnabled = true; } @end + + + + diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index ee309d774c5..84c61fa34bf 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -3,7 +3,6 @@ #import #import "{{classPrefix}}JSONResponseSerializer.h" #import "{{classPrefix}}JSONRequestSerializer.h" -#import "{{classPrefix}}File.h" #import "{{classPrefix}}QueryParamCollection.h" #import "{{classPrefix}}Configuration.h" @@ -194,6 +193,8 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; -(NSNumber*) requestWithCompletionBlock:(NSString*) path method:(NSString*) method queryParams:(NSDictionary*) queryParams + formParams:(NSDictionary *) formParams + files:(NSDictionary *) files body:(id) body headerParams:(NSDictionary*) headerParams authSettings: (NSArray *) authSettings diff --git a/modules/swagger-codegen/src/main/resources/objc/File-body.mustache b/modules/swagger-codegen/src/main/resources/objc/File-body.mustache deleted file mode 100644 index 496fd0c2519..00000000000 --- a/modules/swagger-codegen/src/main/resources/objc/File-body.mustache +++ /dev/null @@ -1,35 +0,0 @@ -#import "{{classPrefix}}File.h" - -@implementation {{classPrefix}}File - -- (id) init { - self = [super init]; - return self; -} - -- (id) initWithNameData: (NSString*) filename - mimeType: (NSString*) fileMimeType - data: (NSData*) data { - self = [super init]; - if(self) { - _name = filename; - _mimeType = fileMimeType; - _data = data; - } - return self; -} - -- (id) initWithPath:(NSString *)filepath data:(NSData *)data name:(NSString *)filename { - self = [super init]; - - if (self) { - _name = filename; - _data = data; - _path = filepath; - [data writeToFile:_path atomically:YES]; - } - - return self; -} - -@end diff --git a/modules/swagger-codegen/src/main/resources/objc/File-header.mustache b/modules/swagger-codegen/src/main/resources/objc/File-header.mustache deleted file mode 100644 index 3bea6848e6b..00000000000 --- a/modules/swagger-codegen/src/main/resources/objc/File-header.mustache +++ /dev/null @@ -1,45 +0,0 @@ -#import - -@interface {{classPrefix}}File : NSObject - -/** - * File name - */ -@property(nonatomic, readonly) NSString* name; - -/** - * File mimeType, for `multipart/form` post - */ -@property(nonatomic, readonly) NSString* mimeType; - -/** - * File data - */ -@property(nonatomic, readonly) NSData* data; - -/** - * File field parameter name, for `multipart/form` post - */ -@property(nonatomic) NSString* paramName; - -/** - * File path - */ -@property(nonatomic, readonly) NSString *path; - -/** - * Initialize with `filename`, `mimeType`, `filedata`. - */ -- (id) initWithNameData: (NSString*) filename - mimeType: (NSString*) mimeType - data: (NSData*) data; - -/** - * Initialize with `filepath`, `filedata`, `filename` - * and write file data into file path. - */ -- (id) initWithPath: (NSString *) filepath - data: (NSData *) data - name: (NSString *) filename; - -@end diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 5a0442705dd..13a9ed1a9f0 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -139,6 +139,8 @@ static NSString * basePath = @"{{basePath}}"; NSArray *authSettings = @[{{#authMethods}}@"{{name}}"{{#hasMore}}, {{/hasMore}}{{/authMethods}}]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; {{#bodyParam}} bodyParam = {{paramName}}; @@ -157,28 +159,13 @@ static NSString * basePath = @"{{basePath}}"; else if([bodyParam respondsToSelector:@selector(toDictionary)]) { bodyParam = [({{classPrefix}}Object*)bodyParam toDictionary]; } - {{/bodyParam}} - {{^bodyParam}} - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - + {{/bodyParam}}{{^bodyParam}} {{#formParams}} {{#notFile}} formParams[@"{{paramName}}"] = {{paramName}}; {{/notFile}}{{#isFile}} - requestContentType = @"multipart/form-data"; - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - if({{paramName}} != nil) { - [bodyParam addObject:{{paramName}}]; - {{paramName}}.paramName = @"{{baseName}}"; - } + files[@"{{paramName}}"] = {{paramName}}; {{/isFile}} - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - [bodyParam addObject:formParams]; {{/formParams}} {{/bodyParam}} @@ -192,6 +179,8 @@ static NSString * basePath = @"{{basePath}}"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"{{httpMethod}}" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index 638e9b59952..5af4f2181e3 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -3,7 +3,6 @@ #import #import "SWGJSONResponseSerializer.h" #import "SWGJSONRequestSerializer.h" -#import "SWGFile.h" #import "SWGQueryParamCollection.h" #import "SWGConfiguration.h" @@ -198,6 +197,8 @@ extern NSString *const SWGResponseObjectErrorKey; -(NSNumber*) requestWithCompletionBlock:(NSString*) path method:(NSString*) method queryParams:(NSDictionary*) queryParams + formParams:(NSDictionary *) formParams + files:(NSDictionary *) files body:(id) body headerParams:(NSDictionary*) headerParams authSettings: (NSArray *) authSettings diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m index febaac0fa72..3f35c52d849 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m @@ -348,16 +348,6 @@ static bool loggingEnabled = true; *querys = [NSDictionary dictionaryWithDictionary:querysWithAuth]; } -#pragma mark - Predicate methods - -- (BOOL) isDownloadFile:(NSString *)responseType { - if ([responseType isEqualToString:@"SWGFile*"]) { - return YES; - } else { - return NO; - } -} - #pragma mark - Deserialize methods - (id) deserialize:(id) data class:(NSString *) class { @@ -542,10 +532,11 @@ static bool loggingEnabled = true; else { filename = [NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]]; } - + NSString *filepath = [directory stringByAppendingPathComponent:filename]; + NSURL *file = [NSURL fileURLWithPath:filepath]; - SWGFile *file = [[SWGFile alloc] initWithPath:filepath data:operation.responseData name:filename]; + [operation.responseData writeToURL:file atomically:YES]; completionBlock(file, nil); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { @@ -573,6 +564,8 @@ static bool loggingEnabled = true; -(NSNumber*) requestWithCompletionBlock: (NSString*) path method: (NSString*) method queryParams: (NSDictionary*) queryParams + formParams: (NSDictionary *) formParams + files: (NSDictionary *) files body: (id) body headerParams: (NSDictionary*) headerParams authSettings: (NSArray *) authSettings @@ -606,66 +599,38 @@ static bool loggingEnabled = true; [self updateHeaderParams:&headerParams queryParams:&queryParams WithAuthSettings:authSettings]; NSMutableURLRequest * request = nil; - if (body != nil && [body isKindOfClass:[NSArray class]]){ - SWGFile * file; - NSMutableDictionary * params = [[NSMutableDictionary alloc] init]; - for(id obj in body) { - if([obj isKindOfClass:[SWGFile class]]) { - file = (SWGFile*) obj; - requestContentType = @"multipart/form-data"; - } - else if([obj isKindOfClass:[NSDictionary class]]) { - for(NSString * key in obj) { - params[key] = obj[key]; - } - } - } - NSString * urlString = [[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString]; - - // request with multipart form - if([requestContentType isEqualToString:@"multipart/form-data"]) { - request = [self.requestSerializer multipartFormRequestWithMethod: @"POST" - URLString: urlString - parameters: nil - constructingBodyWithBlock: ^(id formData) { - - for(NSString * key in params) { - NSData* data = [params[key] dataUsingEncoding:NSUTF8StringEncoding]; - [formData appendPartWithFormData: data name: key]; - } - - if (file) { - [formData appendPartWithFileData: [file data] - name: [file paramName] - fileName: [file name] - mimeType: [file mimeType]]; - } - - } - error:nil]; - } - // request with form parameters or json - else { - NSString* pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; - NSString* urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; - - request = [self.requestSerializer requestWithMethod:method - URLString:urlString - parameters:params - error:nil]; - } - + NSString* pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; + NSString* urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; + if (files.count > 0) { + request = [self.requestSerializer multipartFormRequestWithMethod:@"POST" + URLString:urlString + parameters:nil + constructingBodyWithBlock:^(id formData) { + [formParams enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + NSData *data = [obj dataUsingEncoding:NSUTF8StringEncoding]; + [formData appendPartWithFormData:data name:key]; + }]; + [files enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + NSURL *filePath = (NSURL *)obj; + [formData appendPartWithFileURL:filePath name:key error:nil]; + }]; + } error:nil]; } else { - NSString * pathWithQueryParams = [self pathWithQueryParamsToString:path queryParams:queryParams]; - NSString * urlString = [[NSURL URLWithString:pathWithQueryParams relativeToURL:self.baseURL] absoluteString]; - - request = [self.requestSerializer requestWithMethod: method - URLString: urlString - parameters: body - error: nil]; + if (formParams) { + request = [self.requestSerializer requestWithMethod:method + URLString:urlString + parameters:formParams + error:nil]; + } + if (body) { + request = [self.requestSerializer requestWithMethod:method + URLString:urlString + parameters:body + error:nil]; + } } - + BOOL hasHeaderParams = false; if(headerParams != nil && [headerParams count] > 0) { hasHeaderParams = true; @@ -695,7 +660,7 @@ static bool loggingEnabled = true; [request setHTTPShouldHandleCookies:NO]; NSNumber* requestId = [SWGApiClient queueRequest]; - if ([self isDownloadFile:responseType]) { + if ([responseType isEqualToString:@"NSURL*"]) { [self downloadOperationWithCompletionBlock:request requestId:requestId completionBlock:^(id data, NSError *error) { completionBlock(data, error); }]; @@ -709,3 +674,7 @@ static bool loggingEnabled = true; } @end + + + + diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h index 257a7d1453e..e009300993d 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h @@ -1,6 +1,5 @@ #import #import "SWGPet.h" -#import "SWGFile.h" #import "SWGObject.h" #import "SWGApiClient.h" @@ -139,7 +138,7 @@ /// @return -(NSNumber*) uploadFileWithCompletionBlock :(NSNumber*) petId additionalMetadata:(NSString*) additionalMetadata - file:(SWGFile*) file + file:(NSURL*) file completionHandler: (void (^)(NSError* error))completionBlock; diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 33c38b8ed2c..0933016d638 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -2,7 +2,6 @@ #import "SWGFile.h" #import "SWGQueryParamCollection.h" #import "SWGPet.h" -#import "SWGFile.h" @interface SWGPetApi () @@ -123,6 +122,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -142,12 +143,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"PUT" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -211,6 +213,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -230,12 +234,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -305,18 +310,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -386,18 +391,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -467,18 +472,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"api_key", @"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -554,27 +559,17 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - formParams[@"name"] = name; - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - [bodyParam addObject:formParams]; formParams[@"status"] = status; - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - [bodyParam addObject:formParams]; @@ -582,6 +577,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -656,18 +653,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"DELETE" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -694,7 +691,7 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// -(NSNumber*) uploadFileWithCompletionBlock: (NSNumber*) petId additionalMetadata: (NSString*) additionalMetadata - file: (SWGFile*) file + file: (NSURL*) file completionHandler: (void (^)(NSError* error))completionBlock { @@ -743,34 +740,17 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"petstore_auth"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - formParams[@"additionalMetadata"] = additionalMetadata; - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - [bodyParam addObject:formParams]; - requestContentType = @"multipart/form-data"; - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - if(file != nil) { - [bodyParam addObject:file]; - file.paramName = @"file"; - } + files[@"file"] = file; - if(bodyParam == nil) { - bodyParam = [[NSMutableArray alloc] init]; - } - [bodyParam addObject:formParams]; @@ -778,6 +758,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m index 85a0afe47b0..040f7236a3d 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m @@ -119,18 +119,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[@"api_key"]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -194,6 +194,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -213,12 +215,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -288,18 +291,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -369,18 +372,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"DELETE" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m index d28d94011b7..3a0e7b8bb40 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m @@ -122,6 +122,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -141,12 +143,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -210,6 +213,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -229,12 +234,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -298,6 +304,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -317,12 +325,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"POST" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -397,18 +406,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -469,18 +478,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -550,18 +559,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"GET" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -634,6 +643,8 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; bodyParam = body; @@ -653,12 +664,13 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; bodyParam = [(SWGObject*)bodyParam toDictionary]; } - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"PUT" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings @@ -728,18 +740,18 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; NSArray *authSettings = @[]; id bodyParam = nil; + NSMutableDictionary *formParams = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *files = [[NSMutableDictionary alloc] init]; - - NSMutableDictionary * formParams = [[NSMutableDictionary alloc]init]; - - return [self.apiClient requestWithCompletionBlock: requestUrl method: @"DELETE" queryParams: queryParams + formParams: formParams + files: files body: bodyParam headerParams: headerParams authSettings: authSettings diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/SwaggerClient.xccheckout b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/SwaggerClient.xccheckout new file mode 100644 index 00000000000..879945048b3 --- /dev/null +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcshareddata/SwaggerClient.xccheckout @@ -0,0 +1,41 @@ + + + + + IDESourceControlProjectFavoriteDictionaryKey + + IDESourceControlProjectIdentifier + 303FE0A9-4715-4C57-8D01-F604EF82CF6D + IDESourceControlProjectName + SwaggerClient + IDESourceControlProjectOriginsDictionary + + E5BBF0AA85077C865C95437976D06D819733A208 + https://github.com/geekerzp/swagger-codegen.git + + IDESourceControlProjectPath + samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj + IDESourceControlProjectRelativeInstallPathDictionary + + E5BBF0AA85077C865C95437976D06D819733A208 + ../../../../../../.. + + IDESourceControlProjectURL + https://github.com/geekerzp/swagger-codegen.git + IDESourceControlProjectVersion + 111 + IDESourceControlProjectWCCIdentifier + E5BBF0AA85077C865C95437976D06D819733A208 + IDESourceControlProjectWCConfigurations + + + IDESourceControlRepositoryExtensionIdentifierKey + public.vcs.git + IDESourceControlWCCIdentifierKey + E5BBF0AA85077C865C95437976D06D819733A208 + IDESourceControlWCCName + swagger-codegen + + + + diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.xcworkspace/xcuserdata/geekerzp.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..4b91a2c5500b646d6c7a7c36003140c402ade1a7 GIT binary patch literal 12123 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 literal 0 HcmV?d00001 diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m index 64527d1abcb..8b0a5a10bb2 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m @@ -219,14 +219,11 @@ } - (void)testUploadFile { - XCTestExpectation *expectation = [self expectationWithDescription:@"testUploadFile"]; - - NSString* str = @"teststring"; - NSData* data = [str dataUsingEncoding:NSUTF8StringEncoding]; + XCTestExpectation *expectation = [self expectationWithDescription:@"testUploadWithFile"]; - SWGFile * file = [[SWGFile alloc] initWithNameData: @"myFile.txt" mimeType:@"text/plain" data:data]; + NSURL *fileURL = [self createTempFile]; - [api uploadFileWithCompletionBlock:@1 additionalMetadata:@"special-metadata" file:file completionHandler:^(NSError *error) { + [api uploadFileWithCompletionBlock:@1 additionalMetadata:@"special-metadata" file:fileURL completionHandler:^(NSError *error) { if(error) { // good XCTFail(@"expected a failure"); @@ -278,4 +275,12 @@ pet.photoUrls = photos; return pet; } + +- (NSURL *) createTempFile { + NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:[NSString stringWithFormat:@"%@", [[NSProcessInfo processInfo] globallyUniqueString]]]; + NSData *data = [@"test string" dataUsingEncoding:NSUTF8StringEncoding]; + [data writeToFile:filePath atomically:YES]; + + return [NSURL fileURLWithPath:filePath]; +} @end From a25d3f254312c9f0d8e4cf5ea825bf414ad318ff Mon Sep 17 00:00:00 2001 From: geekerzp Date: Tue, 7 Jul 2015 15:45:25 +0800 Subject: [PATCH 16/22] Update README file of objc client --- .../codegen/languages/ObjcClientCodegen.java | 1 + .../src/main/resources/objc/README.mustache | 19 ++++++++++++++++++ samples/client/petstore/objc/README.md | 20 +++++-------------- 3 files changed, 25 insertions(+), 15 deletions(-) create mode 100644 modules/swagger-codegen/src/main/resources/objc/README.mustache diff --git a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java index 314067c2ae0..0fdb19e806d 100644 --- a/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java +++ b/modules/swagger-codegen/src/main/java/io/swagger/codegen/languages/ObjcClientCodegen.java @@ -164,6 +164,7 @@ public class ObjcClientCodegen extends DefaultCodegen implements CodegenConfig { supportingFiles.add(new SupportingFile("Configuration-body.mustache", swaggerFolder, classPrefix + "Configuration.m")); supportingFiles.add(new SupportingFile("Configuration-header.mustache", swaggerFolder, classPrefix + "Configuration.h")); supportingFiles.add(new SupportingFile("podspec.mustache", "", podName + ".podspec")); + supportingFiles.add(new SupportingFile("README.mustache", "", "README.md")); } @Override diff --git a/modules/swagger-codegen/src/main/resources/objc/README.mustache b/modules/swagger-codegen/src/main/resources/objc/README.mustache new file mode 100644 index 00000000000..db2b1e5b31e --- /dev/null +++ b/modules/swagger-codegen/src/main/resources/objc/README.mustache @@ -0,0 +1,19 @@ +# {{podName}} + +## Requirements + +The API client library requires ARC (Automatic Reference Counting) to be enabled in your Xcode project. + +## Installation + +To install it, put the API client library in your project and then simply add the following line to your Podfile: + +```ruby +pod "{{podName}}", :path => "/path/to/lib" +``` + +## Author + +{{#apiInfo}}{{#apis}}{{^hasMore}}{{infoEmail}} +{{/hasMore}}{{/apis}}{{/apiInfo}} + diff --git a/samples/client/petstore/objc/README.md b/samples/client/petstore/objc/README.md index 22a5fc2634f..4cce2c882bb 100644 --- a/samples/client/petstore/objc/README.md +++ b/samples/client/petstore/objc/README.md @@ -1,29 +1,19 @@ # SwaggerClient -[![CI Status](http://img.shields.io/travis/geekerzp/SwaggerClient.svg?style=flat)](https://travis-ci.org/geekerzp/SwaggerClient) -[![Version](https://img.shields.io/cocoapods/v/SwaggerClient.svg?style=flat)](http://cocoapods.org/pods/SwaggerClient) -[![License](https://img.shields.io/cocoapods/l/SwaggerClient.svg?style=flat)](http://cocoapods.org/pods/SwaggerClient) -[![Platform](https://img.shields.io/cocoapods/p/SwaggerClient.svg?style=flat)](http://cocoapods.org/pods/SwaggerClient) - -## Usage - -To run the example project, clone the repo, and run `pod install` from the Example directory first. - ## Requirements +The API client library requires ARC (Automatic Reference Counting) to be enabled in your Xcode project. + ## Installation -SwaggerClient is available through [CocoaPods](http://cocoapods.org). To install -it, simply add the following line to your Podfile: +To install it, put the API client library in your project and then simply add the following line to your Podfile: ```ruby -pod "SwaggerClient" +pod "SwaggerClient", :path => "/path/to/lib" ``` ## Author -geekerzp, geekerzp@gmail.com +apiteam@swagger.io -## License -SwaggerClient is available under the MIT license. See the LICENSE file for more info. From 8877be82f0f3547d02c90d7fa38798f54172f6cc Mon Sep 17 00:00:00 2001 From: geekerzp Date: Thu, 9 Jul 2015 17:40:56 +0800 Subject: [PATCH 17/22] Update api-body.mustache of objc client --- .../swagger-codegen/src/main/resources/objc/api-body.mustache | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache index 13a9ed1a9f0..fa9fa3e29a9 100644 --- a/modules/swagger-codegen/src/main/resources/objc/api-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/api-body.mustache @@ -1,6 +1,5 @@ {{#operations}} #import "{{classname}}.h" -#import "{{classPrefix}}File.h" #import "{{classPrefix}}QueryParamCollection.h" {{#imports}}#import "{{import}}.h" {{/imports}} From 13d74f01a292532578cdc09ce6775c83b1d1fbe6 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Tue, 14 Jul 2015 19:50:57 +0800 Subject: [PATCH 18/22] Add logging in objc client --- .../resources/objc/ApiClient-body.mustache | 65 ++++++++++--------- .../resources/objc/ApiClient-header.mustache | 23 ++++--- .../objc/Configuration-body.mustache | 33 ++++++---- .../objc/Configuration-header.mustache | 7 ++ 4 files changed, 72 insertions(+), 56 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache index e068829caf6..569eade5db5 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-body.mustache @@ -11,31 +11,38 @@ static bool cacheEnabled = false; static AFNetworkReachabilityStatus reachabilityStatus = AFNetworkReachabilityStatusNotReachable; static NSOperationQueue* sharedQueue; static void (^reachabilityChangeBlock)(int); -static bool loggingEnabled = true; #pragma mark - Log Methods -+(void)setLoggingEnabled:(bool) state { - loggingEnabled = state; +- (void)logResponse:(AFHTTPRequestOperation *)operation + forRequest:(NSURLRequest *)request + error:(NSError*)error { + {{classPrefix}}Configuration *config = [{{classPrefix}}Configuration sharedConfig]; + + NSString *message = [NSString stringWithFormat:@"\n[DEBUG] Request body \n~BEGIN~\n %@\n~END~\n"\ + "[DEBUG] HTTP Response body \n~BEGIN~\n %@\n~END~\n", + [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding], + operation.responseString]; + + if (config.loggingFileHanlder) { + [config.loggingFileHanlder seekToEndOfFile]; + [config.loggingFileHanlder writeData:[message dataUsingEncoding:NSUTF8StringEncoding]]; + } + + NSLog(@"%@", message); } -- (void)logRequest:(NSURLRequest*)request { - NSLog(@"request: %@", [self descriptionForRequest:request]); -} +#pragma mark - Cache Methods -- (void)logResponse:(id)data forRequest:(NSURLRequest*)request error:(NSError*)error { - NSLog(@"request: %@ response: %@ ", [self descriptionForRequest:request], data ); ++ (void) setCacheEnabled:(BOOL)enabled { + cacheEnabled = enabled; } -#pragma mark - - +(void)clearCache { [[NSURLCache sharedURLCache] removeAllCachedResponses]; } -+(void)setCacheEnabled:(BOOL)enabled { - cacheEnabled = enabled; -} +#pragma mark - +(void)configureCacheWithMemoryAndDiskCapacity: (unsigned long) memorySize diskSize: (unsigned long) diskSize { @@ -80,10 +87,10 @@ static bool loggingEnabled = true; if (client == nil) { client = [[{{classPrefix}}ApiClient alloc] initWithBaseURL:[NSURL URLWithString:baseUrl]]; [_pool setValue:client forKey:baseUrl ]; - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"new client for path %@", baseUrl); } - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"returning client for path %@", baseUrl); return client; } @@ -146,7 +153,7 @@ static bool loggingEnabled = true; +(NSNumber*) nextRequestId { @synchronized(self) { long nextId = ++requestId; - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"got id %ld", nextId); return [NSNumber numberWithLong:nextId]; } @@ -154,7 +161,7 @@ static bool loggingEnabled = true; +(NSNumber*) queueRequest { NSNumber* requestId = [{{classPrefix}}ApiClient nextRequestId]; - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"added %@ to request queue", requestId); [queuedRequests addObject:requestId]; return requestId; @@ -187,7 +194,7 @@ static bool loggingEnabled = true; }]; if(matchingItems.count == 1) { - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"removing request id %@", requestId); [queuedRequests removeObject:requestId]; return true; @@ -222,25 +229,25 @@ static bool loggingEnabled = true; reachabilityStatus = status; switch (status) { case AFNetworkReachabilityStatusUnknown: - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusUnknown"); [{{classPrefix}}ApiClient setOfflineState:true]; break; case AFNetworkReachabilityStatusNotReachable: - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusNotReachable"); [{{classPrefix}}ApiClient setOfflineState:true]; break; case AFNetworkReachabilityStatusReachableViaWWAN: - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusReachableViaWWAN"); [{{classPrefix}}ApiClient setOfflineState:false]; break; case AFNetworkReachabilityStatusReachableViaWiFi: - if(loggingEnabled) + if([[{{classPrefix}}Configuration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusReachableViaWiFi"); [{{classPrefix}}ApiClient setOfflineState:false]; break; @@ -265,7 +272,6 @@ static bool loggingEnabled = true; for(NSString * key in [queryParams keyEnumerator]){ if(counter == 0) separator = @"?"; else separator = @"&"; - NSString * value; id queryParam = [queryParams valueForKey:key]; if([queryParam isKindOfClass:[NSString class]]){ [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, @@ -311,11 +317,6 @@ static bool loggingEnabled = true; return requestUrl; } -- (NSString*)descriptionForRequest:(NSURLRequest*)request { - return [[request URL] absoluteString]; -} - - /** * Update header and query params based on authentication settings */ @@ -478,8 +479,8 @@ static bool loggingEnabled = true; AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id response) { if([self executeRequestWithId:requestId]) { - if(self.logServerResponses) { - [self logResponse:response forRequest:request error:nil]; + if([[{{classPrefix}}Configuration sharedConfig] debug]) { + [self logResponse:operation forRequest:request error:nil]; } completionBlock(response, nil); } @@ -492,7 +493,7 @@ static bool loggingEnabled = true; } NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; - if(self.logServerResponses) + if([[{{classPrefix}}Configuration sharedConfig] debug]) [self logResponse:nil forRequest:request error:augmentedError]; completionBlock(nil, augmentedError); } @@ -548,7 +549,7 @@ static bool loggingEnabled = true; NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; - if (self.logServerResponses) { + if ([[{{classPrefix}}Configuration sharedConfig] debug]) { [self logResponse:nil forRequest:request error:augmentedError]; } diff --git a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache index 84c61fa34bf..0edab7414f1 100644 --- a/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/ApiClient-header.mustache @@ -22,11 +22,6 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; @property(nonatomic, assign) NSURLRequestCachePolicy cachePolicy; @property(nonatomic, assign) NSTimeInterval timeoutInterval; -@property(nonatomic, assign) BOOL logRequests; -@property(nonatomic, assign) BOOL logCacheHits; -@property(nonatomic, assign) BOOL logServerResponses; -@property(nonatomic, assign) BOOL logJSON; -@property(nonatomic, assign) BOOL logHTTP; @property(nonatomic, readonly) NSOperationQueue* queue; /** @@ -45,13 +40,6 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; */ +(NSOperationQueue*) sharedQueue; -/** - * Turn on logging - * - * @param state logging state, must be `YES` or `NO` - */ -+(void)setLoggingEnabled:(bool) state; - /** * Clear Cache */ @@ -175,6 +163,17 @@ extern NSString *const {{classPrefix}}ResponseObjectErrorKey; */ - (id) deserialize:(id) data class:(NSString *) class; +/** + * Logging request and response + * + * @param operation AFHTTPRequestOperation for the HTTP request. + * @param request The HTTP request. + * @param error The error of the HTTP request. + */ +- (void)logResponse:(AFHTTPRequestOperation *)operation + forRequest:(NSURLRequest *)request + error:(NSError *)error; + /** * Perform request * diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache index 6b681b0ffd5..832c69f417e 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-body.mustache @@ -28,6 +28,8 @@ self.username = @""; self.password = @""; self.tempFolderPath = nil; + self.debug = NO; + self.loggingFile = nil; self.mutableApiKey = [NSMutableDictionary dictionary]; self.mutableApiKeyPrefix = [NSMutableDictionary dictionary]; } @@ -66,6 +68,20 @@ [self.mutableApiKeyPrefix setValue:value forKey:field]; } +- (void) setLoggingFile:(NSString *)loggingFile { + // close old file handler + if ([self.loggingFileHanlder isKindOfClass:[NSFileHandle class]]) { + [self.loggingFileHanlder closeFile]; + } + + _loggingFile = loggingFile; + self.loggingFileHanlder = [NSFileHandle fileHandleForWritingAtPath:_loggingFile]; + if (self.loggingFileHanlder == nil) { + [[NSFileManager defaultManager] createFileAtPath:_loggingFile contents:nil attributes:nil]; + self.loggingFileHanlder = [NSFileHandle fileHandleForWritingAtPath:_loggingFile]; + } +} + #pragma mark - Getter Methods - (NSDictionary *) apiKey { @@ -79,21 +95,14 @@ #pragma mark - - (NSDictionary *) authSettings { - return @{ {{#authMethods}}{{#isApiKey}} - @"{{name}}": @{ + return @{ + @"api_key": @{ @"type": @"api_key", - @"in": {{#isKeyInHeader}}@"header"{{/isKeyInHeader}}{{#isKeyInQuery}}@"query"{{/isKeyInQuery}}, - @"key": @"{{keyParamName}}", - @"value": [self getApiKeyWithPrefix:@"{{keyParamName}}"] - }, - {{/isApiKey}}{{#isBasic}} - @"{{name}}": @{ - @"type": @"basic", @"in": @"header", - @"key": @"Authorization", - @"value": [self getBasicAuthToken] + @"key": @"api_key", + @"value": [self getApiKeyWithPrefix:@"api_key"] }, - {{/isBasic}}{{/authMethods}} + }; } diff --git a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache index 579cb4e15a9..4f9518ea9d1 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Configuration-header.mustache @@ -28,6 +28,13 @@ */ @property (nonatomic) NSString *tempFolderPath; +/** + * Logging Settings + */ +@property (nonatomic) BOOL debug; +@property (nonatomic) NSString *loggingFile; +@property (nonatomic) NSFileHandle *loggingFileHanlder; + /** * Get configuration singleton instance */ From 02f6c805af1940ceca0587602c777286b9ae61c7 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Wed, 15 Jul 2015 11:58:31 +0800 Subject: [PATCH 19/22] Update integration test of objc client --- .../resources/objc/Object-header.mustache | 2 +- .../src/main/resources/objc/podspec.mustache | 6 +- .../petstore/objc/SwaggerClient.podspec | 6 +- .../objc/SwaggerClient/SWGApiClient.h | 23 ++++--- .../objc/SwaggerClient/SWGApiClient.m | 65 ++++++++++--------- .../objc/SwaggerClient/SWGConfiguration.h | 7 ++ .../objc/SwaggerClient/SWGConfiguration.m | 16 +++++ .../petstore/objc/SwaggerClient/SWGObject.h | 2 +- .../petstore/objc/SwaggerClient/SWGPetApi.m | 1 - .../petstore/objc/SwaggerClient/SWGStoreApi.m | 1 - .../petstore/objc/SwaggerClient/SWGUserApi.m | 1 - .../petstore/objc/SwaggerClientTests/Podfile | 1 - .../SwaggerClient.xcodeproj/project.pbxproj | 57 +++------------- .../SwaggerClientTests/Tests/PetApiTest.m | 2 +- .../SwaggerClientTests/Tests/Tests-Prefix.pch | 4 +- 15 files changed, 86 insertions(+), 108 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache b/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache index f73d1bab9b0..d96e379908f 100644 --- a/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/Object-header.mustache @@ -1,5 +1,5 @@ #import -#import "JSONModel.h" +#import @interface {{classPrefix}}Object : JSONModel @end diff --git a/modules/swagger-codegen/src/main/resources/objc/podspec.mustache b/modules/swagger-codegen/src/main/resources/objc/podspec.mustache index 961e4f36caa..9ce03695bcf 100644 --- a/modules/swagger-codegen/src/main/resources/objc/podspec.mustache +++ b/modules/swagger-codegen/src/main/resources/objc/podspec.mustache @@ -16,13 +16,13 @@ Pod::Spec.new do |s| {{appDescription}} DESC {{/hasMore}}{{/apis}}{{/apiInfo}} - s.license = 'MIT' - s.platform = :ios, '7.0' s.requires_arc = true + s.framework = 'SystemConfiguration' + s.source_files = '{{podName}}/**/*' - s.public_header_files = '{{podVersion}}/**/*.h' + s.public_header_files = '{{podName}}/**/*.h' s.dependency 'AFNetworking', '~> 2.3' s.dependency 'JSONModel', '~> 1.1' diff --git a/samples/client/petstore/objc/SwaggerClient.podspec b/samples/client/petstore/objc/SwaggerClient.podspec index aeeda8fbdfe..d9b02841cf9 100644 --- a/samples/client/petstore/objc/SwaggerClient.podspec +++ b/samples/client/petstore/objc/SwaggerClient.podspec @@ -16,13 +16,13 @@ Pod::Spec.new do |s| This is a sample server Petstore server. You can find out more about Swagger at <a href=\"http://swagger.io\">http://swagger.io</a> or on irc.freenode.net, #swagger. For this sample, you can use the api key \"special-key\" to test the authorization filters DESC - s.license = 'MIT' - s.platform = :ios, '7.0' s.requires_arc = true + s.framework = 'SystemConfiguration' + s.source_files = 'SwaggerClient/**/*' - s.public_header_files = '1.0.0/**/*.h' + s.public_header_files = 'SwaggerClient/**/*.h' s.dependency 'AFNetworking', '~> 2.3' s.dependency 'JSONModel', '~> 1.1' diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h index 5af4f2181e3..56c6adf30f2 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.h @@ -26,11 +26,6 @@ extern NSString *const SWGResponseObjectErrorKey; @property(nonatomic, assign) NSURLRequestCachePolicy cachePolicy; @property(nonatomic, assign) NSTimeInterval timeoutInterval; -@property(nonatomic, assign) BOOL logRequests; -@property(nonatomic, assign) BOOL logCacheHits; -@property(nonatomic, assign) BOOL logServerResponses; -@property(nonatomic, assign) BOOL logJSON; -@property(nonatomic, assign) BOOL logHTTP; @property(nonatomic, readonly) NSOperationQueue* queue; /** @@ -49,13 +44,6 @@ extern NSString *const SWGResponseObjectErrorKey; */ +(NSOperationQueue*) sharedQueue; -/** - * Turn on logging - * - * @param state logging state, must be `YES` or `NO` - */ -+(void)setLoggingEnabled:(bool) state; - /** * Clear Cache */ @@ -179,6 +167,17 @@ extern NSString *const SWGResponseObjectErrorKey; */ - (id) deserialize:(id) data class:(NSString *) class; +/** + * Logging request and response + * + * @param operation AFHTTPRequestOperation for the HTTP request. + * @param request The HTTP request. + * @param error The error of the HTTP request. + */ +- (void)logResponse:(AFHTTPRequestOperation *)operation + forRequest:(NSURLRequest *)request + error:(NSError *)error; + /** * Perform request * diff --git a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m index 3f35c52d849..f51a012a811 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGApiClient.m @@ -11,31 +11,38 @@ static bool cacheEnabled = false; static AFNetworkReachabilityStatus reachabilityStatus = AFNetworkReachabilityStatusNotReachable; static NSOperationQueue* sharedQueue; static void (^reachabilityChangeBlock)(int); -static bool loggingEnabled = true; #pragma mark - Log Methods -+(void)setLoggingEnabled:(bool) state { - loggingEnabled = state; +- (void)logResponse:(AFHTTPRequestOperation *)operation + forRequest:(NSURLRequest *)request + error:(NSError*)error { + SWGConfiguration *config = [SWGConfiguration sharedConfig]; + + NSString *message = [NSString stringWithFormat:@"\n[DEBUG] Request body \n~BEGIN~\n %@\n~END~\n"\ + "[DEBUG] HTTP Response body \n~BEGIN~\n %@\n~END~\n", + [[NSString alloc] initWithData:request.HTTPBody encoding:NSUTF8StringEncoding], + operation.responseString]; + + if (config.loggingFileHanlder) { + [config.loggingFileHanlder seekToEndOfFile]; + [config.loggingFileHanlder writeData:[message dataUsingEncoding:NSUTF8StringEncoding]]; + } + + NSLog(@"%@", message); } -- (void)logRequest:(NSURLRequest*)request { - NSLog(@"request: %@", [self descriptionForRequest:request]); -} +#pragma mark - Cache Methods -- (void)logResponse:(id)data forRequest:(NSURLRequest*)request error:(NSError*)error { - NSLog(@"request: %@ response: %@ ", [self descriptionForRequest:request], data ); ++ (void) setCacheEnabled:(BOOL)enabled { + cacheEnabled = enabled; } -#pragma mark - - +(void)clearCache { [[NSURLCache sharedURLCache] removeAllCachedResponses]; } -+(void)setCacheEnabled:(BOOL)enabled { - cacheEnabled = enabled; -} +#pragma mark - +(void)configureCacheWithMemoryAndDiskCapacity: (unsigned long) memorySize diskSize: (unsigned long) diskSize { @@ -80,10 +87,10 @@ static bool loggingEnabled = true; if (client == nil) { client = [[SWGApiClient alloc] initWithBaseURL:[NSURL URLWithString:baseUrl]]; [_pool setValue:client forKey:baseUrl ]; - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"new client for path %@", baseUrl); } - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"returning client for path %@", baseUrl); return client; } @@ -146,7 +153,7 @@ static bool loggingEnabled = true; +(NSNumber*) nextRequestId { @synchronized(self) { long nextId = ++requestId; - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"got id %ld", nextId); return [NSNumber numberWithLong:nextId]; } @@ -154,7 +161,7 @@ static bool loggingEnabled = true; +(NSNumber*) queueRequest { NSNumber* requestId = [SWGApiClient nextRequestId]; - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"added %@ to request queue", requestId); [queuedRequests addObject:requestId]; return requestId; @@ -187,7 +194,7 @@ static bool loggingEnabled = true; }]; if(matchingItems.count == 1) { - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"removing request id %@", requestId); [queuedRequests removeObject:requestId]; return true; @@ -222,25 +229,25 @@ static bool loggingEnabled = true; reachabilityStatus = status; switch (status) { case AFNetworkReachabilityStatusUnknown: - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusUnknown"); [SWGApiClient setOfflineState:true]; break; case AFNetworkReachabilityStatusNotReachable: - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusNotReachable"); [SWGApiClient setOfflineState:true]; break; case AFNetworkReachabilityStatusReachableViaWWAN: - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusReachableViaWWAN"); [SWGApiClient setOfflineState:false]; break; case AFNetworkReachabilityStatusReachableViaWiFi: - if(loggingEnabled) + if([[SWGConfiguration sharedConfig] debug]) NSLog(@"reachability changed to AFNetworkReachabilityStatusReachableViaWiFi"); [SWGApiClient setOfflineState:false]; break; @@ -265,7 +272,6 @@ static bool loggingEnabled = true; for(NSString * key in [queryParams keyEnumerator]){ if(counter == 0) separator = @"?"; else separator = @"&"; - NSString * value; id queryParam = [queryParams valueForKey:key]; if([queryParam isKindOfClass:[NSString class]]){ [requestUrl appendString:[NSString stringWithFormat:@"%@%@=%@", separator, @@ -311,11 +317,6 @@ static bool loggingEnabled = true; return requestUrl; } -- (NSString*)descriptionForRequest:(NSURLRequest*)request { - return [[request URL] absoluteString]; -} - - /** * Update header and query params based on authentication settings */ @@ -478,8 +479,8 @@ static bool loggingEnabled = true; AFHTTPRequestOperation *op = [self HTTPRequestOperationWithRequest:request success:^(AFHTTPRequestOperation *operation, id response) { if([self executeRequestWithId:requestId]) { - if(self.logServerResponses) { - [self logResponse:response forRequest:request error:nil]; + if([[SWGConfiguration sharedConfig] debug]) { + [self logResponse:operation forRequest:request error:nil]; } completionBlock(response, nil); } @@ -492,7 +493,7 @@ static bool loggingEnabled = true; } NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; - if(self.logServerResponses) + if([[SWGConfiguration sharedConfig] debug]) [self logResponse:nil forRequest:request error:augmentedError]; completionBlock(nil, augmentedError); } @@ -548,7 +549,7 @@ static bool loggingEnabled = true; NSError *augmentedError = [error initWithDomain:error.domain code:error.code userInfo:userInfo]; - if (self.logServerResponses) { + if ([[SWGConfiguration sharedConfig] debug]) { [self logResponse:nil forRequest:request error:augmentedError]; } diff --git a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h index cb334828549..d3619c72ab5 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.h @@ -28,6 +28,13 @@ */ @property (nonatomic) NSString *tempFolderPath; +/** + * Logging Settings + */ +@property (nonatomic) BOOL debug; +@property (nonatomic) NSString *loggingFile; +@property (nonatomic) NSFileHandle *loggingFileHanlder; + /** * Get configuration singleton instance */ diff --git a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m index 69fb424d8d8..81e308a53fc 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGConfiguration.m @@ -28,6 +28,8 @@ self.username = @""; self.password = @""; self.tempFolderPath = nil; + self.debug = NO; + self.loggingFile = nil; self.mutableApiKey = [NSMutableDictionary dictionary]; self.mutableApiKeyPrefix = [NSMutableDictionary dictionary]; } @@ -66,6 +68,20 @@ [self.mutableApiKeyPrefix setValue:value forKey:field]; } +- (void) setLoggingFile:(NSString *)loggingFile { + // close old file handler + if ([self.loggingFileHanlder isKindOfClass:[NSFileHandle class]]) { + [self.loggingFileHanlder closeFile]; + } + + _loggingFile = loggingFile; + self.loggingFileHanlder = [NSFileHandle fileHandleForWritingAtPath:_loggingFile]; + if (self.loggingFileHanlder == nil) { + [[NSFileManager defaultManager] createFileAtPath:_loggingFile contents:nil attributes:nil]; + self.loggingFileHanlder = [NSFileHandle fileHandleForWritingAtPath:_loggingFile]; + } +} + #pragma mark - Getter Methods - (NSDictionary *) apiKey { diff --git a/samples/client/petstore/objc/SwaggerClient/SWGObject.h b/samples/client/petstore/objc/SwaggerClient/SWGObject.h index ccec208abc0..fb27b4a4ebb 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGObject.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGObject.h @@ -1,5 +1,5 @@ #import -#import "JSONModel.h" +#import @interface SWGObject : JSONModel @end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 0933016d638..4e67e2c1435 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -1,5 +1,4 @@ #import "SWGPetApi.h" -#import "SWGFile.h" #import "SWGQueryParamCollection.h" #import "SWGPet.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m index 040f7236a3d..5304b67dd07 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGStoreApi.m @@ -1,5 +1,4 @@ #import "SWGStoreApi.h" -#import "SWGFile.h" #import "SWGQueryParamCollection.h" #import "SWGOrder.h" diff --git a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m index 3a0e7b8bb40..845e8d93ae3 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGUserApi.m @@ -1,5 +1,4 @@ #import "SWGUserApi.h" -#import "SWGFile.h" #import "SWGQueryParamCollection.h" #import "SWGUser.h" diff --git a/samples/client/petstore/objc/SwaggerClientTests/Podfile b/samples/client/petstore/objc/SwaggerClientTests/Podfile index 8bc79199e50..ea5cdb0e6e8 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Podfile +++ b/samples/client/petstore/objc/SwaggerClientTests/Podfile @@ -1,5 +1,4 @@ source 'https://github.com/CocoaPods/Specs.git' -use_frameworks! target 'SwaggerClient_Example', :exclusive => true do pod "SwaggerClient", :path => "../" diff --git a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj index 160ab6c70a8..0ba21c560ef 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj +++ b/samples/client/petstore/objc/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj @@ -7,7 +7,7 @@ objects = { /* Begin PBXBuildFile section */ - 32FA3CA96E7FC5D792D203F8 /* Pods_SwaggerClient_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 158CE3AA214CB1B31C7ADC48 /* libPods-SwaggerClient_Tests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FDEF5BA3CF9CFFDEB5A47DB4 /* libPods-SwaggerClient_Tests.a */; }; 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58D195388D20070C39A /* Foundation.framework */; }; 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F58F195388D20070C39A /* CoreGraphics.framework */; }; 6003F592195388D20070C39A /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6003F591195388D20070C39A /* UIKit.framework */; }; @@ -22,7 +22,7 @@ 6003F5BA195388D20070C39A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 6003F5B8195388D20070C39A /* InfoPlist.strings */; }; 6003F5BC195388D20070C39A /* Tests.m in Sources */ = {isa = PBXBuildFile; fileRef = 6003F5BB195388D20070C39A /* Tests.m */; }; 873B8AEB1B1F5CCA007FD442 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */; }; - 9A44FA36F7AE066E0FA82C4E /* Pods_SwaggerClient_Tests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B1D1ECCC8D1A8BE115A67138 /* Pods_SwaggerClient_Tests.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; + 94BE6BE84795B5034A811E61 /* libPods-SwaggerClient_Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D46325ECAD48245C07F6733 /* libPods-SwaggerClient_Example.a */; }; CFDFB4121B3CFFA8009739C5 /* UserApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */; }; CFDFB4131B3CFFDD009739C5 /* PetApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */; }; CFDFB4141B3CFFF6009739C5 /* StoreApiTest.m in Sources */ = {isa = PBXBuildFile; fileRef = CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */; }; @@ -42,7 +42,6 @@ /* Begin PBXFileReference section */ 1A81C3BE3E54961CD827EAE3 /* Pods-SwaggerClient_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.release.xcconfig"; sourceTree = ""; }; 4CCE21315897B7D544C83242 /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = ""; }; - 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 6003F58A195388D20070C39A /* SwaggerClient_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwaggerClient_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 6003F58D195388D20070C39A /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; 6003F58F195388D20070C39A /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; @@ -64,7 +63,7 @@ 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = ""; }; 73CCD82196AABD64F2807C7B /* Pods-SwaggerClient_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Tests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests.debug.xcconfig"; sourceTree = ""; }; 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = Main.storyboard; sourceTree = ""; }; - B1D1ECCC8D1A8BE115A67138 /* Pods_SwaggerClient_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_SwaggerClient_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D46325ECAD48245C07F6733 /* libPods-SwaggerClient_Example.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SwaggerClient_Example.a"; sourceTree = BUILT_PRODUCTS_DIR; }; BFB4BE760737508B3CFC23B2 /* Pods-SwaggerClient_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.release.xcconfig"; sourceTree = ""; }; CFDFB40A1B3CFEC3009739C5 /* PetApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PetApiTest.m; sourceTree = ""; }; CFDFB40B1B3CFEC3009739C5 /* StoreApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = StoreApiTest.m; sourceTree = ""; }; @@ -72,6 +71,7 @@ CFDFB40D1B3CFEC3009739C5 /* UserApiTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UserApiTest.m; sourceTree = ""; }; E445A633FA767F207D7EE6CE /* Pods-SwaggerClient_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-SwaggerClient_Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example.debug.xcconfig"; sourceTree = ""; }; E9675D953C6DCDE71A1BDFD4 /* SwaggerClient.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = SwaggerClient.podspec; path = ../SwaggerClient.podspec; sourceTree = ""; }; + FDEF5BA3CF9CFFDEB5A47DB4 /* libPods-SwaggerClient_Tests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-SwaggerClient_Tests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -82,7 +82,7 @@ 6003F590195388D20070C39A /* CoreGraphics.framework in Frameworks */, 6003F592195388D20070C39A /* UIKit.framework in Frameworks */, 6003F58E195388D20070C39A /* Foundation.framework in Frameworks */, - 32FA3CA96E7FC5D792D203F8 /* Pods_SwaggerClient_Example.framework in Frameworks */, + 94BE6BE84795B5034A811E61 /* libPods-SwaggerClient_Example.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -93,7 +93,7 @@ 6003F5B0195388D20070C39A /* XCTest.framework in Frameworks */, 6003F5B2195388D20070C39A /* UIKit.framework in Frameworks */, 6003F5B1195388D20070C39A /* Foundation.framework in Frameworks */, - 9A44FA36F7AE066E0FA82C4E /* Pods_SwaggerClient_Tests.framework in Frameworks */, + 158CE3AA214CB1B31C7ADC48 /* libPods-SwaggerClient_Tests.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -128,8 +128,8 @@ 6003F58F195388D20070C39A /* CoreGraphics.framework */, 6003F591195388D20070C39A /* UIKit.framework */, 6003F5AF195388D20070C39A /* XCTest.framework */, - 56767C6E86DE2B2855ABF7B2 /* Pods_SwaggerClient_Example.framework */, - B1D1ECCC8D1A8BE115A67138 /* Pods_SwaggerClient_Tests.framework */, + 8D46325ECAD48245C07F6733 /* libPods-SwaggerClient_Example.a */, + FDEF5BA3CF9CFFDEB5A47DB4 /* libPods-SwaggerClient_Tests.a */, ); name = Frameworks; sourceTree = ""; @@ -214,7 +214,6 @@ 6003F586195388D20070C39A /* Sources */, 6003F587195388D20070C39A /* Frameworks */, 6003F588195388D20070C39A /* Resources */, - CFCA721F9D6FBA792A2E917F /* Embed Pods Frameworks */, 429AF5C69E165ED75311B4B0 /* Copy Pods Resources */, ); buildRules = ( @@ -234,7 +233,6 @@ 6003F5AA195388D20070C39A /* Sources */, 6003F5AB195388D20070C39A /* Frameworks */, 6003F5AC195388D20070C39A /* Resources */, - 373B17801C82424AA96FEEFA /* Embed Pods Frameworks */, E337D7E459CCFFDF27046FFC /* Copy Pods Resources */, ); buildRules = ( @@ -256,11 +254,6 @@ CLASSPREFIX = SWG; LastUpgradeCheck = 0510; ORGANIZATIONNAME = geekerzp; - TargetAttributes = { - 6003F5AD195388D20070C39A = { - TestTargetID = 6003F589195388D20070C39A; - }; - }; }; buildConfigurationList = 6003F585195388D10070C39A /* Build configuration list for PBXProject "SwaggerClient" */; compatibilityVersion = "Xcode 3.2"; @@ -303,21 +296,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 373B17801C82424AA96FEEFA /* Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient_Tests/Pods-SwaggerClient_Tests-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 429AF5C69E165ED75311B4B0 /* Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -363,21 +341,6 @@ shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; showEnvVarsInLog = 0; }; - CFCA721F9D6FBA792A2E917F /* Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputPaths = ( - ); - name = "Embed Pods Frameworks"; - outputPaths = ( - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-SwaggerClient_Example/Pods-SwaggerClient_Example-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; E337D7E459CCFFDF27046FFC /* Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; @@ -554,7 +517,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = 73CCD82196AABD64F2807C7B /* Pods-SwaggerClient_Tests.debug.xcconfig */; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", @@ -568,7 +530,6 @@ ); INFOPLIST_FILE = "Tests/Tests-Info.plist"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient_Example.app/SwaggerClient_Example"; WRAPPER_EXTENSION = xctest; }; name = Debug; @@ -577,7 +538,6 @@ isa = XCBuildConfiguration; baseConfigurationReference = 1A81C3BE3E54961CD827EAE3 /* Pods-SwaggerClient_Tests.release.xcconfig */; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; FRAMEWORK_SEARCH_PATHS = ( "$(SDKROOT)/Developer/Library/Frameworks", "$(inherited)", @@ -587,7 +547,6 @@ GCC_PREFIX_HEADER = "Tests/Tests-Prefix.pch"; INFOPLIST_FILE = "Tests/Tests-Info.plist"; PRODUCT_NAME = "$(TARGET_NAME)"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SwaggerClient_Example.app/SwaggerClient_Example"; WRAPPER_EXTENSION = xctest; }; name = Release; diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m index 8b0a5a10bb2..f14e7e5b0ed 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m @@ -1,7 +1,7 @@ #import #import -#import #import +#import @interface PetApiTest : XCTestCase { @private diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch index b84cd591234..6d08c288215 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/Tests-Prefix.pch @@ -2,7 +2,7 @@ #ifdef __OBJC__ - @import Specta; - @import Expecta; + //@import Specta; + //@import Expecta; #endif From 95cb5f73a372dc3c0ee102da4f5030151065e90c Mon Sep 17 00:00:00 2001 From: geekerzp Date: Wed, 15 Jul 2015 12:13:01 +0800 Subject: [PATCH 20/22] Remove SWGFile from objc client --- .../petstore/objc/SwaggerClient/SWGFile.h | 45 ------------------- .../petstore/objc/SwaggerClient/SWGFile.m | 35 --------------- 2 files changed, 80 deletions(-) delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGFile.h delete mode 100644 samples/client/petstore/objc/SwaggerClient/SWGFile.m diff --git a/samples/client/petstore/objc/SwaggerClient/SWGFile.h b/samples/client/petstore/objc/SwaggerClient/SWGFile.h deleted file mode 100644 index bca7cd3d447..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGFile.h +++ /dev/null @@ -1,45 +0,0 @@ -#import - -@interface SWGFile : NSObject - -/** - * File name - */ -@property(nonatomic, readonly) NSString* name; - -/** - * File mimeType, for `multipart/form` post - */ -@property(nonatomic, readonly) NSString* mimeType; - -/** - * File data - */ -@property(nonatomic, readonly) NSData* data; - -/** - * File field parameter name, for `multipart/form` post - */ -@property(nonatomic) NSString* paramName; - -/** - * File path - */ -@property(nonatomic, readonly) NSString *path; - -/** - * Initialize with `filename`, `mimeType`, `filedata`. - */ -- (id) initWithNameData: (NSString*) filename - mimeType: (NSString*) mimeType - data: (NSData*) data; - -/** - * Initialize with `filepath`, `filedata`, `filename` - * and write file data into file path. - */ -- (id) initWithPath: (NSString *) filepath - data: (NSData *) data - name: (NSString *) filename; - -@end diff --git a/samples/client/petstore/objc/SwaggerClient/SWGFile.m b/samples/client/petstore/objc/SwaggerClient/SWGFile.m deleted file mode 100644 index 46ad41508c4..00000000000 --- a/samples/client/petstore/objc/SwaggerClient/SWGFile.m +++ /dev/null @@ -1,35 +0,0 @@ -#import "SWGFile.h" - -@implementation SWGFile - -- (id) init { - self = [super init]; - return self; -} - -- (id) initWithNameData: (NSString*) filename - mimeType: (NSString*) fileMimeType - data: (NSData*) data { - self = [super init]; - if(self) { - _name = filename; - _mimeType = fileMimeType; - _data = data; - } - return self; -} - -- (id) initWithPath:(NSString *)filepath data:(NSData *)data name:(NSString *)filename { - self = [super init]; - - if (self) { - _name = filename; - _data = data; - _path = filepath; - [data writeToFile:_path atomically:YES]; - } - - return self; -} - -@end From 0092d8a63b5e482dd3f99cf08dedef60f5e97b2a Mon Sep 17 00:00:00 2001 From: geekerzp Date: Wed, 15 Jul 2015 18:11:04 +0800 Subject: [PATCH 21/22] Update unit tests of objc client --- samples/client/petstore/objc/SwaggerClient/SWGPetApi.h | 6 +++--- samples/client/petstore/objc/SwaggerClient/SWGPetApi.m | 8 ++++---- .../petstore/objc/SwaggerClientTests/Tests/PetApiTest.m | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h index e009300993d..39f23edb028 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.h @@ -113,13 +113,13 @@ /// Deletes a pet /// /// -/// @param apiKey /// @param petId Pet id to delete +/// @param apiKey /// /// /// @return --(NSNumber*) deletePetWithCompletionBlock :(NSString*) apiKey - petId:(NSNumber*) petId +-(NSNumber*) deletePetWithCompletionBlock :(NSNumber*) petId + apiKey:(NSString*) apiKey completionHandler: (void (^)(NSError* error))completionBlock; diff --git a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m index 4e67e2c1435..15f4af0564e 100644 --- a/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m +++ b/samples/client/petstore/objc/SwaggerClient/SWGPetApi.m @@ -594,14 +594,14 @@ static NSString * basePath = @"http://petstore.swagger.io/v2"; /// /// Deletes a pet /// -/// @param apiKey -/// /// @param petId Pet id to delete /// +/// @param apiKey +/// /// @returns void /// --(NSNumber*) deletePetWithCompletionBlock: (NSString*) apiKey - petId: (NSNumber*) petId +-(NSNumber*) deletePetWithCompletionBlock: (NSNumber*) petId + apiKey: (NSString*) apiKey completionHandler: (void (^)(NSError* error))completionBlock { diff --git a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m index f14e7e5b0ed..f861cb0605e 100644 --- a/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m +++ b/samples/client/petstore/objc/SwaggerClientTests/Tests/PetApiTest.m @@ -199,7 +199,7 @@ if(error){ XCTFail(@"got error %@", error); } - [api deletePetWithCompletionBlock:@"" petId:[NSString stringWithFormat:@"%@", [pet _id]] completionHandler:^(NSError *error) { + [api deletePetWithCompletionBlock:pet._id apiKey:@"" completionHandler:^(NSError *error) { if(error){ XCTFail(@"got error %@", error); } From 33561fa1596bc2158cdf8766b2f734cf869897c1 Mon Sep 17 00:00:00 2001 From: geekerzp Date: Thu, 16 Jul 2015 10:11:27 +0800 Subject: [PATCH 22/22] Support date type in python client --- .../main/resources/python/api_client.mustache | 25 ++++++++++++++++--- .../python/swagger_client/api_client.py | 25 ++++++++++++++++--- .../python/tests/test_deserialization.py | 8 +++++- 3 files changed, 51 insertions(+), 7 deletions(-) diff --git a/modules/swagger-codegen/src/main/resources/python/api_client.mustache b/modules/swagger-codegen/src/main/resources/python/api_client.mustache index a4e4a69b85d..924201c9a4a 100644 --- a/modules/swagger-codegen/src/main/resources/python/api_client.mustache +++ b/modules/swagger-codegen/src/main/resources/python/api_client.mustache @@ -15,12 +15,14 @@ import os import re import urllib import json -import datetime import mimetypes import random import tempfile import threading +from datetime import datetime +from datetime import date + # python 2 and python 3 compatibility library from six import iteritems @@ -146,7 +148,7 @@ class ApiClient(object): return obj elif isinstance(obj, list): return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj] - elif isinstance(obj, (datetime.datetime, datetime.date)): + elif isinstance(obj, (datetime, date)): return obj.isoformat() else: if isinstance(obj, dict): @@ -203,7 +205,7 @@ class ApiClient(object): # convert str to class # for native types - if klass in ['int', 'float', 'str', 'bool', 'datetime', "object"]: + if klass in ['int', 'float', 'str', 'bool', "date", 'datetime', "object"]: klass = eval(klass) # for model types else: @@ -213,6 +215,8 @@ class ApiClient(object): return self.__deserialize_primitive(data, klass) elif klass == object: return self.__deserialize_object() + elif klass == date: + return self.__deserialize_date(data) elif klass == datetime: return self.__deserialize_datatime(data) else: @@ -386,6 +390,21 @@ class ApiClient(object): """ return object() + def __deserialize_date(self, string): + """ + Deserialize string to date + + :param string: str + :return: date + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + except ValueError: + raise ApiException(status=0, reason="Failed to parse `{0}` into a date object".format(string)) + def __deserialize_datatime(self, string): """ Deserialize string to datetime. diff --git a/samples/client/petstore/python/swagger_client/api_client.py b/samples/client/petstore/python/swagger_client/api_client.py index a4e4a69b85d..924201c9a4a 100644 --- a/samples/client/petstore/python/swagger_client/api_client.py +++ b/samples/client/petstore/python/swagger_client/api_client.py @@ -15,12 +15,14 @@ import os import re import urllib import json -import datetime import mimetypes import random import tempfile import threading +from datetime import datetime +from datetime import date + # python 2 and python 3 compatibility library from six import iteritems @@ -146,7 +148,7 @@ class ApiClient(object): return obj elif isinstance(obj, list): return [self.sanitize_for_serialization(sub_obj) for sub_obj in obj] - elif isinstance(obj, (datetime.datetime, datetime.date)): + elif isinstance(obj, (datetime, date)): return obj.isoformat() else: if isinstance(obj, dict): @@ -203,7 +205,7 @@ class ApiClient(object): # convert str to class # for native types - if klass in ['int', 'float', 'str', 'bool', 'datetime', "object"]: + if klass in ['int', 'float', 'str', 'bool', "date", 'datetime', "object"]: klass = eval(klass) # for model types else: @@ -213,6 +215,8 @@ class ApiClient(object): return self.__deserialize_primitive(data, klass) elif klass == object: return self.__deserialize_object() + elif klass == date: + return self.__deserialize_date(data) elif klass == datetime: return self.__deserialize_datatime(data) else: @@ -386,6 +390,21 @@ class ApiClient(object): """ return object() + def __deserialize_date(self, string): + """ + Deserialize string to date + + :param string: str + :return: date + """ + try: + from dateutil.parser import parse + return parse(string).date() + except ImportError: + return string + except ValueError: + raise ApiException(status=0, reason="Failed to parse `{0}` into a date object".format(string)) + def __deserialize_datatime(self, string): """ Deserialize string to datetime. diff --git a/samples/client/petstore/python/tests/test_deserialization.py b/samples/client/petstore/python/tests/test_deserialization.py index 7451f2fbc2c..1121558adca 100644 --- a/samples/client/petstore/python/tests/test_deserialization.py +++ b/samples/client/petstore/python/tests/test_deserialization.py @@ -63,8 +63,14 @@ class DeserializationTests(unittest.TestCase): deserialized = self.deserialize(data, "str") self.assertTrue(isinstance(deserialized, str)) + def test_deserialize_date(self): + """ deserialize date """ + data = "1997-07-16" + deserialized = self.deserialize(data, "date") + self.assertTrue(isinstance(deserialized, datetime.date)) + def test_deserialize_datetime(self): - """ deserialize dateimte """ + """ deserialize datetime """ data = "1997-07-16T19:20:30.45+01:00" deserialized = self.deserialize(data, "datetime") self.assertTrue(isinstance(deserialized, datetime.datetime))