matroskin 0.1.0

whatsminer api client lib
Documentation
//! Declare request module
//!
//! - Item: [Request]
//! - (about [CommandLevel::Secured], [CommandLevel::Encrypted], [AuthData::new], [AuthData::encrypt]) ApiDoc: <https://apidoc.whatsminer.com/#api-Token-generate_token>
use std::fmt::Debug;

#[cfg(doc)]
use crate::command::CommandLevel;

use serde::Serialize;

use crate::auth_data::AuthData;

/// Represents a request for building public endpoints
#[derive(Debug, Serialize)]
pub struct Request<P = String> {
    /// Command name
    pub cmd: &'static str,
    /// Authentication data (optional)
    #[serde(flatten)]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub auth_data: Option<AuthData>,
    /// Command parameters (optional)
    #[serde(rename = "param")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub parameter: Option<P>,
}

impl<P: Serialize> Request<P> {
    /// Creates a new [Request] instance.
    pub fn new(cmd: &'static str, auth_data: Option<AuthData>, parameter: Option<P>) -> Self {
        Self {
            cmd,
            auth_data,
            parameter,
        }
    }
}