kraken_api_client/spot/ws/messages/
admin.rs1use serde::{Deserialize, Serialize};
4
5#[derive(Debug, Clone, Serialize)]
7pub struct PingRequest {
8 #[serde(skip_serializing_if = "Option::is_none")]
10 pub req_id: Option<u64>,
11}
12
13impl PingRequest {
14 pub fn new() -> Self {
16 Self { req_id: None }
17 }
18
19 pub fn with_req_id(req_id: u64) -> Self {
21 Self {
22 req_id: Some(req_id),
23 }
24 }
25}
26
27impl Default for PingRequest {
28 fn default() -> Self {
29 Self::new()
30 }
31}
32
33#[derive(Debug, Clone, Deserialize)]
35pub struct PongResponse {
36 #[serde(default)]
38 pub req_id: Option<u64>,
39 #[serde(default)]
41 pub time_in: Option<String>,
42 #[serde(default)]
44 pub time_out: Option<String>,
45}
46
47#[derive(Debug, Clone, Deserialize)]
49pub struct Heartbeat {
50 pub channel: String,
52}
53
54#[derive(Debug, Clone, Deserialize)]
56pub struct SystemStatusMessage {
57 pub channel: String,
59 pub data: Vec<SystemStatusData>,
61}
62
63#[derive(Debug, Clone, Deserialize)]
65pub struct SystemStatusData {
66 #[serde(default)]
68 pub api_version: Option<String>,
69 #[serde(default)]
71 pub connection_id: Option<u64>,
72 pub system: String,
74 #[serde(default)]
76 pub version: Option<String>,
77}
78
79impl SystemStatusData {
80 pub fn is_online(&self) -> bool {
82 self.system == "online"
83 }
84
85 pub fn is_maintenance(&self) -> bool {
87 self.system == "maintenance"
88 }
89}