Skip to content

Commit e8f8dbb

Browse files
nateshim-indicoNathanael Shim
andauthored
add mimetypes from mediocris into serializer (#274)
Co-authored-by: Nathanael Shim <[email protected]>
1 parent 9b9bcdf commit e8f8dbb

File tree

4 files changed

+56
-6
lines changed

4 files changed

+56
-6
lines changed

indico/http/serialization.py

Lines changed: 39 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from collections import defaultdict
1111

1212
import msgpack
13+
1314
from indico.errors import IndicoDecodingError
1415

1516
logger = logging.getLogger(__name__)
@@ -44,10 +45,10 @@ def deserialize(response, force_json=False, force_decompress=False):
4445
)
4546

4647

47-
4848
def raw_bytes(content, *args, **kwargs):
4949
return content
5050

51+
5152
def msgpack_deserialization(content, charset):
5253
return msgpack.unpackb(content)
5354

@@ -71,20 +72,52 @@ def zip_serialization(content, charset=None):
7172
_SERIALIZATION_FNS = defaultdict(
7273
lambda: text_deserialization,
7374
{
74-
"application/octet-stream": raw_bytes,
7575
"application/pdf": raw_bytes,
76+
"application/octet-stream": raw_bytes,
77+
"application/doc": raw_bytes,
78+
"application/ms-doc": raw_bytes,
79+
"application/msword": raw_bytes,
80+
"application/vnd.openxmlformats-officedocument.wordprocessingml.document": raw_bytes,
81+
"application/vnd.oasis.opendocument.text": raw_bytes,
82+
"application/zip": zip_serialization,
83+
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": raw_bytes,
84+
"application/vnd.ms-excel": raw_bytes,
85+
"application/msexcel": raw_bytes,
86+
"application/excel": raw_bytes,
87+
"application/msexcel": raw_bytes,
88+
"application/x-dos_ms_excel": raw_bytes,
89+
"application/x-excel": raw_bytes,
90+
"application/x-ms-excel": raw_bytes,
91+
"application/x-xls": raw_bytes,
92+
"application/xlc": raw_bytes,
93+
"application/xls": raw_bytes,
94+
"application/xlt": raw_bytes,
95+
"application/vnd.ms-powerpoint": raw_bytes,
96+
"application/vnd.openxmlformats-officedocument.presentationml.presentation": raw_bytes,
97+
"application/mspowerpoint": raw_bytes,
98+
"application/powerpoint": raw_bytes,
99+
"application/vnd.ms-powerpoint": raw_bytes,
100+
"application/x-mspowerpoint": raw_bytes,
101+
"image/png": image_serialization,
102+
"image/jpeg": image_serialization,
103+
"image/jpg": image_serialization,
104+
"image/tiff": image_serialization,
76105
"text/html": text_deserialization,
106+
"text/plain": text_deserialization,
107+
"text/rtf": text_deserialization,
108+
"message/rfc822": raw_bytes,
109+
"application/vnd.ms-outlook": raw_bytes,
110+
"application/vnd.ms-office": raw_bytes,
111+
"binary/octet-stream": raw_bytes,
112+
"application/rtf": text_deserialization,
113+
"text/csv": text_deserialization,
77114
"application/x-msgpack": msgpack_deserialization,
78115
"application/msgpack": msgpack_deserialization,
79116
"x-msgpack": msgpack_deserialization,
80117
"msgpack": msgpack_deserialization,
81118
"application/json": json_deserialization,
82119
"json": json_deserialization,
83120
"application/javascript": json_deserialization,
84-
"image/png": image_serialization,
85-
"image/jpeg": image_serialization,
86-
"image/jpg": image_serialization,
87-
"application/zip": zip_serialization,
88121
"application/x-gzip": raw_bytes,
89122
"application/gzip": raw_bytes,
90123
},
69.6 KB
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
text, targets
2+
hello, world

tests/unit/http/test_unit_serialization.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from unittest.mock import MagicMock
44

55
import pytest
6+
67
from indico.errors import IndicoDecodingError
78
from indico.http.serialization import deserialize
89

@@ -73,6 +74,20 @@ def test_deserialize_gzip(mock_loader):
7374
assert isinstance(content, bytes)
7475

7576

77+
def test_deserialize_csv(mock_loader):
78+
response = mock_loader("text/csv", "")
79+
content = deserialize(response)
80+
81+
assert isinstance(content, str)
82+
83+
84+
def test_deserialize_xls(mock_loader):
85+
response = mock_loader("application/xls", "")
86+
content = deserialize(response)
87+
88+
assert isinstance(content, bytes)
89+
90+
7691
def test_deserialize_unknown(mock_loader):
7792
response = mock_loader("unknown", "")
7893
try:

0 commit comments

Comments
 (0)