mirror of
https://github.com/tauri-apps/tauri.git
synced 2024-12-01 11:13:40 +03:00
This commit is contained in:
parent
285bf64bf9
commit
1006c1cf3b
5
.changes/fix-reqwest-headers.md
Normal file
5
.changes/fix-reqwest-headers.md
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
"tauri": patch
|
||||||
|
---
|
||||||
|
|
||||||
|
Fixes HTTP API headers being overwritten when using the `reqwest` client.
|
@ -38,7 +38,11 @@ pub enum Error {
|
|||||||
/// HTTP method error.
|
/// HTTP method error.
|
||||||
#[error("{0}")]
|
#[error("{0}")]
|
||||||
HttpMethod(#[from] http::method::InvalidMethod),
|
HttpMethod(#[from] http::method::InvalidMethod),
|
||||||
/// Invalid HTTO header.
|
/// Invalid HTTP header value.
|
||||||
|
#[cfg(feature = "reqwest-client")]
|
||||||
|
#[error("{0}")]
|
||||||
|
HttpHeaderValue(#[from] http::header::InvalidHeaderValue),
|
||||||
|
/// Invalid HTTP header value.
|
||||||
#[error("{0}")]
|
#[error("{0}")]
|
||||||
HttpHeader(#[from] http::header::InvalidHeaderName),
|
HttpHeader(#[from] http::header::InvalidHeaderName),
|
||||||
/// Failed to serialize header value as string.
|
/// Failed to serialize header value as string.
|
||||||
|
@ -148,32 +148,15 @@ impl Client {
|
|||||||
request_builder = request_builder.query(&query);
|
request_builder = request_builder.query(&query);
|
||||||
}
|
}
|
||||||
|
|
||||||
if let Some(headers) = request.headers {
|
|
||||||
for (header, header_value) in headers.iter() {
|
|
||||||
request_builder =
|
|
||||||
request_builder.header(HeaderName::from_bytes(header.as_bytes())?, header_value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if let Some(timeout) = request.timeout {
|
if let Some(timeout) = request.timeout {
|
||||||
request_builder = request_builder.timeout(Duration::from_secs(timeout));
|
request_builder = request_builder.timeout(Duration::from_secs(timeout));
|
||||||
}
|
}
|
||||||
|
|
||||||
let response = if let Some(body) = request.body {
|
if let Some(body) = request.body {
|
||||||
match body {
|
request_builder = match body {
|
||||||
Body::Bytes(data) => {
|
Body::Bytes(data) => request_builder.body(bytes::Bytes::from(data)),
|
||||||
request_builder
|
Body::Text(text) => request_builder.body(bytes::Bytes::from(text)),
|
||||||
.body(bytes::Bytes::from(data))
|
Body::Json(json) => request_builder.json(&json),
|
||||||
.send()
|
|
||||||
.await?
|
|
||||||
}
|
|
||||||
Body::Text(text) => {
|
|
||||||
request_builder
|
|
||||||
.body(bytes::Bytes::from(text))
|
|
||||||
.send()
|
|
||||||
.await?
|
|
||||||
}
|
|
||||||
Body::Json(json) => request_builder.json(&json).send().await?,
|
|
||||||
Body::Form(form_body) => {
|
Body::Form(form_body) => {
|
||||||
let mut form = Vec::new();
|
let mut form = Vec::new();
|
||||||
for (name, part) in form_body.0 {
|
for (name, part) in form_body.0 {
|
||||||
@ -183,12 +166,22 @@ impl Client {
|
|||||||
FormPart::Text(text) => form.push((name, text)),
|
FormPart::Text(text) => form.push((name, text)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
request_builder.form(&form).send().await?
|
request_builder.form(&form)
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut http_request = request_builder.build()?;
|
||||||
|
if let Some(headers) = request.headers {
|
||||||
|
for (header, value) in headers.iter() {
|
||||||
|
http_request.headers_mut().insert(
|
||||||
|
HeaderName::from_bytes(header.as_bytes())?,
|
||||||
|
http::header::HeaderValue::from_str(value)?,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
} else {
|
}
|
||||||
request_builder.send().await?
|
|
||||||
};
|
let response = self.0.execute(http_request).await?;
|
||||||
|
|
||||||
if response.status().is_success() {
|
if response.status().is_success() {
|
||||||
Ok(Response(
|
Ok(Response(
|
||||||
|
Loading…
Reference in New Issue
Block a user