diff options
| author | Austin Hellyer <[email protected]> | 2016-11-21 18:49:36 -0800 |
|---|---|---|
| committer | Austin Hellyer <[email protected]> | 2016-11-21 18:51:35 -0800 |
| commit | dd86e989beb1d4fccbc661de3df79569b6a43fa1 (patch) | |
| tree | 91f1739190de2348a99e7329190afea0aa1db5f1 /src/utils/builder | |
| parent | Don't block entirely on HTTP requests (diff) | |
| download | serenity-dd86e989beb1d4fccbc661de3df79569b6a43fa1.tar.xz serenity-dd86e989beb1d4fccbc661de3df79569b6a43fa1.zip | |
Add support for creating embed images
Diffstat (limited to 'src/utils/builder')
| -rw-r--r-- | src/utils/builder/create_embed.rs | 48 | ||||
| -rw-r--r-- | src/utils/builder/mod.rs | 1 |
2 files changed, 49 insertions, 0 deletions
diff --git a/src/utils/builder/create_embed.rs b/src/utils/builder/create_embed.rs index fe15ed4..57942bd 100644 --- a/src/utils/builder/create_embed.rs +++ b/src/utils/builder/create_embed.rs @@ -122,6 +122,21 @@ impl CreateEmbed { CreateEmbed(self.0) } + /// Set the image associated with the embed. + /// + /// Refer to the documentation for [`CreateEmbedImage`] for more + /// information. + /// + /// [`CreateEmbedImage`]: struct.CreateEmbedImage.html + pub fn image<F>(mut self, f: F) -> Self + where F: FnOnce(CreateEmbedImage) -> CreateEmbedImage { + let image = f(CreateEmbedImage::default()).0.build(); + + self.0.insert("thumbnail".to_owned(), image); + + CreateEmbed(self.0) + } + /// Set the thumbnail of the embed. /// /// Refer to the documentation for [`CreateEmbedThumbnail`] for more @@ -266,6 +281,39 @@ impl Default for CreateEmbedFooter { } } +/// A builder to create a fake [`Embed`] object's image, for use with the +/// [`CreateEmbed::image`] method. +/// +/// This does not require any field be set. +/// +/// [`Embed`]: ../../model/struct.Embed.html +/// [`CreateEmbed::image`]: struct.CreateEmbed.html#method.image +pub struct CreateEmbedImage(pub ObjectBuilder); + +impl CreateEmbedImage { + /// Set the display height of the image. + pub fn height(self, height: u64) -> Self { + CreateEmbedImage(self.0.insert("height", height)) + } + + /// Set the image's URL. This only supports HTTP(S). + pub fn url(self, url: &str) -> Self { + CreateEmbedImage(self.0.insert("url", url)) + } + + /// Set the display width of the image. + pub fn width(self, width: u64) -> Self { + CreateEmbedImage(self.0.insert("widht", width)) + } +} + +impl Default for CreateEmbedImage { + /// Creates a builder with no default values. + fn default() -> CreateEmbedImage { + CreateEmbedImage(ObjectBuilder::new()) + } +} + /// A builder to create a fake [`Embed`] object's thumbnail, for use with the /// [`CreateEmbed::thumbnail`] method. /// diff --git a/src/utils/builder/mod.rs b/src/utils/builder/mod.rs index d4da891..76a9c8a 100644 --- a/src/utils/builder/mod.rs +++ b/src/utils/builder/mod.rs @@ -20,6 +20,7 @@ pub use self::create_embed::{ CreateEmbed, CreateEmbedAuthor, CreateEmbedField, + CreateEmbedImage, CreateEmbedThumbnail, CreateEmbedVideo, }; |