cal-jambonz 0.1.75

Jambonz Verbs
Documentation
use crate::verbs::verb::Verb;
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Play {
   
    pub url: String,
   
    #[serde(rename = "loop")]
    #[serde(skip_serializing_if = "Option::is_none")]
    pub play_loop: Option<u8>,
   
    #[serde(skip_serializing_if = "Option::is_none")]
    pub early_media: Option<bool>,
   
    #[serde(skip_serializing_if = "Option::is_none")]
    pub timeout_secs: Option<u8>,
   
    #[serde(skip_serializing_if = "Option::is_none")]
    pub seek_offset: Option<u16>,
   
    #[serde(skip_serializing_if = "Option::is_none")]
    pub action_hook: Option<String>,
}

impl Into<Verb> for Play {
    fn into(self) -> Verb {
        Verb::Play(self)
    }
}

impl Into<Vec<Verb>> for Play {
    fn into(self) -> Vec<Verb> {
        vec![self.into()]
    }
}

impl Play {
    pub fn new(url: String) -> Self {
        Play {
            url,
            action_hook: None,
            play_loop: None,
            early_media: None,
            timeout_secs: None,
            seek_offset: None,
        }
    }

    pub fn action_hook(&mut self, action_hook: Option<String>) -> &mut Play {
        self.action_hook = action_hook;
        self
    }

    pub fn play_loop(&mut self, play_loop: Option<u8>) -> &mut Play {
        self.play_loop = play_loop;
        self
    }

    pub fn early_media(&mut self, early_media: Option<bool>) -> &mut Play {
        self.early_media = early_media;
        self
    }

    pub fn timeout_secs(&mut self, timeout_secs: Option<u8>) -> &mut Play {
        self.timeout_secs = timeout_secs;
        self
    }

    pub fn seek_offset(&mut self, seek_offset: Option<u16>) -> &mut Play {
        self.seek_offset = seek_offset;
        self
    }
    
    
}