binary_option_tools_core/pocketoption/
validators.rs1use 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}