Skip to content
This repository was archived by the owner on Dec 25, 2024. It is now read-only.

Commit 0c979e0

Browse files
Add support for application/x-pem-file MIME type (#280)
This patch adds support for serializing and deserializing data with the application/x-pem-file MIME type as plain text. Fixes: #244
1 parent 7c395d3 commit 0c979e0

File tree

6 files changed

+24
-6
lines changed

6 files changed

+24
-6
lines changed

samples/client/3_0_3_unit_test/python/src/unit_test_api/api_client.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,8 @@ def deserialize(cls, response: urllib3.HTTPResponse, configuration: schema_confi
907907
elif content_type.startswith('multipart/form-data'):
908908
body_data = cls.__deserialize_multipart_form_data(response)
909909
content_type = 'multipart/form-data'
910+
elif content_type == 'application/x-pem-file':
911+
body_data = response.data.decode()
910912
else:
911913
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
912914
body_schema = schemas.get_class(body_schema)
@@ -1258,6 +1260,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
12581260
content: content_type to MediaType schemas.Schema info
12591261
"""
12601262
__json_encoder = JSONEncoder()
1263+
__plain_txt_content_types = {'text/plain', 'application/x-pem-file'}
12611264
content: typing.Dict[str, typing.Type[MediaType]]
12621265
required: bool = False
12631266

@@ -1379,7 +1382,7 @@ def serialize(
13791382
if isinstance(cast_in_data, (schemas.FileIO, bytes)):
13801383
raise ValueError(f"Invalid input data type. Data must be int/float/str/bool/None/tuple/immutabledict and it was type {type(cast_in_data)}")
13811384
return cls.__serialize_json(cast_in_data)
1382-
elif content_type == 'text/plain':
1385+
elif content_type in cls.__plain_txt_content_types:
13831386
if not isinstance(cast_in_data, (int, float, str)):
13841387
raise ValueError(f"Unable to serialize type {type(cast_in_data)} to text/plain")
13851388
return cls.__serialize_text_plain(cast_in_data)

samples/client/3_1_0_unit_test/python/src/unit_test_api/api_client.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,8 @@ def deserialize(cls, response: urllib3.HTTPResponse, configuration: schema_confi
907907
elif content_type.startswith('multipart/form-data'):
908908
body_data = cls.__deserialize_multipart_form_data(response)
909909
content_type = 'multipart/form-data'
910+
elif content_type == 'application/x-pem-file':
911+
body_data = response.data.decode()
910912
else:
911913
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
912914
body_schema = schemas.get_class(body_schema)
@@ -1258,6 +1260,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
12581260
content: content_type to MediaType schemas.Schema info
12591261
"""
12601262
__json_encoder = JSONEncoder()
1263+
__plain_txt_content_types = {'text/plain', 'application/x-pem-file'}
12611264
content: typing.Dict[str, typing.Type[MediaType]]
12621265
required: bool = False
12631266

@@ -1379,7 +1382,7 @@ def serialize(
13791382
if isinstance(cast_in_data, (schemas.FileIO, bytes)):
13801383
raise ValueError(f"Invalid input data type. Data must be int/float/str/bool/None/tuple/immutabledict and it was type {type(cast_in_data)}")
13811384
return cls.__serialize_json(cast_in_data)
1382-
elif content_type == 'text/plain':
1385+
elif content_type in cls.__plain_txt_content_types:
13831386
if not isinstance(cast_in_data, (int, float, str)):
13841387
raise ValueError(f"Unable to serialize type {type(cast_in_data)} to text/plain")
13851388
return cls.__serialize_text_plain(cast_in_data)

samples/client/openapi_features/nonCompliantUseDiscriminatorIfCompositionFails/python/src/this_package/api_client.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,8 @@ def deserialize(cls, response: urllib3.HTTPResponse, configuration: schema_confi
907907
elif content_type.startswith('multipart/form-data'):
908908
body_data = cls.__deserialize_multipart_form_data(response)
909909
content_type = 'multipart/form-data'
910+
elif content_type == 'application/x-pem-file':
911+
body_data = response.data.decode()
910912
else:
911913
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
912914
body_schema = schemas.get_class(body_schema)
@@ -1258,6 +1260,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
12581260
content: content_type to MediaType schemas.Schema info
12591261
"""
12601262
__json_encoder = JSONEncoder()
1263+
__plain_txt_content_types = {'text/plain', 'application/x-pem-file'}
12611264
content: typing.Dict[str, typing.Type[MediaType]]
12621265
required: bool = False
12631266

@@ -1379,7 +1382,7 @@ def serialize(
13791382
if isinstance(cast_in_data, (schemas.FileIO, bytes)):
13801383
raise ValueError(f"Invalid input data type. Data must be int/float/str/bool/None/tuple/immutabledict and it was type {type(cast_in_data)}")
13811384
return cls.__serialize_json(cast_in_data)
1382-
elif content_type == 'text/plain':
1385+
elif content_type in cls.__plain_txt_content_types:
13831386
if not isinstance(cast_in_data, (int, float, str)):
13841387
raise ValueError(f"Unable to serialize type {type(cast_in_data)} to text/plain")
13851388
return cls.__serialize_text_plain(cast_in_data)

samples/client/openapi_features/security/python/src/this_package/api_client.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,8 @@ def deserialize(cls, response: urllib3.HTTPResponse, configuration: schema_confi
907907
elif content_type.startswith('multipart/form-data'):
908908
body_data = cls.__deserialize_multipart_form_data(response)
909909
content_type = 'multipart/form-data'
910+
elif content_type == 'application/x-pem-file':
911+
body_data = response.data.decode()
910912
else:
911913
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
912914
body_schema = schemas.get_class(body_schema)
@@ -1281,6 +1283,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
12811283
content: content_type to MediaType schemas.Schema info
12821284
"""
12831285
__json_encoder = JSONEncoder()
1286+
__plain_txt_content_types = {'text/plain', 'application/x-pem-file'}
12841287
content: typing.Dict[str, typing.Type[MediaType]]
12851288
required: bool = False
12861289

@@ -1402,7 +1405,7 @@ def serialize(
14021405
if isinstance(cast_in_data, (schemas.FileIO, bytes)):
14031406
raise ValueError(f"Invalid input data type. Data must be int/float/str/bool/None/tuple/immutabledict and it was type {type(cast_in_data)}")
14041407
return cls.__serialize_json(cast_in_data)
1405-
elif content_type == 'text/plain':
1408+
elif content_type in cls.__plain_txt_content_types:
14061409
if not isinstance(cast_in_data, (int, float, str)):
14071410
raise ValueError(f"Unable to serialize type {type(cast_in_data)} to text/plain")
14081411
return cls.__serialize_text_plain(cast_in_data)

samples/client/petstore/python/src/petstore_api/api_client.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -907,6 +907,8 @@ def deserialize(cls, response: urllib3.HTTPResponse, configuration: schema_confi
907907
elif content_type.startswith('multipart/form-data'):
908908
body_data = cls.__deserialize_multipart_form_data(response)
909909
content_type = 'multipart/form-data'
910+
elif content_type == 'application/x-pem-file':
911+
body_data = response.data.decode()
910912
else:
911913
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
912914
body_schema = schemas.get_class(body_schema)
@@ -1285,6 +1287,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
12851287
content: content_type to MediaType schemas.Schema info
12861288
"""
12871289
__json_encoder = JSONEncoder()
1290+
__plain_txt_content_types = {'text/plain', 'application/x-pem-file'}
12881291
content: typing.Dict[str, typing.Type[MediaType]]
12891292
required: bool = False
12901293

@@ -1406,7 +1409,7 @@ def serialize(
14061409
if isinstance(cast_in_data, (schemas.FileIO, bytes)):
14071410
raise ValueError(f"Invalid input data type. Data must be int/float/str/bool/None/tuple/immutabledict and it was type {type(cast_in_data)}")
14081411
return cls.__serialize_json(cast_in_data)
1409-
elif content_type == 'text/plain':
1412+
elif content_type in cls.__plain_txt_content_types:
14101413
if not isinstance(cast_in_data, (int, float, str)):
14111414
raise ValueError(f"Unable to serialize type {type(cast_in_data)} to text/plain")
14121415
return cls.__serialize_text_plain(cast_in_data)

src/main/resources/python/api_client.hbs

+4-1
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,8 @@ class OpenApiResponse(typing.Generic[T], JSONDetector, abc.ABC):
905905
elif content_type.startswith('multipart/form-data'):
906906
body_data = cls.__deserialize_multipart_form_data(response)
907907
content_type = 'multipart/form-data'
908+
elif content_type == 'application/x-pem-file':
909+
body_data = response.data.decode()
908910
else:
909911
raise NotImplementedError('Deserialization of {} has not yet been implemented'.format(content_type))
910912
body_schema = schemas.get_class(body_schema)
@@ -1283,6 +1285,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
12831285
content: content_type to MediaType schemas.Schema info
12841286
"""
12851287
__json_encoder = JSONEncoder()
1288+
__plain_txt_content_types = {'text/plain', 'application/x-pem-file'}
12861289
content: typing.Dict[str, typing.Type[MediaType]]
12871290
required: bool = False
12881291

@@ -1404,7 +1407,7 @@ class RequestBody(StyleFormSerializer, JSONDetector):
14041407
if isinstance(cast_in_data, (schemas.FileIO, bytes)):
14051408
raise ValueError(f"Invalid input data type. Data must be int/float/str/bool/None/tuple/immutabledict and it was type {type(cast_in_data)}")
14061409
return cls.__serialize_json(cast_in_data)
1407-
elif content_type == 'text/plain':
1410+
elif content_type in cls.__plain_txt_content_types:
14081411
if not isinstance(cast_in_data, (int, float, str)):
14091412
raise ValueError(f"Unable to serialize type {type(cast_in_data)} to text/plain")
14101413
return cls.__serialize_text_plain(cast_in_data)

0 commit comments

Comments
 (0)