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,
},
}
}
}