use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct Claims {
#[serde(rename = "datastreams/v0/mqtt/token")]
mqtt_token_claim: DatastreamsMqttTokenClaim,
}
impl Default for Claims {
fn default() -> Self {
Self {
mqtt_token_claim: DatastreamsMqttTokenClaim::default(),
}
}
}
impl Claims {
pub fn set_mqtt_token_claim(mut self, claim: DatastreamsMqttTokenClaim) -> Self {
self.mqtt_token_claim = claim;
self
}
pub fn mqtt_token_claim(&self) -> &DatastreamsMqttTokenClaim {
&self.mqtt_token_claim
}
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq)]
pub struct DatastreamsMqttTokenClaim {
#[serde(skip_serializing_if = "Option::is_none")]
id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
tenant: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
relexp: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
exp: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
claims: Option<Vec<()>>, }
impl DatastreamsMqttTokenClaim {
pub fn new() -> Self {
Self::default()
}
pub fn set_id(mut self, id: impl Into<String>) -> Self {
self.id = Some(id.into());
self
}
pub fn id(&self) -> Option<&str> {
self.id.as_deref()
}
pub fn set_tenant(mut self, tenant: impl Into<String>) -> Self {
self.tenant = Some(tenant.into());
self
}
pub fn tenant(&self) -> Option<&str> {
self.tenant.as_deref()
}
pub fn set_relexp(mut self, relexp: i32) -> Self {
self.relexp = Some(relexp);
self
}
pub fn relexp(&self) -> Option<i32> {
self.relexp
}
pub fn set_exp(mut self, exp: i32) -> Self {
self.exp = Some(exp);
self
}
pub fn exp(&self) -> Option<i32> {
self.exp
}
}
impl Default for DatastreamsMqttTokenClaim {
fn default() -> Self {
Self {
id: None,
tenant: None,
relexp: None,
exp: None,
claims: None,
}
}
}
impl From<DatastreamsMqttTokenClaim> for Claims {
fn from(claim: DatastreamsMqttTokenClaim) -> Self {
Self {
mqtt_token_claim: claim,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_datastreams_mqtt_token_claim() {
let claim = DatastreamsMqttTokenClaim::new();
assert_eq!(claim.id(), None);
assert_eq!(claim.tenant(), None);
assert_eq!(claim.relexp(), None);
assert_eq!(claim.exp(), None);
let claim = claim
.set_id("test-id")
.set_tenant("test-tenant")
.set_relexp(100)
.set_exp(200);
assert_eq!(claim.id(), Some("test-id"));
assert_eq!(claim.tenant(), Some("test-tenant"));
assert_eq!(claim.relexp(), Some(100));
assert_eq!(claim.exp(), Some(200));
}
#[test]
fn test_from_mqtt_claims() {
let claim = DatastreamsMqttTokenClaim::new();
let claims: Claims = claim.clone().into();
assert_eq!(claims.mqtt_token_claim(), &claim);
let claim = claim
.set_id("test-id")
.set_tenant("test-tenant")
.set_relexp(100)
.set_exp(200);
let claims: Claims = claim.clone().into();
assert_eq!(claims.mqtt_token_claim(), &claim);
}
#[test]
fn test_claims() {
let claim = DatastreamsMqttTokenClaim::new();
let claims = Claims::default();
assert_eq!(claims.mqtt_token_claim(), &claim);
}
}