binary_options_tools_core/general/
validate.rs

1use crate::error::{BinaryOptionsResult, BinaryOptionsToolsError};
2
3use super::traits::MessageTransfer;
4
5pub fn validate<Transfer>(
6    validator: impl Fn(&Transfer) -> bool + Send + Sync,
7    message: Transfer,
8) -> BinaryOptionsResult<Option<Transfer>>
9where
10    Transfer: MessageTransfer,
11{
12    if let Some(e) = message.error() {
13        Err(BinaryOptionsToolsError::WebSocketMessageError(
14            e.to_string(),
15        ))
16    } else if validator(&message) {
17        Ok(Some(message))
18    } else {
19        Ok(None)
20    }
21}