- Created a metaclass for AbstractAPI (it is used to set the jsonifier for the class);
- Created a new class method AbstractAPI._set_jsonifier;
- Changed the code to use the new jsonifier interface;
- Create a new module called coroutines_wrapper to put the wrapper functions with the 'yield from' statement. It is used to enable frameworks with coroutine handlers;
- Did the AioHttpApi.get_request coroutine and add req.read() to get the request body;
- Moved the flask jsonifier to utils and did it a generic jsonifier;
- Created a function called 'has_coroutine' on utils module;
- Added aiohttp_jinja2 to requirements-aiohttp;
- Added a new python3 coreragerc file to skip only python2 lines;
- Fixed the set of validation_response on test_aiohttp_simple_api.py;
- Added the test to check the aiohttp body request;
- Fixed the response for 'aiohttp_bytes_response' and 'aiohttp_non_str_non_json_response' paths on aiohttp/swagger_simple.yml file.
- Added a note to create aiohttp handlers;
- Added a new parameter on AioHttpApp.__init__ to choose create only one api. With this parameter we can create an api with a empty base_path;
- Added exceptions messages on AioHttpApp.add_api method;
- Created new tests for AioHttpApp.add_api.
- created a new option called 'server'
- did wsgi-server option deprecated
- changed the app-cls option to app-framework
- fixed the possible frameworks that will run the app
- added a validation on framework/server selection
- improved the code on __init__ when aiohttp was not installed;
- renamed the ujson package to json on import;
- renamed the AioHttpApi.aiohttp_api property to AioHttpApi.subapp. I choose the name "subapp" because it works like the flask blueprint. The AioHttpApp.add_api uses the add_subapp method of the aiohttp Application;
- changed a if/else setence to a more concise version;
- Added the AioHttpApi and AioHttpApp on connexion __init__;
- Created an abstract method on AbstractApi to cast the framework response to connexion response;
- Implemented the get_connexion_response on FlaskApi;
- Changed the CLI to use any kind of App class;
- Changed the ResponseValidator to always convert the response to a connexion response;
- Changed the ResponseValidator to support coroutine responses;
- Added the aiohttp as optional dependency;
- Added ujson as optional dependency;
- Skipped the aiohttp tests run on python 2.7;
- Changed the tests configs to run aiohttp tests properly on python 3.4+.
* FIX a typo causing an ERROR log
A small bug was introduced in #500 when sanitizing the request query
parameters. Instead of fetching the arguments from `request.query`,
the parameters were sanitized from the `request.form`. This causes an
error log to be printed, as the parameters are not expected for the
query (for example in the case of a POST request).
Fixes#504
* adds a fixture for testing query param sanitazion
Adds a simple fixture to test form and query parameter sanitazion. This
is mostly related to #522, in which the `formData` parameters were
treated as query parameters.
* add a test to validate form data params
* introduce testfixtures library
The flake8 checks were failing for py3.5 due to a couple of catch-all
exceptions when importing tornado and gevent libraries. Refactored to
catch the `ImportError`
Resolved error since flask cors was moved to its own project: `ExtDeprecationWarning: Importing flask.ext.cors is deprecated, use flask_cors instead.`
Will also require installation `pip install -U flask-cors`
* Allow http.HTTPStatus enums as response status codes.
Python 3.5 introduced a new enumeration "http.HTTPStatus" for
representing HTTP response status codes. The default response validation
introduced in connexion 1.1.12 highlighted the fact that connexion does
not natively support this type and was previously silently ignoring
non-integer status code representations.
This modifies the response validation code to extract the value when
given an enum instead of an int. Somewhat hacky test code is added to
check for enum support on python versions that include
"http.HTTPStatus".
* [master]: Restructure tests from PR comments.
* [master]: Revert to exception based version checking.
This reverts to exception based python version checking for both tests,
due to the suggested unittest skipping alternative not being supported
in all python versions.
"unittest.case.SkipTest: Not supported in this version" is the error
reported.
* [master]: Move enum handling deeper into the stack.
* [master]: Respond to yet more PR comments.
* Preserving the multiplicity of array type query parameters
* Resolved failing tests, and refactored code block into a method
* Added tests for multi array
* Refactored parameter.py and updated tests in test_parameters.py
When the `Exception` was raised for unknown server, the string format
followed the logging-module style of formatting in which the variable
to insert is passed as a parameter to the logging call. This doesn't
work and produced an unhelpful error message.
* setup.py: Use env markers for Python version-specific dependencies
Changing package properties dynamically in setup.py means that universal
wheels will actually be built only for the builder's environment, and
might not work properly on different platforms/PYthon versions.
Closes https://github.com/zalando/connexion/issues/493
* travis: Upgrade setuptools before running tests
* reqs: Stop installing pathlib from mercurial in dev mode
The mercurial repo is at 0.8 while the latest release on PyPI is 1.0.1
* Fix for Issue #308: MockResolver: support "example" in definitions
* Improve handling of not existing refs.
* Improve handling of not existing definitions.
* Leave the error message the same.
* Support examples for inline shchema definition.