xtb_api/
models.rs

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}