Browse Source

Update application

pull/1923/head
quin lynch 3 years ago
parent
commit
9dd4ed2cbf
6 changed files with 102 additions and 8 deletions
  1. +23
    -0
      src/Discord.Net.Core/Entities/ApplicationFlags.cs
  2. +31
    -0
      src/Discord.Net.Core/Entities/ApplicationInstallParams.cs
  3. +12
    -2
      src/Discord.Net.Core/Entities/IApplication.cs
  4. +6
    -2
      src/Discord.Net.Rest/API/Common/Application.cs
  5. +17
    -0
      src/Discord.Net.Rest/API/Common/InstallParams.cs
  6. +13
    -4
      src/Discord.Net.Rest/Entities/RestApplication.cs

+ 23
- 0
src/Discord.Net.Core/Entities/ApplicationFlags.cs View File

@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Discord
{
/// <summary>
/// Represents public flags for an application.
/// </summary>
public enum ApplicationFlags
{
GatewayPresence = 1 << 12,
GatewayPresenceLimited = 1 << 13,
GatewayGuildMembers = 1 << 14,
GatewayGuildMembersLimited = 1 << 15,
VerificationPendingGuildLimit = 1 << 16,
Embedded = 1 << 17,
GatewayMessageContent = 1 << 18,
GatewayMessageContentLimited = 1 << 19
}
}

+ 31
- 0
src/Discord.Net.Core/Entities/ApplicationInstallParams.cs View File

@@ -0,0 +1,31 @@
using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Discord
{
/// <summary>
/// Represents install parameters for an application.
/// </summary>
public class ApplicationInstallParams
{
/// <summary>
/// Gets the scopes to install this application.
/// </summary>
public IReadOnlyCollection<string> Scopes { get; }

/// <summary>
/// Gets the default permissions to install this application
/// </summary>
public GuildPermission? Permission { get; }

internal ApplicationInstallParams(string[] scopes, GuildPermission? permission)
{
Scopes = scopes.ToImmutableArray();
Permission = permission;
}
}
}

+ 12
- 2
src/Discord.Net.Core/Entities/IApplication.cs View File

@@ -1,3 +1,5 @@
using System.Collections.Generic;

namespace Discord namespace Discord
{ {
/// <summary> /// <summary>
@@ -16,8 +18,16 @@ namespace Discord
/// <summary> /// <summary>
/// Gets the RPC origins of the application. /// Gets the RPC origins of the application.
/// </summary> /// </summary>
string[] RPCOrigins { get; }
ulong Flags { get; }
IReadOnlyCollection<string> RPCOrigins { get; }
ApplicationFlags Flags { get; }
/// <summary>
/// Gets a collection of install parameters for this application.
/// </summary>
ApplicationInstallParams InstallParams { get; }
/// <summary>
/// Gets a collection of tags related to the application.
/// </summary>
IReadOnlyCollection<string> Tags { get; }
/// <summary> /// <summary>
/// Gets the icon URL of the application. /// Gets the icon URL of the application.
/// </summary> /// </summary>


+ 6
- 2
src/Discord.Net.Rest/API/Common/Application.cs View File

@@ -7,7 +7,7 @@ namespace Discord.API
[JsonProperty("description")] [JsonProperty("description")]
public string Description { get; set; } public string Description { get; set; }
[JsonProperty("rpc_origins")] [JsonProperty("rpc_origins")]
public string[] RPCOrigins { get; set; }
public Optional<string[]> RPCOrigins { get; set; }
[JsonProperty("name")] [JsonProperty("name")]
public string Name { get; set; } public string Name { get; set; }
[JsonProperty("id")] [JsonProperty("id")]
@@ -18,12 +18,16 @@ namespace Discord.API
public bool IsBotPublic { get; set; } public bool IsBotPublic { get; set; }
[JsonProperty("bot_require_code_grant")] [JsonProperty("bot_require_code_grant")]
public bool BotRequiresCodeGrant { get; set; } public bool BotRequiresCodeGrant { get; set; }
[JsonProperty("install_params")]
public Optional<InstallParams> InstallParams { get; set; }

[JsonProperty("team")] [JsonProperty("team")]
public Team Team { get; set; } public Team Team { get; set; }


[JsonProperty("flags"), Int53] [JsonProperty("flags"), Int53]
public Optional<ulong> Flags { get; set; }
public Optional<ApplicationFlags> Flags { get; set; }
[JsonProperty("owner")] [JsonProperty("owner")]
public Optional<User> Owner { get; set; } public Optional<User> Owner { get; set; }
public Optional<string[]> Tags { get; set; }
} }
} }

+ 17
- 0
src/Discord.Net.Rest/API/Common/InstallParams.cs View File

@@ -0,0 +1,17 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Discord.API
{
internal class InstallParams
{
[JsonProperty("scopes")]
public string[] Scopes { get; set; }
[JsonProperty("permissions")]
public ulong Permission { get; set; }
}
}

+ 13
- 4
src/Discord.Net.Rest/Entities/RestApplication.cs View File

@@ -1,4 +1,6 @@
using System; using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Diagnostics; using System.Diagnostics;
using System.Threading.Tasks; using System.Threading.Tasks;
using Model = Discord.API.Application; using Model = Discord.API.Application;
@@ -18,9 +20,9 @@ namespace Discord.Rest
/// <inheritdoc /> /// <inheritdoc />
public string Description { get; private set; } public string Description { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
public string[] RPCOrigins { get; private set; }
public IReadOnlyCollection<string> RPCOrigins { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
public ulong Flags { get; private set; }
public ApplicationFlags Flags { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
public bool IsBotPublic { get; private set; } public bool IsBotPublic { get; private set; }
/// <inheritdoc /> /// <inheritdoc />
@@ -36,6 +38,10 @@ namespace Discord.Rest
/// <inheritdoc /> /// <inheritdoc />
public string IconUrl => CDN.GetApplicationIconUrl(Id, _iconId); public string IconUrl => CDN.GetApplicationIconUrl(Id, _iconId);


public ApplicationInstallParams InstallParams { get; private set; }

public IReadOnlyCollection<string> Tags { get; private set; }

internal RestApplication(BaseDiscordClient discord, ulong id) internal RestApplication(BaseDiscordClient discord, ulong id)
: base(discord, id) : base(discord, id)
{ {
@@ -49,14 +55,17 @@ namespace Discord.Rest
internal void Update(Model model) internal void Update(Model model)
{ {
Description = model.Description; Description = model.Description;
RPCOrigins = model.RPCOrigins;
RPCOrigins = model.RPCOrigins.IsSpecified ? model.RPCOrigins.Value.ToImmutableArray() : ImmutableArray<string>.Empty;
Name = model.Name; Name = model.Name;
_iconId = model.Icon; _iconId = model.Icon;
IsBotPublic = model.IsBotPublic; IsBotPublic = model.IsBotPublic;
BotRequiresCodeGrant = model.BotRequiresCodeGrant; BotRequiresCodeGrant = model.BotRequiresCodeGrant;
Tags = model.Tags.GetValueOrDefault(null)?.ToImmutableArray() ?? ImmutableArray<string>.Empty;
var installParams = model.InstallParams.GetValueOrDefault(null);
InstallParams = new ApplicationInstallParams(installParams?.Scopes ?? new string[0], (GuildPermission?)installParams?.Permission ?? null);


if (model.Flags.IsSpecified) if (model.Flags.IsSpecified)
Flags = model.Flags.Value; //TODO: Do we still need this?
Flags = model.Flags.Value;
if (model.Owner.IsSpecified) if (model.Owner.IsSpecified)
Owner = RestUser.Create(Discord, model.Owner.Value); Owner = RestUser.Create(Discord, model.Owner.Value);
if (model.Team != null) if (model.Team != null)


Loading…
Cancel
Save