amqp_api_server/api/input/
sanitizer.rs

1use serde_json::{Map, Value};
2use crate::api::input::request::Request;
3
4use crate::error::{Error, ErrorKind};
5
6pub fn sanitize(
7    raw_request: Map<String, Value>,
8    actions: &'static [&'static str],
9) -> Result<Request, Error> {
10    let request = Request::new(raw_request);
11
12    let header = request.try_get_header()?;
13
14    if !actions
15        .iter()
16        .any(|valid_action| (*valid_action).eq(header.action()))
17    {
18        return Err(Error::new(
19            ErrorKind::SanitizationFailure,
20            format!("invalid action detected: {}", header.action()),
21        ));
22    }
23
24    Ok(request)
25}