cal-core 0.2.158

Callable core lib
Documentation
use crate::device::device::Connector;
use crate::{ConnectState, FlowState};
use serde::{Deserialize, Serialize};
use std::fmt::{Debug, Formatter};

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Queue {
    #[serde(default = "crate::device::shared::build_connect_to")]
    pub connect_to: String,
    // #[serde(default)]
    // hangup: bool,
    // #[serde(rename = "loop")]
    // loop_count: u8,
    // queue_name: String,
    // ring_endpoints: bool,
    // tts_language: String,
    // items: Vec<QueueItem>,
}

impl Connector for Queue {
    fn get_connect_to(&mut self, _state: &mut FlowState) -> ConnectState {
        ConnectState::default(&self.connect_to, None)
    }
}

#[derive(Serialize, Deserialize, Clone)]
#[serde(rename_all = "camelCase")]
pub struct QueueItem {
    pub text: String,
    #[serde(rename = "type")]
    pub item_type: QueueItemType,
}

impl Debug for QueueItem {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("QueueItem")
            .field("text", &self.text)
            .field("item_type", &self.item_type)
            .finish()
    }
}

impl Debug for Queue {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        f.debug_struct("Queue")
            .field("connect_to", &self.connect_to)
            .finish()
    }
}


#[derive(Serialize, Deserialize, Clone)]
pub enum QueueItemType {
    #[serde(rename = "play")]
    Play,
    #[serde(rename = "say")]
    Say,
    #[serde(rename = "pause")]
    Pause,
}

impl Debug for QueueItemType {
    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
        match self {
            QueueItemType::Play => write!(f, "QueueItemType::Play"),
            QueueItemType::Say => write!(f, "QueueItemType::Say"),
            QueueItemType::Pause => write!(f, "QueueItemType::Pause"),
        }
    }
}