@@ -1398,30 +1398,23 @@ def __serialize_text_plain(in_data: typing.Any) -> typing.Dict[str, str]:
1398
1398
1399
1399
def __multipart_json_item (self , key : str , value : Schema ) -> RequestField :
1400
1400
json_value = self .__json_encoder .default (value )
1401
- return RequestField (name = key , data = json .dumps (json_value ), headers = {'Content-Type' : 'application/json' })
1401
+ request_field = RequestField (name = key , data = json .dumps (json_value ))
1402
+ request_field .make_multipart (content_type = 'application/json' )
1403
+ return request_field
1402
1404
1403
1405
def __multipart_form_item (self , key : str , value : Schema ) -> RequestField :
1404
- content_type = None
1405
1406
if isinstance (value , str ):
1406
- content_type = 'text/plain'
1407
- request_field = RequestField ( name = key , data = str ( value ), headers = { 'Content-Type' : ' text/plain'} )
1407
+ request_field = RequestField ( name = key , data = str ( value ))
1408
+ request_field . make_multipart ( content_type = ' text/plain' )
1408
1409
elif isinstance (value , bytes ):
1409
- content_type = 'application/octet-stream'
1410
- request_field = RequestField ( name = key , data = value , headers = { 'Content-Type' : ' application/octet-stream'} )
1410
+ request_field = RequestField ( name = key , data = value )
1411
+ request_field . make_multipart ( content_type = ' application/octet-stream' )
1411
1412
elif isinstance (value , FileIO ):
1412
- # TODO get content type using urllib3
1413
- content_type = 'application/octet-stream'
1414
- request_field = RequestField (
1415
- name = key ,
1416
- data = value .read (),
1417
- filename = os .path .basename (value .name ),
1418
- headers = {'Content-Type' : 'application/octet-stream' }
1419
- )
1413
+ # TODO use content.encoding to limit allowed content types if they are present
1414
+ request_field = RequestField .from_tuple (key , (os .path .basename (value .name ), value .read ()))
1420
1415
value .close ()
1421
1416
else :
1422
- content_type = 'application/json'
1423
1417
request_field = self .__multipart_json_item (key = key , value = value )
1424
- request_field .make_multipart (content_type = content_type )
1425
1418
return request_field
1426
1419
1427
1420
def __serialize_multipart_form_data (
0 commit comments