| @@ -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(); | |||
| } | |||