mirror of
https://github.com/tauri-apps/plugins-workspace.git
synced 2026-09-26 21:41:48 +02:00
chore: edition 2024
This commit is contained in:
@@ -4,20 +4,20 @@
|
||||
|
||||
use std::{future::Future, pin::Pin, str::FromStr, sync::Arc, time::Duration};
|
||||
|
||||
use http::{header, HeaderMap, HeaderName, HeaderValue, Method, StatusCode};
|
||||
use reqwest::{redirect::Policy, NoProxy};
|
||||
use http::{HeaderMap, HeaderName, HeaderValue, Method, StatusCode, header};
|
||||
use reqwest::{NoProxy, redirect::Policy};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use tauri::{
|
||||
Manager, ResourceId, ResourceTable, Runtime, State, Webview,
|
||||
async_runtime::Mutex,
|
||||
command,
|
||||
ipc::{CommandScope, GlobalScope},
|
||||
Manager, ResourceId, ResourceTable, Runtime, State, Webview,
|
||||
};
|
||||
use tokio::sync::oneshot::{channel, Receiver, Sender};
|
||||
use tokio::sync::oneshot::{Receiver, Sender, channel};
|
||||
|
||||
use crate::{
|
||||
scope::{Entry, Scope},
|
||||
Error, Http, Result,
|
||||
scope::{Entry, Scope},
|
||||
};
|
||||
|
||||
const HTTP_USER_AGENT: &str = concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION"),);
|
||||
@@ -257,8 +257,12 @@ pub async fn fetch<R: Runtime>(
|
||||
if is_unsafe_header(&name) {
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
eprintln!("[\x1b[33mWARNING\x1b[0m] Skipping {name} header as it is a forbidden header per fetch spec https://fetch.spec.whatwg.org/#terminology-headers");
|
||||
eprintln!("[\x1b[33mWARNING\x1b[0m] if keeping the header is a desired behavior, you can enable `unsafe-headers` feature flag in your Cargo.toml");
|
||||
eprintln!(
|
||||
"[\x1b[33mWARNING\x1b[0m] Skipping {name} header as it is a forbidden header per fetch spec https://fetch.spec.whatwg.org/#terminology-headers"
|
||||
);
|
||||
eprintln!(
|
||||
"[\x1b[33mWARNING\x1b[0m] if keeping the header is a desired behavior, you can enable `unsafe-headers` feature flag in your Cargo.toml"
|
||||
);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -294,7 +298,9 @@ pub async fn fetch<R: Runtime>(
|
||||
{
|
||||
#[cfg(debug_assertions)]
|
||||
{
|
||||
eprintln!("[\x1b[33mWARNING\x1b[0m] using dangerous settings requires `dangerous-settings` feature flag in your Cargo.toml");
|
||||
eprintln!(
|
||||
"[\x1b[33mWARNING\x1b[0m] using dangerous settings requires `dangerous-settings` feature flag in your Cargo.toml"
|
||||
);
|
||||
}
|
||||
let _ = danger_config;
|
||||
return Err(Error::DangerousSettings);
|
||||
@@ -342,8 +348,8 @@ pub async fn fetch<R: Runtime>(
|
||||
}
|
||||
|
||||
// ensure we have an Origin header set
|
||||
if cfg!(not(feature = "unsafe-headers")) || !headers.contains_key(header::ORIGIN) {
|
||||
if let Ok(url) = webview.url() {
|
||||
if (cfg!(not(feature = "unsafe-headers")) || !headers.contains_key(header::ORIGIN))
|
||||
&& let Ok(url) = webview.url() {
|
||||
// The url crate returns OpaqueOrigin for tauri://localhost which serializes to "null"
|
||||
let origin = if url.scheme() == "tauri" {
|
||||
"tauri://localhost".to_string()
|
||||
@@ -352,7 +358,6 @@ pub async fn fetch<R: Runtime>(
|
||||
};
|
||||
headers.append(header::ORIGIN, HeaderValue::from_str(&origin)?);
|
||||
}
|
||||
}
|
||||
|
||||
// In case empty origin is passed, remove it. Some services do not like Origin header
|
||||
// so this way we can remove it in explicit way. The default behaviour is still to set it
|
||||
@@ -593,8 +598,10 @@ mod tests {
|
||||
Some(location) => format!(
|
||||
"HTTP/1.1 302 Found\r\nLocation: {location}\r\nContent-Length: 0\r\nConnection: close\r\n\r\n"
|
||||
),
|
||||
None => "HTTP/1.1 200 OK\r\nContent-Length: 6\r\nConnection: close\r\n\r\nsecret"
|
||||
.to_string(),
|
||||
None => {
|
||||
"HTTP/1.1 200 OK\r\nContent-Length: 6\r\nConnection: close\r\n\r\nsecret"
|
||||
.to_string()
|
||||
}
|
||||
};
|
||||
|
||||
let _ = stream.write_all(response.as_bytes());
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
|
||||
pub use reqwest;
|
||||
use tauri::{
|
||||
plugin::{Builder, TauriPlugin},
|
||||
Manager, Runtime,
|
||||
plugin::{Builder, TauriPlugin},
|
||||
};
|
||||
|
||||
pub use config::Config;
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
use std::{
|
||||
path::PathBuf,
|
||||
sync::{mpsc::Receiver, Mutex},
|
||||
sync::{Mutex, mpsc::Receiver},
|
||||
};
|
||||
|
||||
use cookie_store::{CookieStore, RawCookie, RawCookieParseError};
|
||||
|
||||
+14
-10
@@ -154,11 +154,13 @@ mod tests {
|
||||
assert!(scope.is_allowed(&"http://localhost:8080/file.png".parse().unwrap()));
|
||||
assert!(scope.is_allowed(&"http://localhost:8080/file.png#head".parse().unwrap()));
|
||||
assert!(scope.is_allowed(&"http://localhost:8080/assets/file.png".parse().unwrap()));
|
||||
assert!(scope.is_allowed(
|
||||
&"http://localhost:8080/assets/file.png?width=100&height=200"
|
||||
.parse()
|
||||
.unwrap()
|
||||
));
|
||||
assert!(
|
||||
scope.is_allowed(
|
||||
&"http://localhost:8080/assets/file.png?width=100&height=200"
|
||||
.parse()
|
||||
.unwrap()
|
||||
)
|
||||
);
|
||||
|
||||
assert!(!scope.is_allowed(&"http://localhost:8080/file.jpeg".parse().unwrap()));
|
||||
}
|
||||
@@ -172,11 +174,13 @@ mod tests {
|
||||
assert!(scope.is_allowed(&"http://something.else#tauri".parse().unwrap()));
|
||||
assert!(scope.is_allowed(&"http://something.else/path/to/file".parse().unwrap()));
|
||||
assert!(scope.is_allowed(&"http://something.else?rel=tauri".parse().unwrap()));
|
||||
assert!(scope.is_allowed(
|
||||
&"http://something.else/path/to/file.mp4?start=500"
|
||||
.parse()
|
||||
.unwrap()
|
||||
));
|
||||
assert!(
|
||||
scope.is_allowed(
|
||||
&"http://something.else/path/to/file.mp4?start=500"
|
||||
.parse()
|
||||
.unwrap()
|
||||
)
|
||||
);
|
||||
|
||||
assert!(!scope.is_allowed(&"https://something.else".parse().unwrap()));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user