Skip to main content

binary_option_tools_core/pocketoption/
validators.rs

1use uuid::Uuid;
2
3use super::parser::message::WebSocketMessage;
4
5pub fn order_validator(order_index: u64) -> impl Fn(&WebSocketMessage) -> bool + Send + Sync {
6    move |message| {
7        if let WebSocketMessage::SuccessopenOrder(order) = message {
8            if order.request_id.is_some_and(|id| id == order_index) {
9                return true;
10            }
11        }
12        false
13    }
14}
15
16pub fn candle_validator(index: u64) -> impl Fn(&WebSocketMessage) -> bool + Send + Sync {
17    move |message| {
18        if let WebSocketMessage::LoadHistoryPeriod(history) = message {
19            if history
20                .index
21                .div_euclid(100)
22                .abs_diff(index.div_euclid(100))
23                <= 1
24            {
25                return true;
26            }
27        }
28        false
29    }
30}
31
32pub fn order_result_validator(order_id: Uuid) -> impl Fn(&WebSocketMessage) -> bool + Send + Sync {
33    move |message| {
34        if let WebSocketMessage::SuccesscloseOrder(orders) = message {
35            if orders.deals.iter().any(|o| o == &order_id) {
36                return true;
37            }
38        }
39        false
40    }
41}
42
43pub fn history_validator(
44    asset: String,
45    period: i64,
46) -> impl Fn(&WebSocketMessage) -> bool + Send + Sync {
47    move |message| {
48        if let WebSocketMessage::UpdateHistoryNew(history) = message {
49            if history.asset == asset && history.period == period {
50                return true;
51            }
52        }
53        false
54    }
55}