Skip to content

Commit 18f6b0f

Browse files
authored
Merge pull request #387 from p1c2u/refactor/media-type-finder-find-signature-refactor
media type finder find sig refactor
2 parents a33d8e7 + 23365c0 commit 18f6b0f

File tree

5 files changed

+18
-18
lines changed

5 files changed

+18
-18
lines changed

openapi_core/templating/media_types/finders.py

+6-6
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ class MediaTypeFinder:
88
def __init__(self, content):
99
self.content = content
1010

11-
def find(self, request):
12-
if request.mimetype in self.content:
13-
return self.content / request.mimetype, request.mimetype
11+
def find(self, mimetype):
12+
if mimetype in self.content:
13+
return self.content / mimetype, mimetype
1414

15-
if request.mimetype:
15+
if mimetype:
1616
for key, value in self.content.items():
17-
if fnmatch.fnmatch(request.mimetype, key):
17+
if fnmatch.fnmatch(mimetype, key):
1818
return value, key
1919

20-
raise MediaTypeNotFound(request.mimetype, list(self.content.keys()))
20+
raise MediaTypeNotFound(mimetype, list(self.content.keys()))

openapi_core/validation/request/validators.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def _get_body(self, request, operation):
139139

140140
try:
141141
media_type, mimetype = self._get_media_type(
142-
request_body / "content", request
142+
request_body / "content", request.mimetype
143143
)
144144
except MediaTypeFinderError as exc:
145145
return None, [exc]

openapi_core/validation/response/validators.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def _get_data(self, response, operation_response):
4848

4949
try:
5050
media_type, mimetype = self._get_media_type(
51-
operation_response / "content", response
51+
operation_response / "content", response.mimetype
5252
)
5353
except MediaTypeFinderError as exc:
5454
return None, [exc]

openapi_core/validation/validators.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,11 @@ def schema_unmarshallers_factory(self):
5151
def _find_path(self, request):
5252
return self.path_finder.find(request)
5353

54-
def _get_media_type(self, content, request_or_response):
54+
def _get_media_type(self, content, mimetype):
5555
from openapi_core.templating.media_types.finders import MediaTypeFinder
5656

5757
finder = MediaTypeFinder(content)
58-
return finder.find(request_or_response)
58+
return finder.find(mimetype)
5959

6060
def _deserialise_data(self, mimetype, value):
6161
deserializer = self.media_type_deserializers_factory.create(mimetype)

tests/unit/templating/test_media_types_finders.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -23,25 +23,25 @@ def finder(self, content):
2323
return MediaTypeFinder(content)
2424

2525
def test_exact(self, finder, content):
26-
response = MockResponse("", mimetype="application/json")
26+
mimetype = "application/json"
2727

28-
_, mimetype = finder.find(response)
28+
_, mimetype = finder.find(mimetype)
2929
assert mimetype == "application/json"
3030

3131
def test_match(self, finder, content):
32-
response = MockResponse("", mimetype="text/html")
32+
mimetype = "text/html"
3333

34-
_, mimetype = finder.find(response)
34+
_, mimetype = finder.find(mimetype)
3535
assert mimetype == "text/*"
3636

3737
def test_not_found(self, finder, content):
38-
response = MockResponse("", mimetype="unknown")
38+
mimetype = "unknown"
3939

4040
with pytest.raises(MediaTypeNotFound):
41-
finder.find(response)
41+
finder.find(mimetype)
4242

4343
def test_missing(self, finder, content):
44-
response = MockResponse("", mimetype=None)
44+
mimetype = None
4545

4646
with pytest.raises(MediaTypeNotFound):
47-
finder.find(response)
47+
finder.find(mimetype)

0 commit comments

Comments
 (0)