def _set_content_body(content: ContentType, internal_request: _PipelineTransportHttpRequest) -> None: headers = internal_request.headers content_type = headers.get("Content-Type") if _is_stream_or_str_bytes(content): # stream will be bytes / str, or iterator of bytes / str internal_request.set_streamed_data_body(content) if isinstance(content, str) and content: _set_content_length_header("Content-Length", str(len(internal_request.data)), internal_request) _set_content_type_header("text/plain", internal_request) elif isinstance(content, bytes) and content: _set_content_length_header("Content-Length", str(len(internal_request.data)), internal_request) _set_content_type_header("application/octet-stream", internal_request) elif isinstance(content, (Iterable, AsyncIterable)): _set_content_length_header("Transfer-Encoding", "chunked", internal_request) _set_content_type_header("application/octet-stream", internal_request) elif isinstance(content, ET.Element): # XML body internal_request.set_xml_body(content) _set_content_type_header("application/xml", internal_request) _set_content_length_header("Content-Length", str(len(internal_request.data)), internal_request) elif content_type and content_type.startswith("text/"): # Text body internal_request.set_text_body(content) _set_content_length_header("Content-Length", str(len(internal_request.data)), internal_request) else: # Other body internal_request.data = content internal_request.headers = headers