parco-discord 0.1.0

Parco Discord
Documentation
use crate::message::{Embed, JSONMessage, Message};

pub struct MessageBuilder {
    pub(crate) client: reqwest::Client,
}

impl MessageBuilder {
    pub fn url<'a>(self, url: &'a str) -> MessageBuilderWithURL<'a> {
        MessageBuilderWithURL {
            client: self.client,
            url,
        }
    }
}

pub struct MessageBuilderWithURL<'a> {
    client: reqwest::Client,
    url: &'a str,
}

impl<'a> MessageBuilderWithURL<'a> {
    pub fn embed(self, embed: Embed) -> MessageBuilderWithEmbed<'a> {
        MessageBuilderWithEmbed {
            client: self.client,
            url: self.url,
            embeds: vec![embed],
        }
    }
}

pub struct MessageBuilderWithEmbed<'a> {
    client: reqwest::Client,
    url: &'a str,
    embeds: Vec<Embed>,
}

impl<'a> MessageBuilderWithEmbed<'a> {
    pub fn embed(mut self, embed: Embed) -> Self {
        self.embeds.push(embed);
        self
    }

    pub fn build(self) -> Message<'a> {
        Message {
            client: self.client,
            url: self.url,
            json: JSONMessage {
                embeds: self.embeds,
            },
        }
    }
}