wasm: Omit request body if it's empty (#1012)
This should allow creating GET and HEAD requests from http::Request
This commit is contained in:
		| @@ -44,6 +44,13 @@ impl Body { | |||||||
|             inner: Inner::Multipart(f), |             inner: Inner::Multipart(f), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     pub(crate) fn is_empty(&self) -> bool { | ||||||
|  |         match &self.inner { | ||||||
|  |             Inner::Bytes(bytes) => bytes.is_empty(), | ||||||
|  |             Inner::Multipart(form) => form.is_empty(), | ||||||
|  |         } | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl From<Bytes> for Body { | impl From<Bytes> for Body { | ||||||
|   | |||||||
| @@ -158,8 +158,10 @@ async fn fetch(req: Request) -> crate::Result<Response> { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     if let Some(body) = req.body() { |     if let Some(body) = req.body() { | ||||||
|  |         if !body.is_empty() { | ||||||
|             init.body(Some(&body.to_js_value()?.as_ref().as_ref())); |             init.body(Some(&body.to_js_value()?.as_ref().as_ref())); | ||||||
|         } |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     let js_req = web_sys::Request::new_with_str_and_init(req.url().as_str(), &init) |     let js_req = web_sys::Request::new_with_str_and_init(req.url().as_str(), &init) | ||||||
|         .map_err(crate::error::wasm) |         .map_err(crate::error::wasm) | ||||||
|   | |||||||
| @@ -13,6 +13,12 @@ pub struct Form { | |||||||
|     inner: FormParts<Part>, |     inner: FormParts<Part>, | ||||||
| } | } | ||||||
|  |  | ||||||
|  | impl Form { | ||||||
|  |     pub(crate) fn is_empty(&self) -> bool { | ||||||
|  |         self.inner.fields.is_empty() | ||||||
|  |     } | ||||||
|  | } | ||||||
|  |  | ||||||
| /// A field in a multipart form. | /// A field in a multipart form. | ||||||
| pub struct Part { | pub struct Part { | ||||||
|     meta: PartMetadata, |     meta: PartMetadata, | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user