Browse Source

Add CDN routes to get cover image

pull/2151/head
Quin Lynch 3 years ago
parent
commit
c405319d05
8 changed files with 40 additions and 6 deletions
  1. +3
    -0
      src/Discord.Net.Core/CDN.cs
  2. +1
    -1
      src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventsProperties.cs
  3. +2
    -2
      src/Discord.Net.Core/Entities/Guilds/IGuild.cs
  4. +13
    -0
      src/Discord.Net.Core/Entities/Guilds/IGuildScheduledEvent.cs
  5. +2
    -0
      src/Discord.Net.Rest/API/Common/GuildScheduledEvent.cs
  6. +3
    -3
      src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs
  7. +8
    -0
      src/Discord.Net.Rest/Entities/Guilds/RestGuildEvent.cs
  8. +8
    -0
      src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs

+ 3
- 0
src/Discord.Net.Core/CDN.cs View File

@@ -208,6 +208,9 @@ namespace Discord
public static string GetStickerUrl(ulong stickerId, StickerFormatType format = StickerFormatType.Png)
=> $"{DiscordConfig.CDNUrl}stickers/{stickerId}.{FormatToExtension(format)}";

public static string GetEventCoverImageUrl(ulong guildId, ulong eventId, string assetId, ImageFormat format = ImageFormat.Auto, ushort size = 1024)
=> $"{DiscordConfig.CDNUrl}guild-events/{guildId}/{eventId}/{assetId}.{FormatToExtension(format, assetId)}?size={size}";

private static string FormatToExtension(StickerFormatType format)
{
return format switch


+ 1
- 1
src/Discord.Net.Core/Entities/Guilds/GuildScheduledEventsProperties.cs View File

@@ -58,6 +58,6 @@ namespace Discord
/// <summary>
/// Gets or sets the banner image of the event.
/// </summary>
public Optional<Image?> Image { get; set; }
public Optional<Image?> CoverImage { get; set; }
}
}

+ 2
- 2
src/Discord.Net.Core/Entities/Guilds/IGuild.cs View File

@@ -1105,7 +1105,7 @@ namespace Discord
/// </param>
/// <param name="speakers">A collection of speakers for the event.</param>
/// <param name="location">The location of the event; links are supported</param>
/// <param name="bannerImage">The optional banner image for the event.</param>
/// <param name="coverImage">The optional banner image for the event.</param>
/// <param name="options">The options to be used when sending the request.</param>
/// <returns>
/// A task that represents the asynchronous create operation.
@@ -1119,7 +1119,7 @@ namespace Discord
DateTimeOffset? endTime = null,
ulong? channelId = null,
string location = null,
Image? bannerImage = null,
Image? coverImage = null,
RequestOptions options = null);

/// <summary>


+ 13
- 0
src/Discord.Net.Core/Entities/Guilds/IGuildScheduledEvent.cs View File

@@ -39,6 +39,11 @@ namespace Discord
/// </remarks>
string Description { get; }

/// <summary>
/// Gets the banner asset id of the event.
/// </summary>
string CoverImageId { get; }

/// <summary>
/// Gets the start time of the event.
/// </summary>
@@ -80,6 +85,14 @@ namespace Discord
/// </summary>
int? UserCount { get; }

/// <summary>
/// Gets this events banner image url
/// </summary>
/// <param name="format">The format to return.</param>
/// <param name="size">The size of the image to return in. This can be any power of two between 16 and 2048.
/// <returns></returns>
string GetCoverImageUrl(ImageFormat format = ImageFormat.Auto, ushort size = 1024);

/// <summary>
/// Starts the event.
/// </summary>


+ 2
- 0
src/Discord.Net.Rest/API/Common/GuildScheduledEvent.cs View File

@@ -39,5 +39,7 @@ namespace Discord.API
public Optional<User> Creator { get; set; }
[JsonProperty("user_count")]
public Optional<int> UserCount { get; set; }
[JsonProperty("image")]
public string Image { get; set; }
}
}

+ 3
- 3
src/Discord.Net.Rest/Entities/Guilds/GuildHelper.cs View File

@@ -800,9 +800,9 @@ namespace Discord.Rest
StartTime = args.StartTime,
Status = args.Status,
Type = args.Type,
Image = args.Image.IsSpecified
? args.Image.Value.HasValue
? args.Image.Value.Value.ToModel()
Image = args.CoverImage.IsSpecified
? args.CoverImage.Value.HasValue
? args.CoverImage.Value.Value.ToModel()
: null
: Optional<ImageModel?>.Unspecified
};


+ 8
- 0
src/Discord.Net.Rest/Entities/Guilds/RestGuildEvent.cs View File

@@ -28,6 +28,9 @@ namespace Discord.Rest
/// <inheritdoc/>
public string Description { get; private set; }

/// <inheritdoc/>
public string CoverImageId { get; private set; }

/// <inheritdoc/>
public DateTimeOffset StartTime { get; private set; }

@@ -98,8 +101,13 @@ namespace Discord.Rest
EntityId = model.EntityId;
Location = model.EntityMetadata?.Location.GetValueOrDefault();
UserCount = model.UserCount.ToNullable();
CoverImageId = model.Image;
}

/// <inheritdoc/>
public string GetCoverImageUrl(ImageFormat format = ImageFormat.Auto, ushort size = 1024)
=> CDN.GetEventCoverImageUrl(Guild.Id, Id, CoverImageId, format, size);

/// <inheritdoc/>
public Task StartAsync(RequestOptions options = null)
=> ModifyAsync(x => x.Status = GuildScheduledEventStatus.Active);


+ 8
- 0
src/Discord.Net.WebSocket/Entities/Guilds/SocketGuildEvent.cs View File

@@ -35,6 +35,9 @@ namespace Discord.WebSocket
/// <inheritdoc/>
public string Description { get; private set; }

/// <inheritdoc/>
public string CoverImageId { get; private set; }

/// <inheritdoc/>
public DateTimeOffset StartTime { get; private set; }

@@ -109,8 +112,13 @@ namespace Discord.WebSocket
StartTime = model.ScheduledStartTime;
Status = model.Status;
UserCount = model.UserCount.ToNullable();
CoverImageId = model.Image;
}

/// <inheritdoc/>
public string GetCoverImageUrl(ImageFormat format = ImageFormat.Auto, ushort size = 1024)
=> CDN.GetEventCoverImageUrl(Guild.Id, Id, CoverImageId, format, size);

/// <inheritdoc/>
public Task DeleteAsync(RequestOptions options = null)
=> GuildHelper.DeleteEventAsync(Discord, this, options);


Loading…
Cancel
Save