| @@ -5,6 +5,7 @@ using System; | |||||
| using System.Collections.Generic; | using System.Collections.Generic; | ||||
| using System.Linq; | using System.Linq; | ||||
| using System.Reflection; | using System.Reflection; | ||||
| using MemberInfo = System.Reflection.MemberInfo; | |||||
| namespace Discord | namespace Discord | ||||
| { | { | ||||
| @@ -35,84 +36,57 @@ namespace Discord | |||||
| public sealed class Attachment : File | public sealed class Attachment : File | ||||
| { | { | ||||
| /// <summary> Unique identifier for this file. </summary> | /// <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> | /// <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> | /// <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 | public sealed class Embed | ||||
| { | { | ||||
| /// <summary> URL of this embed. </summary> | /// <summary> URL of this embed. </summary> | ||||
| public string Url { get; } | |||||
| public string Url { get; internal set; } | |||||
| /// <summary> Type of this embed. </summary> | /// <summary> Type of this embed. </summary> | ||||
| public string Type { get; } | |||||
| public string Type { get; internal set; } | |||||
| /// <summary> Title for this embed. </summary> | /// <summary> Title for this embed. </summary> | ||||
| public string Title { get; } | |||||
| public string Title { get; internal set; } | |||||
| /// <summary> Summary of this embed. </summary> | /// <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> | /// <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> | /// <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> | /// <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 | public sealed class EmbedReference | ||||
| { | { | ||||
| /// <summary> URL of this embed provider. </summary> | /// <summary> URL of this embed provider. </summary> | ||||
| public string Url { get; } | |||||
| public string Url { get; internal set; } | |||||
| /// <summary> Name of this embed provider. </summary> | /// <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 | public class File | ||||
| { | { | ||||
| /// <summary> Download url for this file. </summary> | /// <summary> Download url for this file. </summary> | ||||
| public string Url { get; } | |||||
| public string Url { get; internal set; } | |||||
| /// <summary> Preview url for this file. </summary> | /// <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> | /// <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> | /// <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> | /// <summary> Returns true if the logged-in user was mentioned. </summary> | ||||
| @@ -225,7 +199,16 @@ namespace Discord | |||||
| if (model.Attachments != null) | if (model.Attachments != null) | ||||
| { | { | ||||
| Attachments = model.Attachments | 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(); | .ToArray(); | ||||
| } | } | ||||
| if (model.Embeds != null) | if (model.Embeds != null) | ||||
| @@ -236,13 +219,22 @@ namespace Discord | |||||
| File thumbnail = null; | File thumbnail = null; | ||||
| if (x.Author != 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) | 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) | 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(); | }).ToArray(); | ||||
| } | } | ||||