From 05bf05b0dd6614869942ef751b3607c701fe1cef Mon Sep 17 00:00:00 2001 From: neon_arch Date: Mon, 20 Nov 2023 15:11:58 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=E2=AC=86=EF=B8=8F=20build:=20enable=20gzip?= =?UTF-8?q?=20and=20brotli=20features=20for=20the=20reqwest=20crate=20(#38?= =?UTF-8?q?4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 82e88b1..74034fe 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ bench = false path = "src/bin/websurfx.rs" [dependencies] -reqwest = {version="0.11.22", default-features=false, features=["rustls-tls"]} +reqwest = {version="0.11.22", default-features=false, features=["rustls-tls","brotli", "gzip"]} tokio = {version="1.32.0",features=["rt-multi-thread","macros"], default-features = false} serde = {version="1.0.190", default-features=false, features=["derive"]} serde_json = {version="1.0.108", default-features=false} From b42adaa5a3c5946ff8cb75a5f0136e3130e99685 Mon Sep 17 00:00:00 2001 From: neon_arch Date: Mon, 20 Nov 2023 15:27:49 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=E2=9A=A1=EF=B8=8F=20perf:=20rewrite=20the?= =?UTF-8?q?=20code=20by=20using=20a=20constant=20storing=20a=20prebuilt=20?= =?UTF-8?q?client=20globally=20for=20each=20thread=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/models/engine_models.rs | 10 +++++----- src/results/aggregator.rs | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/src/models/engine_models.rs b/src/models/engine_models.rs index 98367e8..f8e966e 100644 --- a/src/models/engine_models.rs +++ b/src/models/engine_models.rs @@ -3,7 +3,8 @@ use super::aggregation_models::SearchResult; use error_stack::{Report, Result, ResultExt}; -use std::{collections::HashMap, fmt, time::Duration}; +use reqwest::Client; +use std::{collections::HashMap, fmt}; /// A custom error type used for handle engine associated errors. #[derive(Debug)] @@ -71,12 +72,11 @@ pub trait SearchEngine: Sync + Send { &self, url: &str, header_map: reqwest::header::HeaderMap, - request_timeout: u8, + client: &Client, ) -> Result { // fetch the html from upstream search engine - Ok(reqwest::Client::new() + Ok(client .get(url) - .timeout(Duration::from_secs(request_timeout as u64)) // Add timeout to request to avoid DDOSing the server .headers(header_map) // add spoofed headers to emulate human behavior .send() .await @@ -109,7 +109,7 @@ pub trait SearchEngine: Sync + Send { query: &str, page: u32, user_agent: &str, - request_timeout: u8, + client: &Client, safe_search: u8, ) -> Result, EngineError>; } diff --git a/src/results/aggregator.rs b/src/results/aggregator.rs index b57768f..3285786 100644 --- a/src/results/aggregator.rs +++ b/src/results/aggregator.rs @@ -9,6 +9,7 @@ use crate::models::{ }; use error_stack::Report; use regex::Regex; +use reqwest::{Client, ClientBuilder}; use std::time::{SystemTime, UNIX_EPOCH}; use std::{ collections::HashMap, @@ -18,6 +19,9 @@ use std::{ use std::{fs::File, io::BufRead}; use tokio::task::JoinHandle; +/// A constant for holding the prebuilt Client globally in the app. +static CLIENT: std::sync::OnceLock = std::sync::OnceLock::new(); + /// Aliases for long type annotations type FutureVec = Vec, Report>>>; @@ -68,6 +72,16 @@ pub async fn aggregate( request_timeout: u8, safe_search: u8, ) -> Result> { + let client = CLIENT.get_or_init(|| { + ClientBuilder::new() + .timeout(Duration::from_secs(request_timeout as u64)) // Add timeout to request to avoid DDOSing the server + .https_only(true) + .gzip(true) + .brotli(true) + .build() + .unwrap() + }); + let user_agent: &str = random_user_agent(); // Add a random delay before making the request. @@ -88,7 +102,7 @@ pub async fn aggregate( let query: String = query.to_owned(); tasks.push(tokio::spawn(async move { search_engine - .results(&query, page, user_agent, request_timeout, safe_search) + .results(&query, page, user_agent, client, safe_search) .await })); } From fe74f2eef7f1ec01468443d501662433ca46a06a Mon Sep 17 00:00:00 2001 From: neon_arch Date: Mon, 20 Nov 2023 15:30:00 +0300 Subject: [PATCH 3/4] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20code=20to?= =?UTF-8?q?=20take=20prebuilt=20client=20to=20request=20search=20results?= =?UTF-8?q?=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/engines/brave.rs | 6 +++--- src/engines/duckduckgo.rs | 5 +++-- src/engines/searx.rs | 5 +++-- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/engines/brave.rs b/src/engines/brave.rs index 5c7c126..49626e3 100644 --- a/src/engines/brave.rs +++ b/src/engines/brave.rs @@ -4,7 +4,7 @@ use std::collections::HashMap; -use reqwest::header::HeaderMap; +use reqwest::{header::HeaderMap, Client}; use scraper::Html; use crate::models::aggregation_models::SearchResult; @@ -42,7 +42,7 @@ impl SearchEngine for Brave { query: &str, page: u32, user_agent: &str, - request_timeout: u8, + client: &Client, safe_search: u8, ) -> Result, EngineError> { let url = format!("https://search.brave.com/search?q={query}&offset={page}"); @@ -68,7 +68,7 @@ impl SearchEngine for Brave { .change_context(EngineError::UnexpectedError)?; let document: Html = Html::parse_document( - &Brave::fetch_html_from_upstream(self, &url, header_map, request_timeout).await?, + &Brave::fetch_html_from_upstream(self, &url, header_map, client).await?, ); if let Some(no_result_msg) = self.parser.parse_for_no_results(&document).nth(0) { diff --git a/src/engines/duckduckgo.rs b/src/engines/duckduckgo.rs index 352a33b..fadddb6 100644 --- a/src/engines/duckduckgo.rs +++ b/src/engines/duckduckgo.rs @@ -5,6 +5,7 @@ use std::collections::HashMap; use reqwest::header::HeaderMap; +use reqwest::Client; use scraper::Html; use crate::models::aggregation_models::SearchResult; @@ -44,7 +45,7 @@ impl SearchEngine for DuckDuckGo { query: &str, page: u32, user_agent: &str, - request_timeout: u8, + client: &Client, _safe_search: u8, ) -> Result, EngineError> { // Page number can be missing or empty string and so appropriate handling is required @@ -76,7 +77,7 @@ impl SearchEngine for DuckDuckGo { .change_context(EngineError::UnexpectedError)?; let document: Html = Html::parse_document( - &DuckDuckGo::fetch_html_from_upstream(self, &url, header_map, request_timeout).await?, + &DuckDuckGo::fetch_html_from_upstream(self, &url, header_map, client).await?, ); if self.parser.parse_for_no_results(&document).next().is_some() { diff --git a/src/engines/searx.rs b/src/engines/searx.rs index 79c1e95..7bf0431 100644 --- a/src/engines/searx.rs +++ b/src/engines/searx.rs @@ -3,6 +3,7 @@ //! number if provided. use reqwest::header::HeaderMap; +use reqwest::Client; use scraper::Html; use std::collections::HashMap; @@ -40,7 +41,7 @@ impl SearchEngine for Searx { query: &str, page: u32, user_agent: &str, - request_timeout: u8, + client: &Client, mut safe_search: u8, ) -> Result, EngineError> { // Page number can be missing or empty string and so appropriate handling is required @@ -68,7 +69,7 @@ impl SearchEngine for Searx { .change_context(EngineError::UnexpectedError)?; let document: Html = Html::parse_document( - &Searx::fetch_html_from_upstream(self, &url, header_map, request_timeout).await?, + &Searx::fetch_html_from_upstream(self, &url, header_map, client).await?, ); if let Some(no_result_msg) = self.parser.parse_for_no_results(&document).nth(1) { From a46a2231c33e0b249bedaa6b5759154fadf2d303 Mon Sep 17 00:00:00 2001 From: neon_arch Date: Mon, 20 Nov 2023 15:32:24 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=94=96=20chore:=20bump=20the=20app=20?= =?UTF-8?q?version=20(#384)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Cargo.lock | 218 +++++++++++++++++++++++++++++++++++------------------ Cargo.toml | 2 +- 2 files changed, 144 insertions(+), 76 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6c308b5..c9aa95f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,7 +14,7 @@ dependencies = [ "futures-sink", "memchr", "pin-project-lite", - "tokio 1.33.0", + "tokio 1.34.0", "tokio-util", "tracing", ] @@ -31,7 +31,7 @@ dependencies = [ "futures-util", "log", "once_cell", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -87,7 +87,7 @@ dependencies = [ "derive_more", "encoding_rs", "futures-core", - "http 0.2.9", + "http 0.2.11", "httparse", "httpdate", "itoa 1.0.9", @@ -98,8 +98,8 @@ dependencies = [ "pin-project-lite", "rand 0.8.5", "sha1", - "smallvec 1.11.1", - "tokio 1.33.0", + "smallvec 1.11.2", + "tokio 1.34.0", "tokio-util", "tracing", ] @@ -121,7 +121,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d66ff4d247d2b160861fa2866457e85706833527840e4133f8f49aa423a38799" dependencies = [ "bytestring", - "http 0.2.9", + "http 0.2.11", "regex", "serde", "tracing", @@ -134,7 +134,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" dependencies = [ "futures-core", - "tokio 1.33.0", + "tokio 1.34.0", ] [[package]] @@ -150,7 +150,7 @@ dependencies = [ "futures-util", "mio 0.8.9", "socket2 0.5.5", - "tokio 1.33.0", + "tokio 1.34.0", "tracing", ] @@ -209,7 +209,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded 0.7.1", - "smallvec 1.11.1", + "smallvec 1.11.2", "socket2 0.5.5", "time 0.3.30", "url 2.4.1", @@ -284,6 +284,21 @@ dependencies = [ "memchr", ] +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + [[package]] name = "anes" version = "0.1.6" @@ -314,6 +329,20 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "619743e34b5ba4e9703bba34deac3427c72507c7159f5fd030aea8cac0cfe341" +[[package]] +name = "async-compression" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5" +dependencies = [ + "brotli", + "flate2", + "futures-core", + "memchr", + "pin-project-lite", + "tokio 1.34.0", +] + [[package]] name = "async-once-cell" version = "0.5.3" @@ -413,10 +442,31 @@ dependencies = [ ] [[package]] -name = "bstr" -version = "1.7.0" +name = "brotli" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c79ad7fb2dd38f3dabd76b09c6a5a20c038fc0213ef1e9afd30eb777f120f019" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "2.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "542f33a8835a0884b006a0c3df3dadd99c0c3f296ed26c2fdc8028e01ad6230c" dependencies = [ "memchr", "serde", @@ -477,9 +527,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -562,18 +612,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.7" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" dependencies = [ "anstyle", "clap_lex", @@ -604,7 +654,7 @@ dependencies = [ "futures-core", "memchr", "pin-project-lite", - "tokio 1.33.0", + "tokio 1.34.0", "tokio-util", ] @@ -828,7 +878,7 @@ dependencies = [ "dtoa-short", "itoa 1.0.9", "phf 0.11.2", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -841,7 +891,7 @@ dependencies = [ "dtoa-short", "itoa 1.0.9", "phf 0.11.2", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -974,9 +1024,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "log", ] @@ -988,14 +1038,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a2d328fc287c61314c4a61af7cfdcbd7e678e39778488c7cb13ec133ce0f4059" dependencies = [ "fsio", - "indexmap", + "indexmap 1.9.3", ] [[package]] -name = "errno" -version = "0.3.6" +name = "equivalent" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" dependencies = [ "libc", "windows-sys", @@ -1314,7 +1370,7 @@ dependencies = [ "parking_lot 0.12.1", "quanta", "rand 0.8.5", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -1328,7 +1384,7 @@ dependencies = [ "fnv", "futures 0.1.31", "http 0.1.21", - "indexmap", + "indexmap 1.9.3", "log", "slab", "string", @@ -1337,19 +1393,19 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes 1.5.0", "fnv", "futures-core", "futures-sink", "futures-util", - "http 0.2.9", - "indexmap", + "http 0.2.11", + "indexmap 2.1.0", "slab", - "tokio 1.33.0", + "tokio 1.34.0", "tokio-util", "tracing", ] @@ -1362,9 +1418,9 @@ checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" [[package]] name = "handlebars" -version = "4.4.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" +checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" dependencies = [ "log", "pest", @@ -1453,9 +1509,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes 1.5.0", "fnv", @@ -1481,7 +1537,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" dependencies = [ "bytes 1.5.0", - "http 0.2.9", + "http 0.2.11", "pin-project-lite", ] @@ -1543,15 +1599,15 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "h2 0.3.21", - "http 0.2.9", + "h2 0.3.22", + "http 0.2.11", "http-body 0.4.5", "httparse", "httpdate", "itoa 1.0.9", "pin-project-lite", "socket2 0.4.10", - "tokio 1.33.0", + "tokio 1.34.0", "tower-service", "tracing", "want 0.3.1", @@ -1564,10 +1620,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http 0.2.9", + "http 0.2.11", "hyper 0.14.27", "rustls", - "tokio 1.33.0", + "tokio 1.34.0", "tokio-rustls", ] @@ -1626,6 +1682,16 @@ dependencies = [ "hashbrown 0.12.3", ] +[[package]] +name = "indexmap" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +dependencies = [ + "equivalent", + "hashbrown 0.14.2", +] + [[package]] name = "iovec" version = "0.1.4" @@ -1737,7 +1803,7 @@ dependencies = [ "parcel_selectors", "paste", "pathdiff", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -1921,7 +1987,7 @@ dependencies = [ "crossbeam-utils 0.8.16", "dashmap", "skeptic", - "smallvec 1.11.1", + "smallvec 1.11.2", "tagptr", "triomphe", ] @@ -2174,7 +2240,7 @@ dependencies = [ "phf 0.10.1", "phf_codegen 0.10.0", "precomputed-hash", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -2222,7 +2288,7 @@ dependencies = [ "cfg-if 1.0.0", "libc", "redox_syscall 0.4.1", - "smallvec 1.11.1", + "smallvec 1.11.2", "windows-targets", ] @@ -2725,7 +2791,7 @@ dependencies = [ "percent-encoding 2.3.0", "pin-project-lite", "ryu", - "tokio 1.33.0", + "tokio 1.34.0", "tokio-retry", "tokio-util", "url 2.4.1", @@ -2815,13 +2881,14 @@ version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ + "async-compression", "base64 0.21.5", "bytes 1.5.0", "encoding_rs", "futures-core", "futures-util", - "h2 0.3.21", - "http 0.2.9", + "h2 0.3.22", + "http 0.2.11", "http-body 0.4.5", "hyper 0.14.27", "hyper-rustls", @@ -2838,8 +2905,9 @@ dependencies = [ "serde_json", "serde_urlencoded 0.7.1", "system-configuration", - "tokio 1.33.0", + "tokio 1.34.0", "tokio-rustls", + "tokio-util", "tower-service", "url 2.4.1", "wasm-bindgen", @@ -2895,9 +2963,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.21" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ "bitflags 2.4.1", "errno", @@ -2908,9 +2976,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.8" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", "ring", @@ -2920,9 +2988,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ "base64 0.21.5", ] @@ -3053,7 +3121,7 @@ dependencies = [ "phf_codegen 0.10.0", "precomputed-hash", "servo_arc", - "smallvec 1.11.1", + "smallvec 1.11.2", ] [[package]] @@ -3222,9 +3290,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" dependencies = [ "serde", ] @@ -3548,9 +3616,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.33.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ "backtrace", "bytes 1.5.0", @@ -3609,9 +3677,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e" +checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2 1.0.69", "quote 1.0.33", @@ -3645,7 +3713,7 @@ checksum = "7f57eb36ecbe0fc510036adff84824dd3c24bb781e21bfa67b69d556aa85214f" dependencies = [ "pin-project", "rand 0.8.5", - "tokio 1.33.0", + "tokio 1.34.0", ] [[package]] @@ -3655,7 +3723,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ "rustls", - "tokio 1.33.0", + "tokio 1.34.0", ] [[package]] @@ -3721,7 +3789,7 @@ dependencies = [ "futures-core", "futures-sink", "pin-project-lite", - "tokio 1.33.0", + "tokio 1.34.0", "tracing", ] @@ -4022,7 +4090,7 @@ checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" [[package]] name = "websurfx" -version = "1.2.25" +version = "1.2.27" dependencies = [ "actix-cors", "actix-files", @@ -4051,9 +4119,9 @@ dependencies = [ "scraper", "serde", "serde_json", - "smallvec 1.11.1", + "smallvec 1.11.2", "tempfile", - "tokio 1.33.0", + "tokio 1.34.0", ] [[package]] @@ -4208,18 +4276,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.25" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.25" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" dependencies = [ "proc-macro2 1.0.69", "quote 1.0.33", diff --git a/Cargo.toml b/Cargo.toml index 74034fe..3e33021 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "websurfx" -version = "1.2.25" +version = "1.2.27" edition = "2021" description = "An open-source alternative to Searx that provides clean, ad-free, and organic results with incredible speed while keeping privacy and security in mind." repository = "https://github.com/neon-mmd/websurfx"