From d595c6dff849b83516eae27a808fd9c409e51278 Mon Sep 17 00:00:00 2001 From: Misha133 Date: Mon, 12 Dec 2022 22:06:24 +0300 Subject: [PATCH] models & internal methods --- .../RoleConnectionMetadata.cs | 29 +++++++++++ .../RoleConnectionMetadataType.cs | 49 +++++++++++++++++++ .../API/Common/RoleConnectionMetadata.cs | 25 ++++++++++ src/Discord.Net.Rest/DiscordRestApiClient.cs | 15 ++++++ 4 files changed, 118 insertions(+) create mode 100644 src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs create mode 100644 src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadataType.cs create mode 100644 src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs diff --git a/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs new file mode 100644 index 000000000..18a887626 --- /dev/null +++ b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadata.cs @@ -0,0 +1,29 @@ +using System.Collections.Generic; + +namespace Discord; + +public class RoleConnectionMetadata +{ + public RoleConnectionMetadataType Type { get; } + + public string Key { get; } + + public string Name{ get; } + + public Optional> NameLocalizations { get; } + + public string Description { get; } + + public Optional> DescriptionLocalizations { get; } + + internal RoleConnectionMetadata(RoleConnectionMetadataType type, string key, string name, string description, + Dictionary nameLocalizations = null, Dictionary descriptionLocalizations = null) + { + Type = type; + Key = key; + Name = name; + Description = description; + NameLocalizations = nameLocalizations; + DescriptionLocalizations = descriptionLocalizations; + } +} diff --git a/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadataType.cs b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadataType.cs new file mode 100644 index 000000000..1c0fa623b --- /dev/null +++ b/src/Discord.Net.Core/Entities/ApplicationRoleConnection/RoleConnectionMetadataType.cs @@ -0,0 +1,49 @@ +using System; + +namespace Discord; + +/// +/// Represents the type of Application Role Connection Metadata +/// +public enum RoleConnectionMetadataType +{ + /// + /// The metadata's integer value is less than or equal to the guild's configured value + /// + IntegerLessOrEqual = 1, + + /// + /// The metadata's integer value is greater than or equal to the guild's configured value + /// + IntegerGreaterOrEqual = 2, + + /// + /// The metadata's integer value is equal to the guild's configured value + /// + IntegerEqual = 3, + + /// + /// The metadata's integer value is not equal to the guild's configured value + /// + IntegerNotEqual = 4, + + /// + /// The metadata's ISO8601 string value is less or equal to the guild's configured value + /// + DateTimeLessOrEqual = 5, + + /// + /// The metadata's ISO8601 string value is greater to the guild's configured value + /// + DateTimeGreaterOrEqual = 6, + + /// + /// The metadata's integer value is equal to the guild's configured value + /// + BoolEqual = 7, + + /// + /// The metadata's integer value is equal to the guild's configured value + /// + BoolNotEqual = 8, +} diff --git a/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs b/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs new file mode 100644 index 000000000..d4b2fe222 --- /dev/null +++ b/src/Discord.Net.Rest/API/Common/RoleConnectionMetadata.cs @@ -0,0 +1,25 @@ +using Newtonsoft.Json; +using System.Collections.Generic; + +namespace Discord.API; + +public class RoleConnectionMetadata +{ + [JsonProperty("type")] + public RoleConnectionMetadataType Type { get; set; } + + [JsonProperty("key")] + public string Key { get; set; } + + [JsonProperty("name")] + public string Name { get; set; } + + [JsonProperty("description")] + public string Description { get; set; } + + [JsonProperty("name_localizations")] + public Optional>> NameLocalizations { get; set; } + + [JsonProperty("description_localizations")] + public Optional>> DescriptionLocalizations { get; set; } +} diff --git a/src/Discord.Net.Rest/DiscordRestApiClient.cs b/src/Discord.Net.Rest/DiscordRestApiClient.cs index 615e5ac12..3bee9a4cd 100644 --- a/src/Discord.Net.Rest/DiscordRestApiClient.cs +++ b/src/Discord.Net.Rest/DiscordRestApiClient.cs @@ -10,6 +10,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.ComponentModel.Design; using System.Diagnostics; +using System.Diagnostics.Contracts; using System.Globalization; using System.IO; using System.Linq; @@ -2476,5 +2477,19 @@ namespace Discord.API } #endregion + + #region Application Role Connections Metadata + + public async Task> GetApplicationRoleConnectionMetadataRecordsAsync(RequestOptions options = null) + { + return await SendAsync>("GET", $"/applications/{CurrentApplicationId}/role-connections/metadata", options: options).ConfigureAwait(false); + } + + public async Task> UpdateApplicationRoleConnectionMetadataRecordsAsync(IEnumerable roleConnections, RequestOptions options = null) + { + return await SendJsonAsync>("PUT", $"/applications/{CurrentApplicationId}/role-connections/metadata", roleConnections, options: options).ConfigureAwait(false); + } + + #endregion } }