1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use crate::graphql::place_limit_order;
use crate::graphql::place_market_order;
use serde::{Deserialize, Deserializer};
use crate::protocol::multi_request::{ResponseData, ResponseVisitor};

pub type LimitResponseData = ResponseData<place_limit_order::ResponseData>;
pub type MarketResponseData = ResponseData<place_market_order::ResponseData>;

impl<'de> Deserialize<'de> for LimitResponseData {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
    where D: Deserializer<'de> {
        deserializer.deserialize_map(
            ResponseVisitor::<Self, place_limit_order::ResponseData>::new("placeLimitOrder".to_string())
        )
    }
}

impl<'de> Deserialize<'de> for MarketResponseData {
    fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
        where D: Deserializer<'de> {
        deserializer.deserialize_map(
            ResponseVisitor::<Self, place_market_order::ResponseData>::new("placeMarketOrder".to_string())
        )
    }
}