Skip to content

Commit a462770

Browse files
committed
a more permissive media type pattern
1 parent 787cce0 commit a462770

File tree

3 files changed

+19
-6
lines changed

3 files changed

+19
-6
lines changed

spyne/model/primitive/_base.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,10 @@ def re_match_with_span(attr, value):
3838
return True
3939

4040
m = attr._pattern_re.match(value)
41+
# if m:
42+
# print(m, m.span(), len(value))
43+
# else:
44+
# print(m)
4145
return (m is not None) and (m.span() == (0, len(value)))
4246

4347

spyne/model/primitive/string.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,13 +51,13 @@ def _gen_mime_type_pattern(strict, with_params):
5151
else:
5252
main_type = token
5353

54-
parameter = \
55-
";" + ows + token + "=" + "(?:" + token + "|" + quotedString + ")"
54+
param = token + "=" + "(?:" + token + "|" + quotedString + ");?" + ows
55+
params = ";" + ows + param + "(" + param + ")*"
5656

5757
if not with_params:
5858
return main_type + "/" + "(" + token + ")"
5959
else:
60-
return main_type + "/" + "(" + token + ")((?:" + ows + parameter + ")*)"
60+
return main_type + "/" + "(" + token + ")" + params
6161

6262

6363
MIME_TYPE_PATTERN_STRICT = \

spyne/test/model/test_primitive.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,22 @@ def test_mime_type_family(self):
6969

7070
assert rmws(media_attr, u'text/plain; charset="utf-8"')
7171
assert rmws(media_attr, u'text/plain; charset=utf-8')
72-
assert not rmws(media_attr, u'text/plain; charset=utf-8 ')
72+
assert rmws(media_attr, u'text/plain; charset=utf-8 ')
7373
assert rmws(media_attr, u'text/plain; charset=utf-8')
74-
assert not rmws(media_attr, u'text/plain; charset=utf-8;')
75-
assert not rmws(media_attr, u'text/plain; charset=utf-8; ')
74+
assert rmws(media_attr, u'text/plain; charset=utf-8;')
75+
assert rmws(media_attr, u'text/plain; charset=utf-8; ')
7676
assert not rmws(media_attr, u'text/plain; charset=utf-8; foo')
7777
assert not rmws(media_attr, u'text/plain; charset=utf-8; foo=')
7878
assert rmws(media_attr, u'text/plain; charset=utf-8; foo=""')
79+
assert rmws(media_attr, u'text/plain; charset=utf-8; foo="";')
80+
assert rmws(media_attr, u'text/plain; charset=utf-8; foo=""; ')
81+
assert rmws(media_attr, u'text/plain; charset=utf-8; foo=""; ')
82+
assert not rmws(media_attr, u'text/plain;; charset=utf-8; foo=""')
83+
assert not rmws(media_attr, u'text/plain;;; charset=utf-8; foo=""')
84+
assert not rmws(media_attr, u'text/plain; charset=utf-8;; foo=""')
85+
assert not rmws(media_attr, u'text/plain; charset=utf-8;;; foo=""')
86+
assert not rmws(media_attr, u'text/plain; charset=utf-8;;; foo="";')
87+
assert not rmws(media_attr, u'text/plain; charset=utf-8;;; foo=""; ; ')
7988
assert not rmws(media_strict_attr, u'foo/bar;')
8089
assert not rmws(media_strict_attr, u' applicaton/json;')
8190
assert not rmws(media_strict_attr, u'applicaton/json;')

0 commit comments

Comments
 (0)