mirror of
https://github.com/correl/openapi-core.git
synced 2024-11-24 19:19:56 +00:00
Falcon OpenAPI request and response factories
This commit is contained in:
parent
43bf9a6e8d
commit
58b98205c7
3 changed files with 39 additions and 0 deletions
0
openapi_core/contrib/falcon/__init__.py
Normal file
0
openapi_core/contrib/falcon/__init__.py
Normal file
27
openapi_core/contrib/falcon/requests.py
Normal file
27
openapi_core/contrib/falcon/requests.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
"""OpenAPI core contrib falcon responses module"""
|
||||
from openapi_core.validation.request.datatypes import OpenAPIRequest, RequestParameters
|
||||
|
||||
|
||||
class FalconOpenAPIRequestFactory:
|
||||
@classmethod
|
||||
def create(cls, req, route_params):
|
||||
"""
|
||||
Create OpenAPIRequest from falcon Request and route params.
|
||||
"""
|
||||
method = req.method.lower()
|
||||
|
||||
# Convert keys to lowercase as that's what the OpenAPIRequest expects.
|
||||
headers = {key.lower(): value for key, value in req.headers.items()}
|
||||
|
||||
parameters = RequestParameters(
|
||||
path=route_params, query=req.params, header=headers, cookie=req.cookies
|
||||
)
|
||||
return OpenAPIRequest(
|
||||
host_url=req.host,
|
||||
path=req.path,
|
||||
path_pattern=req.uri_template,
|
||||
method=method,
|
||||
parameters=parameters,
|
||||
body=req.bounded_stream.read(),
|
||||
mimetype=req.content_type.partition(";")[0] if req.content_type else "",
|
||||
)
|
12
openapi_core/contrib/falcon/responses.py
Normal file
12
openapi_core/contrib/falcon/responses.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
"""OpenAPI core contrib falcon responses module"""
|
||||
from openapi_core.validation.response.datatypes import OpenAPIResponse
|
||||
|
||||
|
||||
class FalconOpenAPIResponseFactory(object):
|
||||
@classmethod
|
||||
def create(cls, resp):
|
||||
return OpenAPIResponse(
|
||||
data=resp.body,
|
||||
status_code=resp.status[:3],
|
||||
mimetype=resp.content_type.partition(";")[0] if resp.content_type else '',
|
||||
)
|
Loading…
Reference in a new issue