xapi_binance/common/
endpoint.rs1use url::Url;
2
3pub struct BnEndpoint {
4 rest_base_url: Url,
5 ws_api_base_url: Url,
6 ws_stream_base_url: Url,
7}
8
9impl BnEndpoint {
10 pub fn new_spot() -> Self {
11 Self {
12 rest_base_url: Url::parse("https://api.binance.com").unwrap(),
13 ws_api_base_url: Url::parse("wss://ws-api.binance.com:443/ws-api/v3").unwrap(),
14 ws_stream_base_url: Url::parse("wss://stream.binance.com:9443/stream").unwrap(),
15 }
16 }
17
18 pub fn new_spot_testnet() -> Self {
19 Self {
20 rest_base_url: Url::parse("https://testnet.binance.vision/api").unwrap(),
21 ws_api_base_url: Url::parse("wss://ws-api.testnet.binance.vision/ws-api/v3").unwrap(),
22 ws_stream_base_url: Url::parse("wss://stream.testnet.binance.vision:443/stream")
23 .unwrap(),
24 }
25 }
26
27 pub fn new_usdm() -> Self {
28 Self {
29 rest_base_url: Url::parse("https://fapi.binance.com/").unwrap(),
30 ws_api_base_url: Url::parse("wss://ws-fapi.binance.com/ws-fapi/v1").unwrap(),
31 ws_stream_base_url: Url::parse("wss://fstream.binance.com/stream").unwrap(),
32 }
33 }
34
35 pub fn new_usdm_testnet() -> Self {
36 Self {
37 rest_base_url: Url::parse("https://testnet.binancefuture.com").unwrap(),
38 ws_api_base_url: Url::parse("wss://testnet.binancefuture.com/ws-fapi/v1").unwrap(),
39 ws_stream_base_url: Url::parse("wss://stream.binancefuture.com/stream").unwrap(),
40 }
41 }
42
43 pub fn build_rest_api_url(&self, path: &str) -> Url {
44 self.rest_base_url
45 .join(path)
46 .inspect_err(|err| tracing::error!("fail to build url: {err}"))
47 .unwrap()
48 }
49
50 pub fn get_ws_api_base_url(&self) -> &Url {
51 &self.ws_api_base_url
52 }
53
54 pub fn get_ws_stream_base_url(&self) -> &Url {
55 &self.ws_stream_base_url
56 }
57}