in core/src/raw/http_util/multipart.rs [366:432]
fn format(&self) -> Bytes {
let mut bs = BytesMut::new();
// Write parts headers.
for (k, v) in self.part_headers.iter() {
// Trick!
//
// Azblob could not recognize header names like `content-type`
// and requires to use `Content-Type`. So we hardcode the part
// headers name here.
match k.as_str() {
"content-type" => {
bs.extend_from_slice("Content-Type".as_bytes());
}
"content-id" => {
bs.extend_from_slice("Content-ID".as_bytes());
}
"content-transfer-encoding" => {
bs.extend_from_slice("Content-Transfer-Encoding".as_bytes());
}
_ => {
bs.extend_from_slice(k.as_str().as_bytes());
}
}
bs.extend_from_slice(b": ");
bs.extend_from_slice(v.as_bytes());
bs.extend_from_slice(b"\r\n");
}
// Write request line: `DELETE /container0/blob0 HTTP/1.1`
bs.extend_from_slice(b"\r\n");
bs.extend_from_slice(
self.method
.as_ref()
.expect("mixed part must be a valid request that contains method")
.as_str()
.as_bytes(),
);
bs.extend_from_slice(b" ");
bs.extend_from_slice(
self.uri
.as_ref()
.expect("mixed part must be a valid request that contains uri")
.path()
.as_bytes(),
);
bs.extend_from_slice(b" ");
bs.extend_from_slice(format!("{:?}", self.version).as_bytes());
bs.extend_from_slice(b"\r\n");
// Write request headers.
for (k, v) in self.headers.iter() {
bs.extend_from_slice(k.as_str().as_bytes());
bs.extend_from_slice(b": ");
bs.extend_from_slice(v.as_bytes());
bs.extend_from_slice(b"\r\n");
}
// Write content.
bs.extend_from_slice(b"\r\n");
if !self.content.is_empty() {
bs.extend_from_slice(&self.content);
bs.extend_from_slice(b"\r\n");
}
bs.freeze()
}