@@ -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)