0
0
mirror of https://github.com/neon-mmd/websurfx.git synced 2024-10-18 06:22:53 -04:00

♻️ refactor: code to take prebuilt client to request search results (#384)

This commit is contained in:
neon_arch 2023-11-20 15:30:00 +03:00
parent b42adaa5a3
commit fe74f2eef7
3 changed files with 9 additions and 7 deletions

View File

@ -4,7 +4,7 @@
use std::collections::HashMap; use std::collections::HashMap;
use reqwest::header::HeaderMap; use reqwest::{header::HeaderMap, Client};
use scraper::Html; use scraper::Html;
use crate::models::aggregation_models::SearchResult; use crate::models::aggregation_models::SearchResult;
@ -42,7 +42,7 @@ impl SearchEngine for Brave {
query: &str, query: &str,
page: u32, page: u32,
user_agent: &str, user_agent: &str,
request_timeout: u8, client: &Client,
safe_search: u8, safe_search: u8,
) -> Result<HashMap<String, SearchResult>, EngineError> { ) -> Result<HashMap<String, SearchResult>, EngineError> {
let url = format!("https://search.brave.com/search?q={query}&offset={page}"); let url = format!("https://search.brave.com/search?q={query}&offset={page}");
@ -68,7 +68,7 @@ impl SearchEngine for Brave {
.change_context(EngineError::UnexpectedError)?; .change_context(EngineError::UnexpectedError)?;
let document: Html = Html::parse_document( 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) { if let Some(no_result_msg) = self.parser.parse_for_no_results(&document).nth(0) {

View File

@ -5,6 +5,7 @@
use std::collections::HashMap; use std::collections::HashMap;
use reqwest::header::HeaderMap; use reqwest::header::HeaderMap;
use reqwest::Client;
use scraper::Html; use scraper::Html;
use crate::models::aggregation_models::SearchResult; use crate::models::aggregation_models::SearchResult;
@ -44,7 +45,7 @@ impl SearchEngine for DuckDuckGo {
query: &str, query: &str,
page: u32, page: u32,
user_agent: &str, user_agent: &str,
request_timeout: u8, client: &Client,
_safe_search: u8, _safe_search: u8,
) -> Result<HashMap<String, SearchResult>, EngineError> { ) -> Result<HashMap<String, SearchResult>, EngineError> {
// Page number can be missing or empty string and so appropriate handling is required // 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)?; .change_context(EngineError::UnexpectedError)?;
let document: Html = Html::parse_document( 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() { if self.parser.parse_for_no_results(&document).next().is_some() {

View File

@ -3,6 +3,7 @@
//! number if provided. //! number if provided.
use reqwest::header::HeaderMap; use reqwest::header::HeaderMap;
use reqwest::Client;
use scraper::Html; use scraper::Html;
use std::collections::HashMap; use std::collections::HashMap;
@ -40,7 +41,7 @@ impl SearchEngine for Searx {
query: &str, query: &str,
page: u32, page: u32,
user_agent: &str, user_agent: &str,
request_timeout: u8, client: &Client,
mut safe_search: u8, mut safe_search: u8,
) -> Result<HashMap<String, SearchResult>, EngineError> { ) -> Result<HashMap<String, SearchResult>, EngineError> {
// Page number can be missing or empty string and so appropriate handling is required // 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)?; .change_context(EngineError::UnexpectedError)?;
let document: Html = Html::parse_document( 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) { if let Some(no_result_msg) = self.parser.parse_for_no_results(&document).nth(1) {