exc_binance/types/
request.rs

1use crate::{
2    http::request::{Payload, Rest, RestRequest},
3    websocket::request::WsRequest,
4};
5
6use super::Name;
7
8/// Binance request.
9pub enum Request {
10    /// Http request.
11    Http(RestRequest<Payload>),
12    /// Websocket request.
13    Ws(WsRequest),
14}
15
16impl Request {
17    /// Create a request from rest payload.
18    pub fn with_rest_payload<T>(payload: T) -> Self
19    where
20        T: Rest,
21    {
22        Self::Http(RestRequest::with_payload(payload))
23    }
24
25    /// Create a request to subscribe to a ws stream.
26    pub fn subscribe(stream: Name) -> Self {
27        Self::Ws(WsRequest::subscribe_stream(stream))
28    }
29
30    /// Main stream subcribe.
31    pub fn subcribe_main(stream: Name) -> Self {
32        Self::Ws(WsRequest::main_stream(stream))
33    }
34}
35
36impl From<WsRequest> for Request {
37    fn from(req: WsRequest) -> Self {
38        Self::Ws(req)
39    }
40}