1use std::fmt;
2
3use serde::{Deserialize, Serialize};
4
5pub enum ConnectionType {
6 Live,
7 Demo,
8}
9
10#[derive(Debug)]
11pub enum Command {
12 login,
13 getMarginLevel,
14}
15
16impl fmt::Display for Command {
17 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
18 write!(f, "{:?}", self)
19 }
20}
21
22#[derive(Serialize, Deserialize, Debug)]
23pub struct LoginRequest {
24 pub command: String,
25 pub arguments: LoginRequestArguments,
26}
27
28#[derive(Serialize, Deserialize, Debug)]
29pub struct LoginRequestArguments {
30 #[serde(rename = "userId")]
31 pub user_id: u64,
32 pub password: String,
33}
34
35#[derive(Serialize, Deserialize, Debug)]
36pub struct LoginResponse {
37 pub status: bool,
38 #[serde(rename = "streamSessionId")]
39 pub stream_session_id: String,
40}
41
42#[derive(Serialize, Deserialize, Debug)]
43pub struct Request {
44 pub command: String,
45}
46
47#[derive(Serialize, Deserialize, Debug)]
48pub struct Response<T> {
49 pub status: bool,
50 #[serde(rename = "returnData")]
51 pub return_data: T,
52}
53
54#[derive(Serialize, Deserialize, Debug)]
55pub struct Balance {
56 pub balance: f64,
57 pub credit: f64,
58 pub currency: String,
59 pub equity: f64,
60 pub margin: f64,
61 pub margin_free: f64,
62 pub margin_level: f64,
63}