Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions NetCord/Rest/RestClient.Application.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,21 @@

public partial class RestClient
{
/// <summary>
/// Retrieves the application associated with the current user.
/// </summary>
/// <param name="properties">Optional properties to customize the REST request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token to monitor for cancellation requests. Defaults to <see cref="CancellationToken.None"/>.</param>
[GenerateAlias([typeof(CurrentApplication)], CastType = typeof(Application), Modifiers = ["override"])]
public async Task<CurrentApplication> GetCurrentApplicationAsync(RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
=> new(await (await SendRequestAsync(HttpMethod.Get, $"/applications/@me", null, null, properties, cancellationToken: cancellationToken).ConfigureAwait(false)).ToObjectAsync(Serialization.Default.JsonApplication).ConfigureAwait(false), this);

/// <summary>
/// Modifies the application associated with the current user.
/// </summary>
/// <param name="action">An action representing the modification to be made.</param>
/// <param name="properties">Optional properties to customize the REST request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token to monitor for cancellation requests. Defaults to <see cref="CancellationToken.None"/>.</param>
[GenerateAlias([typeof(CurrentApplication)])]
public async Task<CurrentApplication> ModifyCurrentApplicationAsync(Action<CurrentApplicationOptions> action, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
{
Expand Down
13 changes: 13 additions & 0 deletions NetCord/Rest/RestClient.ApplicationRoleConnectionMetadata.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,23 @@

public partial class RestClient
{
/// <summary>
/// Returns a list of <see cref="ApplicationRoleConnectionMetadata"/> objects for the given application.
/// </summary>
/// <param name="applicationId">The ID of the application to request data for.</param>
/// <param name="properties">Optional properties to customize the REST request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token to monitor for cancellation requests. Defaults to <see cref="CancellationToken.None"/>.</param>
[GenerateAlias([typeof(CurrentApplication)], nameof(CurrentApplication.Id), TypeNameOverride = nameof(Application))]
public async Task<IReadOnlyList<ApplicationRoleConnectionMetadata>> GetApplicationRoleConnectionMetadataRecordsAsync(ulong applicationId, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
=> (await (await SendRequestAsync(HttpMethod.Get, $"/applications/{applicationId}/role-connections/metadata", null, null, properties, cancellationToken: cancellationToken).ConfigureAwait(false)).ToObjectAsync(Serialization.Default.IEnumerableJsonApplicationRoleConnectionMetadata).ConfigureAwait(false)).Select(m => new ApplicationRoleConnectionMetadata(m)).ToArray();

/// <summary>
/// Updates an application's <see cref="ApplicationRoleConnectionMetadata"/> list, replacing it with the given list instead.
/// </summary>
/// <param name="applicationId">The ID of the application to modify data for.</param>
/// <param name="applicationRoleConnectionMetadataProperties">The list to overwrite the target data with.</param>
/// <param name="properties">Optional properties to customize the REST request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token to monitor for cancellation requests. Defaults to <see cref="CancellationToken.None"/>.</param>
[GenerateAlias([typeof(CurrentApplication)], nameof(CurrentApplication.Id), TypeNameOverride = nameof(Application))]
public async Task<IReadOnlyList<ApplicationRoleConnectionMetadata>> UpdateApplicationRoleConnectionMetadataRecordsAsync(ulong applicationId, IEnumerable<ApplicationRoleConnectionMetadataProperties> applicationRoleConnectionMetadataProperties, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
{
Expand Down
6 changes: 6 additions & 0 deletions NetCord/Rest/RestClient.AuditLog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ namespace NetCord.Rest;

public partial class RestClient
{
/// <summary>
/// Returns a collection of audit log entries for a guild, to be enumerated asynchronously.
/// </summary>
/// <param name="guildId">The ID of the guild to acquire entries for.</param>
/// <param name="paginationProperties">Optional properties to customize result pagination, can be <see langword="null"/>.</param>
/// <param name="properties">Optional properties to customize the request, can be <see langword="null"/>.</param>
[GenerateAlias([typeof(RestGuild)], nameof(RestGuild.Id), TypeNameOverride = nameof(Guild))]
public IAsyncEnumerable<RestAuditLogEntry> GetGuildAuditLogAsync(ulong guildId, GuildAuditLogPaginationProperties? paginationProperties = null, RestRequestProperties? properties = null)
{
Expand Down
35 changes: 35 additions & 0 deletions NetCord/Rest/RestClient.AutoModeration.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,22 +4,50 @@ namespace NetCord.Rest;

public partial class RestClient
{
/// <summary>
/// Retrieves a read-only list of configured automod rules for a guild.
/// </summary>
/// <param name="guildId">The ID of the guild to retrieve auto-moderation rules for.</param>
/// <param name="properties">Optional properties to customize the request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token that can be used to cancel the operation before it completes.</param>
[GenerateAlias([typeof(RestGuild)], nameof(RestGuild.Id), TypeNameOverride = nameof(Guild))]
public async Task<IReadOnlyList<AutoModerationRule>> GetAutoModerationRulesAsync(ulong guildId, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
=> (await (await SendRequestAsync(HttpMethod.Get, $"/guilds/{guildId}/auto-moderation/rules", null, new(guildId), properties, cancellationToken: cancellationToken).ConfigureAwait(false)).ToObjectAsync(Serialization.Default.JsonAutoModerationRuleArray).ConfigureAwait(false)).Select(r => new AutoModerationRule(r, this)).ToArray();

/// <summary>
/// Retrieves information about a specific auto-mod's rule configuration, for a specified guild.
/// </summary>
/// <param name="guildId">The ID of the guild to retrieve auto-moderation rules for.</param>
/// <param name="autoModerationRuleId">The ID of the rule to retrieve information on.</param>
/// <param name="properties">Optional properties to customize the request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token that can be used to cancel the operation before it completes.</param>
[GenerateAlias([typeof(RestGuild)], nameof(RestGuild.Id), TypeNameOverride = nameof(Guild))]
[GenerateAlias([typeof(AutoModerationRule)], nameof(AutoModerationRule.GuildId), nameof(AutoModerationRule.Id))]
public async Task<AutoModerationRule> GetAutoModerationRuleAsync(ulong guildId, ulong autoModerationRuleId, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
=> new(await (await SendRequestAsync(HttpMethod.Get, $"/guilds/{guildId}/auto-moderation/rules/{autoModerationRuleId}", null, new(guildId), properties, cancellationToken: cancellationToken).ConfigureAwait(false)).ToObjectAsync(Serialization.Default.JsonAutoModerationRule).ConfigureAwait(false), this);

/// <summary>
/// Creates a new auto-moderation rule for a specified guild.
/// </summary>
/// <param name="guildId">The ID of the guild to create the rule for..</param>
/// <param name="autoModerationRuleProperties">The properties of the auto-moderation rule to be created, including triggers, actions, and conditions.</param>
/// <param name="properties">Optional properties to customize the request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token that can be used to cancel the operation before it completes.</param>
[GenerateAlias([typeof(RestGuild)], nameof(RestGuild.Id), TypeNameOverride = nameof(Guild))]
public async Task<AutoModerationRule> CreateAutoModerationRuleAsync(ulong guildId, AutoModerationRuleProperties autoModerationRuleProperties, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
{
using (HttpContent content = new JsonContent<AutoModerationRuleProperties>(autoModerationRuleProperties, Serialization.Default.AutoModerationRuleProperties))
return new(await (await SendRequestAsync(HttpMethod.Post, content, $"/guilds/{guildId}/auto-moderation/rules", null, new(guildId), properties, cancellationToken: cancellationToken).ConfigureAwait(false)).ToObjectAsync(Serialization.Default.JsonAutoModerationRule).ConfigureAwait(false), this);
}

/// <summary>
/// Modifies a pre-existing auto-moderation rule for a specified guild.
/// </summary>
/// <param name="guildId">The ID of the guild to modify the rule for..</param>
/// <param name="autoModerationRuleId">The ID of the rule to modify.</param>
/// <param name="action">An action, representing the modifications to make to the rule.</param>
/// <param name="properties">Optional properties to customize the request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token that can be used to cancel the operation before it completes.</param>
[GenerateAlias([typeof(RestGuild)], nameof(RestGuild.Id), TypeNameOverride = nameof(Guild))]
[GenerateAlias([typeof(AutoModerationRule)], nameof(AutoModerationRule.GuildId), nameof(AutoModerationRule.Id))]
public async Task<AutoModerationRule> ModifyAutoModerationRuleAsync(ulong guildId, ulong autoModerationRuleId, Action<AutoModerationRuleOptions> action, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
Expand All @@ -30,6 +58,13 @@ public async Task<AutoModerationRule> ModifyAutoModerationRuleAsync(ulong guildI
return new(await (await SendRequestAsync(HttpMethod.Patch, content, $"/guilds/{guildId}/auto-moderation/rules/{autoModerationRuleId}", null, new(guildId), properties, cancellationToken: cancellationToken).ConfigureAwait(false)).ToObjectAsync(Serialization.Default.JsonAutoModerationRule).ConfigureAwait(false), this);
}

/// <summary>
/// Deletes an auto-moderation rule for a specified guild.
/// </summary>
/// <param name="guildId">The ID of the guild to modify the rule for..</param>
/// <param name="autoModerationRuleId">The ID of the rule to modify.</param>
/// <param name="properties">Optional properties to customize the request, can be <see langword="null"/>.</param>
/// <param name="cancellationToken">A token that can be used to cancel the operation before it completes.</param>
[GenerateAlias([typeof(RestGuild)], nameof(RestGuild.Id), TypeNameOverride = nameof(Guild))]
[GenerateAlias([typeof(AutoModerationRule)], nameof(AutoModerationRule.GuildId), nameof(AutoModerationRule.Id))]
public Task DeleteAutoModerationRuleAsync(ulong guildId, ulong autoModerationRuleId, RestRequestProperties? properties = null, CancellationToken cancellationToken = default)
Expand Down
Loading