|
17 | 17 | */
|
18 | 18 |
|
19 | 19 | use core::str;
|
20 |
| -use std::fs; |
| 20 | +use std::{collections::HashMap, fs}; |
21 | 21 |
|
22 | 22 | use actix_web::{
|
23 | 23 | web::{self, Path},
|
@@ -47,6 +47,7 @@ use crate::{
|
47 | 47 | stats,
|
48 | 48 | storage::{ObjectStoreFormat, StreamType, STREAM_ROOT_DIRECTORY},
|
49 | 49 | };
|
| 50 | +const STATS_DATE_QUERY_PARAM: &str = "date"; |
50 | 51 |
|
51 | 52 | pub async fn delete(stream_name: Path<String>) -> Result<impl Responder, StreamError> {
|
52 | 53 | let stream_name = stream_name.into_inner();
|
@@ -141,16 +142,13 @@ pub async fn get_stats(
|
141 | 142 | return Err(StreamNotFound(stream_name.clone()).into());
|
142 | 143 | }
|
143 | 144 |
|
144 |
| - let query_string = req.query_string(); |
145 |
| - if !query_string.is_empty() { |
146 |
| - let date_key = query_string.split('=').collect::<Vec<&str>>()[0]; |
147 |
| - let date_value = query_string.split('=').collect::<Vec<&str>>()[1]; |
148 |
| - if date_key != "date" { |
149 |
| - return Err(StreamError::Custom { |
150 |
| - msg: "Invalid query parameter".to_string(), |
151 |
| - status: StatusCode::BAD_REQUEST, |
152 |
| - }); |
153 |
| - } |
| 145 | + let query_map = web::Query::<HashMap<String, String>>::from_query(req.query_string()) |
| 146 | + .map_err(|_| StreamError::InvalidQueryParameter(STATS_DATE_QUERY_PARAM.to_string()))?; |
| 147 | + |
| 148 | + if !query_map.is_empty() { |
| 149 | + let date_value = query_map.get(STATS_DATE_QUERY_PARAM).ok_or_else(|| { |
| 150 | + StreamError::InvalidQueryParameter(STATS_DATE_QUERY_PARAM.to_string()) |
| 151 | + })?; |
154 | 152 |
|
155 | 153 | if !date_value.is_empty() {
|
156 | 154 | // this function requires all the ingestor stream jsons
|
@@ -180,7 +178,7 @@ pub async fn get_stats(
|
180 | 178 |
|
181 | 179 | let stats = serde_json::to_value(stats)?;
|
182 | 180 |
|
183 |
| - return Ok((web::Json(stats), StatusCode::OK)); |
| 181 | + return Ok(web::Json(stats)); |
184 | 182 | }
|
185 | 183 | }
|
186 | 184 |
|
@@ -227,5 +225,5 @@ pub async fn get_stats(
|
227 | 225 |
|
228 | 226 | let stats = serde_json::to_value(stats)?;
|
229 | 227 |
|
230 |
| - Ok((web::Json(stats), StatusCode::OK)) |
| 228 | + Ok(web::Json(stats)) |
231 | 229 | }
|
0 commit comments