russenger 0.3.1

A Rust library designed to simplify the handling of Facebook Messenger webhook responses.
Documentation
use serde::{Deserialize, Serialize};

#[derive(Debug, Default, Deserialize, Serialize)]
pub struct Sender {
    pub id: String,
}

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct QuickReplyPayload {
    pub payload: String,
}

impl QuickReplyPayload {
    pub fn get_payload(&self) -> &String {
        &self.payload
    }
}

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Message {
    pub text: Option<String>,
    pub quick_reply: Option<QuickReplyPayload>,
}

impl Message {
    pub fn get_text(&self) -> String {
        self.text.clone().unwrap_or_default()
    }

    pub fn get_quick_reply(&self) -> Option<QuickReplyPayload> {
        self.quick_reply.clone()
    }
}

#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Postback {
    pub payload: String,
}

impl Postback {
    pub fn get_payload(&self) -> &String {
        &self.payload
    }
}

#[derive(Debug, Default, Deserialize, Serialize)]
pub struct Messaging {
    pub sender: Sender,
    pub postback: Option<Postback>,
    pub message: Option<Message>,
}

#[derive(Debug, Deserialize, Serialize)]
pub struct Entry {
    pub messaging: Vec<Messaging>,
}

#[derive(Debug, Deserialize, Serialize)]
pub struct InComingData {
    pub entry: Vec<Entry>,
}

impl InComingData {
    pub fn get_sender(&self) -> &String {
        &self.entry[0].messaging[0].sender.id
    }

    pub fn get_message(&self) -> Option<Message> {
        self.entry[0].messaging[0].message.clone()
    }

    pub fn get_postback(&self) -> Option<Postback> {
        self.entry[0].messaging[0].postback.clone()
    }
}