market-rs 0.1.2

A library which provides a simple interface for interacting with a market
Documentation
use super::{default_exch, default_inst, default_interval, default_sec_id, default_seg};
use serde::Serialize;

#[derive(Debug, Default, Serialize)]
pub struct DhanPayload {
    #[serde(rename = "EXCH")]
    exch: String,
    #[serde(rename = "SEG")]
    seg: char,
    #[serde(rename = "INST")]
    inst: String,
    #[serde(rename = "SEC_ID")]
    sec_id: u32,
    #[serde(rename = "START")]
    start: u32,
    #[serde(rename = "END")]
    end: u32,
    #[serde(rename = "INTERVAL")]
    interval: String,
}

#[derive(Debug, Default, Serialize)]
pub struct DhanPayloadBuilder {
    payload: DhanPayload,
}

impl DhanPayloadBuilder {
    pub fn new(start: u32, end: u32) -> Self {
        Self {
            payload: DhanPayload {
                exch: default_exch(),
                seg: default_seg(),
                inst: default_inst(),
                sec_id: default_sec_id(),
                interval: default_interval(),
                start,
                end,
            },
        }
    }

    pub fn exch(mut self, exch: &str) -> Self {
        self.payload.exch = exch.to_string();
        self
    }

    pub fn seg(mut self, seg: char) -> Self {
        self.payload.seg = seg;
        self
    }

    pub fn inst(mut self, inst: &str) -> Self {
        self.payload.inst = inst.to_string();
        self
    }

    pub fn interval(mut self, interval: &str) -> Self {
        self.payload.interval = interval.to_string();
        self
    }

    pub fn build(self) -> DhanPayload {
        self.payload
    }
}