Skip to content

Commit bcdbf6e

Browse files
author
Sergiu-Vlad Bonta
committed
Bugfix #311, openapicore works with falcon 3.0.0
1 parent 0865a4f commit bcdbf6e

File tree

2 files changed

+9
-5
lines changed

2 files changed

+9
-5
lines changed

openapi_core/contrib/falcon/requests.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,24 @@
1111
class FalconOpenAPIRequestFactory:
1212

1313
@classmethod
14-
def create(cls, request):
14+
def create(cls, request, default_when_empty={}):
1515
"""
1616
Create OpenAPIRequest from falcon Request and route params.
1717
"""
18+
default = default_when_empty
1819
method = request.method.lower()
1920

2021
# gets deduced by path finder against spec
2122
path = {}
2223

23-
# Support falcon-jsonify.
24+
# in falcon 3 we must hadle empty media or an exception will be raised
25+
if hasattr(request, "get_media"):
26+
media = request.get_media(default_when_empty=default)
27+
else:
28+
media = request.media if request.media else default
29+
# # Support falcon-jsonify.
2430
body = (
25-
dumps(request.json) if getattr(request, "json", None)
26-
else dumps(request.media)
31+
dumps(getattr(request, "json", media))
2732
)
2833
mimetype = request.options.default_media_type
2934
if request.content_type:

tests/integration/contrib/falcon/conftest.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@ def create_request(
3333
options = RequestOptions()
3434
# return create_req(options=options, **environ)
3535
req = Request(environ, options)
36-
resource, method_map, params, req.uri_template = router.find(path, req)
3736
return req
3837
return create_request
3938

0 commit comments

Comments
 (0)