Changes requested by @prawn-cake:

- Unified the python version checking
 - Fixed the endpoint name registration on AioHttpApi
This commit is contained in:
Diogo Dutra
2017-11-09 16:28:23 -02:00
committed by Diogo
parent 09daab63ca
commit d1565cf259
7 changed files with 52 additions and 11 deletions

View File

@@ -142,15 +142,17 @@ class AioHttpApi(AbstractAPI):
def _add_operation_internal(self, method, path, operation): def _add_operation_internal(self, method, path, operation):
method = method.upper() method = method.upper()
operation_id = \ operation_id = operation.operation_id or path
operation.operation_id if operation.operation_id else path
logger.debug('... Adding %s -> %s', method, operation_id, logger.debug('... Adding %s -> %s', method, operation_id,
extra=vars(operation)) extra=vars(operation))
handler = operation.function handler = operation.function
endpoint_name = '{}_{}'.format(self._api_name, endpoint_name = '{}_{}_{}'.format(
self._normalize_string(path)) self._api_name,
self._normalize_string(path),
method.lower()
)
self.subapp.router.add_route( self.subapp.router.add_route(
method, path, handler, name=endpoint_name method, path, handler, name=endpoint_name
) )

View File

@@ -1,7 +1,5 @@
import importlib
import logging import logging
import sys import sys
from itertools import chain
from os import path from os import path
import click import click

View File

@@ -97,7 +97,7 @@ class ResponseValidator(BaseDecorator):
is_coroutine = False is_coroutine = False
if sys.version_info >= (3, 4): # pragma: 2.7 no cover if sys.version_info[0] >= 3: # pragma: 2.7 no cover
import asyncio import asyncio
is_coroutine = asyncio.iscoroutinefunction(function) is_coroutine = asyncio.iscoroutinefunction(function)

View File

@@ -48,7 +48,7 @@ tests_require = [
flask_require flask_require
] ]
if sys.version_info >= (3, 4): if sys.version_info[0] >= 3:
tests_require.extend(aiohttp_require) tests_require.extend(aiohttp_require)
tests_require.append(ujson_require) tests_require.append(ujson_require)
tests_require.append('pytest-aiohttp') tests_require.append('pytest-aiohttp')
@@ -63,7 +63,7 @@ class PyTest(TestCommand):
self.cov = None self.cov = None
self.pytest_args = ['--cov', 'connexion', '--cov-report', 'term-missing', '-v'] self.pytest_args = ['--cov', 'connexion', '--cov-report', 'term-missing', '-v']
if sys.version_info < (3, 4): if sys.version_info[0] < 3:
self.pytest_args.append('--cov-config=py2-coveragerc') self.pytest_args.append('--cov-config=py2-coveragerc')
self.pytest_args.append('--ignore=tests/aiohttp') self.pytest_args.append('--ignore=tests/aiohttp')

View File

@@ -46,8 +46,24 @@ def aiohttp_validate_responses():
@asyncio.coroutine @asyncio.coroutine
def post_greeting(name, **kwargs): def aiohttp_post_greeting(name, **kwargs):
data = {'greeting': 'Hello {name}'.format(name=name)} data = {'greeting': 'Hello {name}'.format(name=name)}
return ConnexionResponse( return ConnexionResponse(
body=data body=data
) )
@asyncio.coroutine
def aiohttp_multiple_methods_get(name, **kwargs):
data = {'method': 'get'}
return ConnexionResponse(
body=data
)
@asyncio.coroutine
def aiohttp_multiple_methods_post(name, **kwargs):
data = {'method': 'post'}
return ConnexionResponse(
body=data
)

View File

@@ -24,7 +24,7 @@ paths:
post: post:
summary: Generate greeting summary: Generate greeting
description: Generates a greeting message. description: Generates a greeting message.
operationId: fakeapi.aiohttp_hello.post_greeting operationId: fakeapi.aiohttp_hello.aiohttp_post_greeting
responses: responses:
200: 200:
description: greeting response description: greeting response

View File

@@ -79,3 +79,28 @@ paths:
description: json response description: json response
schema: schema:
type: object type: object
/multiple_methods:
get:
summary: Test path with multiple methods when get
description: Test path with multiple methods when get
operationId: fakeapi.aiohttp_hello.aiohttp_multiple_methods_get
produces:
- application/json
responses:
200:
description: json response
schema:
type: object
post:
summary: Test path with multiple methods when post
description: Test path with multiple methods when post
operationId: fakeapi.aiohttp_hello.aiohttp_multiple_methods_post
produces:
- application/json
responses:
200:
description: json response
schema:
type: object