nautilus_kraken/
config.rs1use crate::common::{
19 enums::{KrakenEnvironment, KrakenProductType},
20 urls::{get_kraken_http_base_url, get_kraken_ws_private_url, get_kraken_ws_public_url},
21};
22
23#[derive(Debug, Clone)]
25pub struct KrakenDataClientConfig {
26 pub api_key: Option<String>,
27 pub api_secret: Option<String>,
28 pub product_type: KrakenProductType,
29 pub environment: KrakenEnvironment,
30 pub base_url: Option<String>,
31 pub ws_public_url: Option<String>,
32 pub ws_private_url: Option<String>,
33 pub http_proxy: Option<String>,
34 pub ws_proxy: Option<String>,
35 pub timeout_secs: Option<u64>,
36 pub heartbeat_interval_secs: Option<u64>,
37 pub max_requests_per_second: Option<u32>,
38}
39
40impl Default for KrakenDataClientConfig {
41 fn default() -> Self {
42 Self {
43 api_key: None,
44 api_secret: None,
45 product_type: KrakenProductType::Spot,
46 environment: KrakenEnvironment::Mainnet,
47 base_url: None,
48 ws_public_url: None,
49 ws_private_url: None,
50 http_proxy: None,
51 ws_proxy: None,
52 timeout_secs: Some(30),
53 heartbeat_interval_secs: Some(30),
54 max_requests_per_second: None,
55 }
56 }
57}
58
59impl KrakenDataClientConfig {
60 pub fn has_api_credentials(&self) -> bool {
62 self.api_key.is_some() && self.api_secret.is_some()
63 }
64
65 pub fn http_base_url(&self) -> String {
67 self.base_url.clone().unwrap_or_else(|| {
68 get_kraken_http_base_url(self.product_type, self.environment).to_string()
69 })
70 }
71
72 pub fn ws_public_url(&self) -> String {
74 self.ws_public_url.clone().unwrap_or_else(|| {
75 get_kraken_ws_public_url(self.product_type, self.environment).to_string()
76 })
77 }
78
79 pub fn ws_private_url(&self) -> String {
81 self.ws_private_url.clone().unwrap_or_else(|| {
82 get_kraken_ws_private_url(self.product_type, self.environment).to_string()
83 })
84 }
85}
86
87#[derive(Debug, Clone)]
89pub struct KrakenExecClientConfig {
90 pub api_key: String,
91 pub api_secret: String,
92 pub product_type: KrakenProductType,
93 pub environment: KrakenEnvironment,
94 pub base_url: Option<String>,
95 pub ws_url: Option<String>,
96 pub http_proxy: Option<String>,
97 pub ws_proxy: Option<String>,
98 pub timeout_secs: Option<u64>,
99 pub heartbeat_interval_secs: Option<u64>,
100 pub max_requests_per_second: Option<u32>,
101}
102
103impl KrakenExecClientConfig {
104 pub fn http_base_url(&self) -> String {
106 self.base_url.clone().unwrap_or_else(|| {
107 get_kraken_http_base_url(self.product_type, self.environment).to_string()
108 })
109 }
110
111 pub fn ws_url(&self) -> String {
113 self.ws_url.clone().unwrap_or_else(|| {
114 get_kraken_ws_private_url(self.product_type, self.environment).to_string()
115 })
116 }
117}