Skip to content

Commit cfa008d

Browse files
web query for query string
1 parent 041ef30 commit cfa008d

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

src/handlers/http/prism_home.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
*
1717
*/
1818

19+
use std::collections::HashMap;
20+
1921
use actix_web::{web, HttpRequest, Responder};
2022

2123
use crate::{
@@ -43,19 +45,17 @@ pub async fn home_api(req: HttpRequest) -> Result<impl Responder, PrismHomeError
4345
pub async fn home_search(req: HttpRequest) -> Result<impl Responder, PrismHomeError> {
4446
let key = extract_session_key_from_req(&req)
4547
.map_err(|err| PrismHomeError::Anyhow(anyhow::Error::msg(err.to_string())))?;
46-
let query_string = req.query_string();
47-
if query_string.is_empty() {
48+
let query_map = web::Query::<HashMap<String, String>>::from_query(req.query_string())
49+
.map_err(|_| PrismHomeError::InvalidQueryParameter(HOME_SEARCH_QUERY_PARAM.to_string()))?;
50+
51+
if query_map.is_empty() {
4852
return Ok(web::Json(serde_json::json!({})));
4953
}
50-
// Validate query string format
51-
let query_parts: Vec<&str> = query_string.split('=').collect();
52-
if query_parts.len() != 2 || query_parts[0] != HOME_SEARCH_QUERY_PARAM {
53-
return Err(PrismHomeError::InvalidQueryParameter(
54-
HOME_SEARCH_QUERY_PARAM.to_string(),
55-
));
56-
}
5754

58-
let query_value = query_parts[1].to_lowercase();
55+
let query_value = query_map
56+
.get(HOME_SEARCH_QUERY_PARAM)
57+
.ok_or_else(|| PrismHomeError::InvalidQueryParameter(HOME_SEARCH_QUERY_PARAM.to_string()))?
58+
.to_lowercase();
5959
let res = generate_home_search_response(&key, &query_value).await?;
6060
let json_res = serde_json::to_value(res)
6161
.map_err(|err| PrismHomeError::Anyhow(anyhow::Error::msg(err.to_string())))?;

0 commit comments

Comments
 (0)