From 5d029678cb7bb3f4bb72c0f9d8cee64910deddaa Mon Sep 17 00:00:00 2001 From: gngpp Date: Wed, 15 Apr 2026 14:02:18 +0800 Subject: [PATCH 1/2] chore(multipart): fmt code --- src/client/body/multipart.rs | 58 ++++++++++++++---------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/src/client/body/multipart.rs b/src/client/body/multipart.rs index d43a2195..56565078 100644 --- a/src/client/body/multipart.rs +++ b/src/client/body/multipart.rs @@ -63,7 +63,7 @@ impl Multipart { fn build_form(&mut self, py: Python) -> PyResult { let mut form = multipart::Form::new(); for part in &mut self.parts { - let (name, inner) = part.build_form_part(py)?; + let (name, inner) = part.build_part(py)?; form = form.part(name, inner); } Ok(form) @@ -121,55 +121,43 @@ impl Part { } } - fn build_inner(value: Value, length: Option) -> Result { - Ok(match value { - Value::Text(text) => multipart::Part::stream(Body::from(Bytes::from_owner(text))), - Value::Bytes(bytes) => multipart::Part::stream(Body::from(Bytes::from_owner(bytes))), - Value::File(path) => pyo3_async_runtimes::tokio::get_runtime() - .block_on(multipart::Part::file(path)) - .map_err(Error::from)?, - Value::Stream(stream) => { - let stream = Body::wrap_stream(stream); - match length { - Some(length) => multipart::Part::stream_with_length(stream, length), - None => multipart::Part::stream(stream), - } - } - }) - } - - fn clone_value_or_take(&mut self, py: Python) -> PyResult { - self.value + fn build_part(&mut self, py: Python) -> PyResult<(String, multipart::Part)> { + let value = self + .value .as_ref() .and_then(|value| value.try_clone(py)) .or_else(|| self.value.take()) - .ok_or_else(|| Error::Memory.into()) - } - - fn build_form_part(&mut self, py: Python) -> PyResult<(String, multipart::Part)> { - let value = self.clone_value_or_take(py)?; - let name = self.name.clone(); - let filename = self.filename.clone(); - let mime = self.mime.clone(); - let length = self.length; - let headers = self.headers.clone(); + .ok_or_else(|| Error::Memory)?; py.detach(move || { - let mut inner = Self::build_inner(value, length)?; + let mut inner = match value { + Value::Text(text) => multipart::Part::stream(Bytes::from_owner(text)), + Value::Bytes(bytes) => multipart::Part::stream(Bytes::from_owner(bytes)), + Value::File(path) => pyo3_async_runtimes::tokio::get_runtime() + .block_on(multipart::Part::file(path)) + .map_err(Error::from)?, + Value::Stream(stream) => { + let stream = Body::wrap_stream(stream); + match self.length { + Some(length) => multipart::Part::stream_with_length(stream, length), + None => multipart::Part::stream(stream), + } + } + }; - if let Some(filename) = filename { + if let Some(filename) = self.filename.clone() { inner = inner.file_name(filename); } - if let Some(mime) = mime { + if let Some(mime) = self.mime.clone() { inner = inner.mime_str(&mime).map_err(Error::Library)?; } - if let Some(headers) = headers { + if let Some(headers) = self.headers.clone() { inner = inner.headers(headers.0); } - Ok((name, inner)) + Ok((self.name.clone(), inner)) }) } From 5767f5a3328670816dfdf5991a95c74e5fb34d9f Mon Sep 17 00:00:00 2001 From: gngpp Date: Wed, 15 Apr 2026 14:04:17 +0800 Subject: [PATCH 2/2] fmt --- src/client/body/multipart.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/body/multipart.rs b/src/client/body/multipart.rs index 56565078..51f561e5 100644 --- a/src/client/body/multipart.rs +++ b/src/client/body/multipart.rs @@ -149,8 +149,8 @@ impl Part { inner = inner.file_name(filename); } - if let Some(mime) = self.mime.clone() { - inner = inner.mime_str(&mime).map_err(Error::Library)?; + if let Some(ref mime) = self.mime { + inner = inner.mime_str(mime).map_err(Error::Library)?; } if let Some(headers) = self.headers.clone() {