signalk 0.7.0

A library to parse signalk maritime data
Documentation
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, PartialEq, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct V1Unsubscribe {
    pub context: String,
    #[serde(rename = "websocket.connectionkey")]
    pub websocket_connectionkey: Option<String>,
    #[serde(rename = "reply-to")]
    pub reply_to: Option<String>,
    pub unsubscribe: Vec<V1Unsubscription>,
}

impl V1Unsubscribe {
    pub fn builder() -> V1UnsubscribeBuilder {
        V1UnsubscribeBuilder::default()
    }
}

#[derive(Default)]
pub struct V1UnsubscribeBuilder {
    context: String,
    websocket_connectionkey: Option<String>,
    reply_to: Option<String>,
    unsubscribe: Vec<V1Unsubscription>,
}

impl V1UnsubscribeBuilder {
    pub fn context(mut self, value: String) -> V1UnsubscribeBuilder {
        self.context = value;
        self
    }
    pub fn websocket_connectionkey(mut self, value: String) -> V1UnsubscribeBuilder {
        self.websocket_connectionkey = Some(value);
        self
    }
    pub fn reply_to(mut self, value: String) -> V1UnsubscribeBuilder {
        self.reply_to = Some(value);
        self
    }
    pub fn unsubscribe(mut self, value: V1Unsubscription) -> V1UnsubscribeBuilder {
        self.unsubscribe.push(value);
        self
    }

    pub fn build(self) -> V1Unsubscribe {
        V1Unsubscribe {
            context: self.context,
            websocket_connectionkey: self.websocket_connectionkey,
            reply_to: self.reply_to,
            unsubscribe: self.unsubscribe,
        }
    }
}

#[derive(Serialize, Deserialize, PartialEq, Debug, Default)]
#[serde(rename_all = "camelCase")]
pub struct V1Unsubscription {
    pub path: Option<String>,
    pub period: Option<i64>,
    pub format: Option<String>,
    pub policy: Option<String>,
    pub min_period: Option<i64>,
}

impl V1Unsubscription {
    pub fn builder() -> V1UnsubscriptionBuilder {
        V1UnsubscriptionBuilder::default()
    }
}

#[derive(Default)]
pub struct V1UnsubscriptionBuilder {
    path: Option<String>,
    period: Option<i64>,
    format: Option<String>,
    policy: Option<String>,
    min_period: Option<i64>,
}

impl V1UnsubscriptionBuilder {
    pub fn path(mut self, value: String) -> V1UnsubscriptionBuilder {
        self.path = Some(value);
        self
    }
    pub fn period(mut self, value: i64) -> V1UnsubscriptionBuilder {
        self.period = Some(value);
        self
    }
    pub fn format(mut self, value: String) -> V1UnsubscriptionBuilder {
        self.format = Some(value);
        self
    }
    pub fn policy(mut self, value: String) -> V1UnsubscriptionBuilder {
        self.policy = Some(value);
        self
    }
    pub fn min_period(mut self, value: i64) -> V1UnsubscriptionBuilder {
        self.min_period = Some(value);
        self
    }
    pub fn build(self) -> V1Unsubscription {
        V1Unsubscription {
            path: self.path,
            period: self.period,
            format: self.format,
            policy: self.policy,
            min_period: self.min_period,
        }
    }
}