|
|
@@ -5,6 +5,7 @@ using System; |
|
|
|
using System.Collections.Generic; |
|
|
|
using System.Linq; |
|
|
|
using System.Reflection; |
|
|
|
using MemberInfo = System.Reflection.MemberInfo; |
|
|
|
|
|
|
|
namespace Discord |
|
|
|
{ |
|
|
@@ -35,84 +36,57 @@ namespace Discord |
|
|
|
public sealed class Attachment : File |
|
|
|
{ |
|
|
|
/// <summary> Unique identifier for this file. </summary> |
|
|
|
public string Id { get; } |
|
|
|
public string Id { get; internal set; } |
|
|
|
/// <summary> Size, in bytes, of this file file. </summary> |
|
|
|
public int Size { get; } |
|
|
|
public int Size { get; internal set; } |
|
|
|
/// <summary> Filename of this file. </summary> |
|
|
|
public string Filename { get; } |
|
|
|
public string Filename { get; internal set; } |
|
|
|
|
|
|
|
internal Attachment(string id, string url, string proxyUrl, |
|
|
|
int? width, int? height, int size, string filename) |
|
|
|
: base(url, proxyUrl, width, height) |
|
|
|
{ |
|
|
|
Id = id; |
|
|
|
Size = size; |
|
|
|
Filename = filename; |
|
|
|
} |
|
|
|
internal Attachment() { } |
|
|
|
} |
|
|
|
|
|
|
|
public sealed class Embed |
|
|
|
{ |
|
|
|
/// <summary> URL of this embed. </summary> |
|
|
|
public string Url { get; } |
|
|
|
public string Url { get; internal set; } |
|
|
|
/// <summary> Type of this embed. </summary> |
|
|
|
public string Type { get; } |
|
|
|
public string Type { get; internal set; } |
|
|
|
/// <summary> Title for this embed. </summary> |
|
|
|
public string Title { get; } |
|
|
|
public string Title { get; internal set; } |
|
|
|
/// <summary> Summary of this embed. </summary> |
|
|
|
public string Description { get; } |
|
|
|
public string Description { get; internal set; } |
|
|
|
/// <summary> Returns information about the author of this embed. </summary> |
|
|
|
public EmbedReference Author { get; } |
|
|
|
public EmbedReference Author { get; internal set; } |
|
|
|
/// <summary> Returns information about the providing website of this embed. </summary> |
|
|
|
public EmbedReference Provider { get; } |
|
|
|
public EmbedReference Provider { get; internal set; } |
|
|
|
/// <summary> Returns the thumbnail of this embed. </summary> |
|
|
|
public File Thumbnail { get; } |
|
|
|
public File Thumbnail { get; internal set; } |
|
|
|
|
|
|
|
internal Embed(string url, string type, string title, string description, |
|
|
|
EmbedReference author, EmbedReference provider, File thumbnail) |
|
|
|
{ |
|
|
|
Url = url; |
|
|
|
Type = type; |
|
|
|
Title = title; |
|
|
|
Description = description; |
|
|
|
Author = author; |
|
|
|
Provider = provider; |
|
|
|
Thumbnail = thumbnail; |
|
|
|
} |
|
|
|
internal Embed() { } |
|
|
|
} |
|
|
|
|
|
|
|
public sealed class EmbedReference |
|
|
|
{ |
|
|
|
/// <summary> URL of this embed provider. </summary> |
|
|
|
public string Url { get; } |
|
|
|
public string Url { get; internal set; } |
|
|
|
/// <summary> Name of this embed provider. </summary> |
|
|
|
public string Name { get; } |
|
|
|
public string Name { get; internal set; } |
|
|
|
|
|
|
|
internal EmbedReference(string url, string name) |
|
|
|
{ |
|
|
|
Url = url; |
|
|
|
Name = name; |
|
|
|
} |
|
|
|
internal EmbedReference() { } |
|
|
|
} |
|
|
|
|
|
|
|
public class File |
|
|
|
{ |
|
|
|
/// <summary> Download url for this file. </summary> |
|
|
|
public string Url { get; } |
|
|
|
public string Url { get; internal set; } |
|
|
|
/// <summary> Preview url for this file. </summary> |
|
|
|
public string ProxyUrl { get; } |
|
|
|
public string ProxyUrl { get; internal set; } |
|
|
|
/// <summary> Width of the this file, if it is an image. </summary> |
|
|
|
public int? Width { get; } |
|
|
|
public int? Width { get; internal set; } |
|
|
|
/// <summary> Height of this file, if it is an image. </summary> |
|
|
|
public int? Height { get; } |
|
|
|
public int? Height { get; internal set; } |
|
|
|
|
|
|
|
internal File(string url, string proxyUrl, int? width, int? height) |
|
|
|
{ |
|
|
|
Url = url; |
|
|
|
ProxyUrl = proxyUrl; |
|
|
|
Width = width; |
|
|
|
Height = height; |
|
|
|
} |
|
|
|
internal File() { } |
|
|
|
} |
|
|
|
|
|
|
|
/// <summary> Returns true if the logged-in user was mentioned. </summary> |
|
|
@@ -225,7 +199,16 @@ namespace Discord |
|
|
|
if (model.Attachments != null) |
|
|
|
{ |
|
|
|
Attachments = model.Attachments |
|
|
|
.Select(x => new Attachment(x.Id, x.Url, x.ProxyUrl, x.Width, x.Height, x.Size, x.Filename)) |
|
|
|
.Select(x => new Attachment() |
|
|
|
{ |
|
|
|
Id = x.Id, |
|
|
|
Url = x.Url, |
|
|
|
ProxyUrl = x.ProxyUrl, |
|
|
|
Width = x.Width, |
|
|
|
Height = x.Height, |
|
|
|
Size = x.Size, |
|
|
|
Filename = x.Filename |
|
|
|
}) |
|
|
|
.ToArray(); |
|
|
|
} |
|
|
|
if (model.Embeds != null) |
|
|
@@ -236,13 +219,22 @@ namespace Discord |
|
|
|
File thumbnail = null; |
|
|
|
|
|
|
|
if (x.Author != null) |
|
|
|
author = new EmbedReference(x.Author.Url, x.Author.Name); |
|
|
|
author = new EmbedReference { Url = x.Author.Url, Name = x.Author.Name }; |
|
|
|
if (x.Provider != null) |
|
|
|
provider = new EmbedReference(x.Provider.Url, x.Provider.Name); |
|
|
|
provider = new EmbedReference { Url = x.Provider.Url, Name = x.Provider.Name }; |
|
|
|
if (x.Thumbnail != null) |
|
|
|
thumbnail = new File(x.Thumbnail.Url, x.Thumbnail.ProxyUrl, x.Thumbnail.Width, x.Thumbnail.Height); |
|
|
|
thumbnail = new File { Url = x.Thumbnail.Url, ProxyUrl = x.Thumbnail.ProxyUrl, Width = x.Thumbnail.Width, Height = x.Thumbnail.Height }; |
|
|
|
|
|
|
|
return new Embed(x.Url, x.Type, x.Title, x.Description, author, provider, thumbnail); |
|
|
|
return new Embed |
|
|
|
{ |
|
|
|
Url = x.Url, |
|
|
|
Type = x.Type, |
|
|
|
Title = x.Title, |
|
|
|
Description = x.Description, |
|
|
|
Author = author, |
|
|
|
Provider = provider, |
|
|
|
Thumbnail = thumbnail |
|
|
|
}; |
|
|
|
}).ToArray(); |
|
|
|
} |
|
|
|
|
|
|
|