Browse Source

Adds a timestamp and fixes Volts issues with Thumbnail and Image URLs.

tags/1.0-rc
Sindre G. Langhus 8 years ago
parent
commit
a455ccc334
4 changed files with 26 additions and 71 deletions
  1. +3
    -0
      src/Discord.Net.Core/API/Common/Embed.cs
  2. +14
    -68
      src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs
  3. +3
    -1
      src/Discord.Net.Core/Entities/Messages/IEmbed.cs
  4. +6
    -2
      src/Discord.Net.Rest/Entities/Messages/Embed.cs

+ 3
- 0
src/Discord.Net.Core/API/Common/Embed.cs View File

@@ -1,4 +1,5 @@
#pragma warning disable CS1591 #pragma warning disable CS1591
using System;
using Newtonsoft.Json; using Newtonsoft.Json;


namespace Discord.API namespace Discord.API
@@ -15,6 +16,8 @@ namespace Discord.API
public string Url { get; set; } public string Url { get; set; }
[JsonProperty("color")] [JsonProperty("color")]
public uint? Color { get; set; } public uint? Color { get; set; }
[JsonProperty("timestamp")]
public Optional<DateTimeOffset> Timestamp { get; set; }
[JsonProperty("author")] [JsonProperty("author")]
public Optional<EmbedAuthor> Author { get; set; } public Optional<EmbedAuthor> Author { get; set; }
[JsonProperty("footer")] [JsonProperty("footer")]


+ 14
- 68
src/Discord.Net.Core/Entities/Messages/EmbedBuilder.cs View File

@@ -23,11 +23,11 @@ namespace Discord
public string Title { get { return _model.Title; } set { _model.Title = value; } } public string Title { get { return _model.Title; } set { _model.Title = value; } }
public string Description { get { return _model.Description; } set { _model.Description = value; } } public string Description { get { return _model.Description; } set { _model.Description = value; } }
public string Url { get { return _model.Url; } set { _model.Url = value; } } public string Url { get { return _model.Url; } set { _model.Url = value; } }
public string ThumbnailUrl { get; set; }
public string ImageUrl { get; set; }
public Color? Color { get { return _model.Color.HasValue ? new Color(_model.Color.Value) : (Color?)null; } set { _model.Color = value?.RawValue; } } public Color? Color { get { return _model.Color.HasValue ? new Color(_model.Color.Value) : (Color?)null; } set { _model.Color = value?.RawValue; } }
public EmbedAuthorBuilder Author { get; set; } public EmbedAuthorBuilder Author { get; set; }
public EmbedFooterBuilder Footer { get; set; } public EmbedFooterBuilder Footer { get; set; }
public EmbedThumbnailBuilder Thumbnail { get; set; }
public EmbedImageBuilder Image { get; set; }


public EmbedBuilder WithTitle(string title) public EmbedBuilder WithTitle(string title)
{ {
@@ -44,6 +44,16 @@ namespace Discord
Url = url; Url = url;
return this; return this;
} }
public EmbedBuilder WithThumbnailUrl(string thumbnailUrl)
{
ThumbnailUrl = thumbnailUrl;
return this;
}
public EmbedBuilder WithImageUrl(string imageUrl)
{
ImageUrl = ImageUrl;
return this;
}
public EmbedBuilder WithColor(Color color) public EmbedBuilder WithColor(Color color)
{ {
Color = color; Color = color;
@@ -74,30 +84,6 @@ namespace Discord
Footer = footer; Footer = footer;
return this; return this;
} }
public EmbedBuilder WithThumbnail(EmbedThumbnailBuilder thumbnail)
{
Thumbnail = thumbnail;
return this;
}
public EmbedBuilder WithThumbnail(Action<EmbedThumbnailBuilder> action)
{
var thumbnail = new EmbedThumbnailBuilder();
action(thumbnail);
Thumbnail = thumbnail;
return this;
}
public EmbedBuilder WithImage(EmbedImageBuilder image)
{
Image = image;
return this;
}
public EmbedBuilder WithImage(Action<EmbedImageBuilder> action)
{
var image = new EmbedImageBuilder();
action(image);
Image = image;
return this;
}


public EmbedBuilder AddField(Action<EmbedFieldBuilder> action) public EmbedBuilder AddField(Action<EmbedFieldBuilder> action)
{ {
@@ -111,8 +97,8 @@ namespace Discord
{ {
_model.Author = Author?.ToModel(); _model.Author = Author?.ToModel();
_model.Footer = Footer?.ToModel(); _model.Footer = Footer?.ToModel();
_model.Thumbnail = Thumbnail?.ToModel();
_model.Image = Image?.ToModel();
_model.Thumbnail = ThumbnailUrl != null ? new Thumbnail { Url = ThumbnailUrl } : null;
_model.Image = ImageUrl != null ? new Image { Url = ImageUrl } : null;
_model.Fields = _fields.ToArray(); _model.Fields = _fields.ToArray();
return _model; return _model;
} }
@@ -207,44 +193,4 @@ namespace Discord


internal Footer ToModel() => _model; internal Footer ToModel() => _model;
} }

public class EmbedThumbnailBuilder
{
private Thumbnail _model;

public string Url { get { return _model.Url; } set { _model.Url = value; } }

public EmbedThumbnailBuilder()
{
_model = new Thumbnail();
}

public EmbedThumbnailBuilder WithUrl(string url)
{
Url = url;
return this;
}

internal Thumbnail ToModel() => _model;
}

public class EmbedImageBuilder
{
private Image _model;

public string Url { get { return _model.Url; } set { _model.Url = value; } }

public EmbedImageBuilder()
{
_model = new Image();
}

public EmbedImageBuilder WithUrl(string url)
{
Url = url;
return this;
}

internal Image ToModel() => _model;
}
} }

+ 3
- 1
src/Discord.Net.Core/Entities/Messages/IEmbed.cs View File

@@ -1,4 +1,5 @@
using System.Collections.Immutable;
using System;
using System.Collections.Immutable;


namespace Discord namespace Discord
{ {
@@ -9,6 +10,7 @@ namespace Discord
string Title { get; } string Title { get; }
string Description { get; } string Description { get; }
Color? Color { get; } Color? Color { get; }
DateTimeOffset? Timestamp { get; }
EmbedImage? Image { get; } EmbedImage? Image { get; }
EmbedVideo? Video { get; } EmbedVideo? Video { get; }
EmbedAuthor? Author { get; } EmbedAuthor? Author { get; }


+ 6
- 2
src/Discord.Net.Rest/Entities/Messages/Embed.cs View File

@@ -14,6 +14,7 @@ namespace Discord
public string Title { get; } public string Title { get; }
public string Type { get; } public string Type { get; }
public Color? Color { get; } public Color? Color { get; }
public DateTimeOffset? Timestamp { get; }
public EmbedImage? Image { get; } public EmbedImage? Image { get; }
public EmbedVideo? Video { get; } public EmbedVideo? Video { get; }
public EmbedAuthor? Author { get; } public EmbedAuthor? Author { get; }
@@ -26,7 +27,8 @@ namespace Discord
string title, string title,
string description, string description,
string url, string url,
Color? color,
Color? color,
DateTimeOffset? timestamp,
EmbedImage? image, EmbedImage? image,
EmbedVideo? video, EmbedVideo? video,
EmbedAuthor? author, EmbedAuthor? author,
@@ -40,6 +42,7 @@ namespace Discord
Description = description; Description = description;
Url = url; Url = url;
Color = color; Color = color;
Timestamp = timestamp;
Image = image; Image = image;
Video = video; Video = video;
Author = author; Author = author;
@@ -52,13 +55,14 @@ namespace Discord
{ {
return new Embed(model.Type, model.Title, model.Description, model.Url, return new Embed(model.Type, model.Title, model.Description, model.Url,
model.Color.HasValue ? new Color(model.Color.Value) : (Color?)null, model.Color.HasValue ? new Color(model.Color.Value) : (Color?)null,
model.Timestamp.IsSpecified ? model.Timestamp.Value : (DateTimeOffset?)null,
model.Image.IsSpecified ? EmbedImage.Create(model.Image.Value) : (EmbedImage?)null, model.Image.IsSpecified ? EmbedImage.Create(model.Image.Value) : (EmbedImage?)null,
model.Video.IsSpecified ? EmbedVideo.Create(model.Video.Value) : (EmbedVideo?)null, model.Video.IsSpecified ? EmbedVideo.Create(model.Video.Value) : (EmbedVideo?)null,
model.Author.IsSpecified ? EmbedAuthor.Create(model.Author.Value) : (EmbedAuthor?)null, model.Author.IsSpecified ? EmbedAuthor.Create(model.Author.Value) : (EmbedAuthor?)null,
model.Footer.IsSpecified ? EmbedFooter.Create(model.Footer.Value) : (EmbedFooter?)null, model.Footer.IsSpecified ? EmbedFooter.Create(model.Footer.Value) : (EmbedFooter?)null,
model.Provider.IsSpecified ? EmbedProvider.Create(model.Provider.Value) : (EmbedProvider?)null, model.Provider.IsSpecified ? EmbedProvider.Create(model.Provider.Value) : (EmbedProvider?)null,
model.Thumbnail.IsSpecified ? EmbedThumbnail.Create(model.Thumbnail.Value) : (EmbedThumbnail?)null, model.Thumbnail.IsSpecified ? EmbedThumbnail.Create(model.Thumbnail.Value) : (EmbedThumbnail?)null,
model.Fields.IsSpecified ? model.Fields.Value.Select(x => EmbedField.Create(x)).ToImmutableArray() : ImmutableArray.Create<EmbedField>());
model.Fields.IsSpecified ? model.Fields.Value.Select(EmbedField.Create).ToImmutableArray() : ImmutableArray.Create<EmbedField>());
} }


public override string ToString() => Title; public override string ToString() => Title;


Loading…
Cancel
Save