Improve aggregation
Adds the EngineHandler struct Removes vulnerability where an attacker could send requests cookies with fake engine names and crash the server. Merged RawSearchResult and SearchResult, as they were functionally identical.
This commit is contained in:
parent
15dfda6ea9
commit
5aca5c0d0d
7 changed files with 84 additions and 99 deletions
|
@ -7,7 +7,7 @@ use std::collections::HashMap;
|
|||
use reqwest::header::{HeaderMap, CONTENT_TYPE, COOKIE, REFERER, USER_AGENT};
|
||||
use scraper::{Html, Selector};
|
||||
|
||||
use crate::results::aggregation_models::RawSearchResult;
|
||||
use crate::results::aggregation_models::SearchResult;
|
||||
|
||||
use super::engine_models::{EngineError, SearchEngine};
|
||||
|
||||
|
@ -43,7 +43,7 @@ impl SearchEngine for DuckDuckGo {
|
|||
page: u32,
|
||||
user_agent: String,
|
||||
request_timeout: u8,
|
||||
) -> Result<HashMap<String, RawSearchResult>, EngineError> {
|
||||
) -> Result<HashMap<String, SearchResult>, EngineError> {
|
||||
// Page number can be missing or empty string and so appropriate handling is required
|
||||
// so that upstream server recieves valid page number.
|
||||
let url: String = match page {
|
||||
|
@ -120,7 +120,7 @@ impl SearchEngine for DuckDuckGo {
|
|||
Ok(document
|
||||
.select(&results)
|
||||
.map(|result| {
|
||||
RawSearchResult::new(
|
||||
SearchResult::new(
|
||||
result
|
||||
.select(&result_title)
|
||||
.next()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue