Browse Source

Initial Spotify support

pull/970/head
Hsu Still 7 years ago
parent
commit
ef02759ad0
6 changed files with 39 additions and 8 deletions
  1. +3
    -2
      src/Discord.Net.Core/Entities/Activities/Game.cs
  2. +4
    -4
      src/Discord.Net.Core/Entities/Activities/RichGame.cs
  3. +18
    -0
      src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs
  4. +5
    -1
      src/Discord.Net.Rest/API/Common/Game.cs
  5. +1
    -1
      src/Discord.Net.WebSocket/DiscordSocketClient.cs
  6. +8
    -0
      src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs

+ 3
- 2
src/Discord.Net.Core/Entities/Activities/Game.cs View File

@@ -1,14 +1,15 @@
using System.Diagnostics;
using System.Diagnostics;


namespace Discord namespace Discord
{ {
[DebuggerDisplay(@"{DebuggerDisplay,nq}")] [DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class Game : IActivity public class Game : IActivity
{ {
internal Game() { }

public string Name { get; internal set; } public string Name { get; internal set; }
public ActivityType Type { get; internal set; } public ActivityType Type { get; internal set; }


internal Game() { }
public Game(string name, ActivityType type = ActivityType.Playing) public Game(string name, ActivityType type = ActivityType.Playing)
{ {
Name = name; Name = name;


+ 4
- 4
src/Discord.Net.Core/Entities/Activities/RichGame.cs View File

@@ -1,4 +1,4 @@
using System.Diagnostics;
using System.Diagnostics;


namespace Discord namespace Discord
{ {
@@ -7,8 +7,8 @@ namespace Discord
{ {
internal RichGame() { } internal RichGame() { }


public string Details { get; internal set;}
public string State { get; internal set;}
public string Details { get; internal set; }
public string State { get; internal set; }
public ulong ApplicationId { get; internal set; } public ulong ApplicationId { get; internal set; }
public GameAsset SmallAsset { get; internal set; } public GameAsset SmallAsset { get; internal set; }
public GameAsset LargeAsset { get; internal set; } public GameAsset LargeAsset { get; internal set; }
@@ -19,4 +19,4 @@ namespace Discord
public override string ToString() => Name; public override string ToString() => Name;
private string DebuggerDisplay => $"{Name} (Rich)"; private string DebuggerDisplay => $"{Name} (Rich)";
} }
}
}

+ 18
- 0
src/Discord.Net.Core/Entities/Activities/SpotifyGame.cs View File

@@ -0,0 +1,18 @@
using System.Diagnostics;

namespace Discord
{
[DebuggerDisplay(@"{DebuggerDisplay,nq}")]
public class SpotifyGame : Game
{
internal SpotifyGame() { }

public string TrackTitle { get; internal set; }
public string TrackAlbum { get; internal set; }
public string SyncId { get; internal set; }
public string SessionId { get; internal set; }

public override string ToString() => Name;
private string DebuggerDisplay => $"{Name} (Spotify)";
}
}

+ 5
- 1
src/Discord.Net.Rest/API/Common/Game.cs View File

@@ -1,4 +1,4 @@
#pragma warning disable CS1591
#pragma warning disable CS1591
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Serialization; using Newtonsoft.Json.Serialization;
using System.Runtime.Serialization; using System.Runtime.Serialization;
@@ -29,6 +29,10 @@ namespace Discord.API
public Optional<API.GameTimestamps> Timestamps { get; set; } public Optional<API.GameTimestamps> Timestamps { get; set; }
[JsonProperty("instance")] [JsonProperty("instance")]
public Optional<bool> Instance { get; set; } public Optional<bool> Instance { get; set; }
[JsonProperty("sync_id")]
public Optional<string> SyncId { get; set; }
[JsonProperty("session_id")]
public Optional<string> SessionId { get; set; }


[OnError] [OnError]
internal void OnError(StreamingContext context, ErrorContext errorContext) internal void OnError(StreamingContext context, ErrorContext errorContext)


+ 1
- 1
src/Discord.Net.WebSocket/DiscordSocketClient.cs View File

@@ -1294,7 +1294,7 @@ namespace Discord.WebSocket
case "PRESENCE_UPDATE": case "PRESENCE_UPDATE":
{ {
await _gatewayLogger.DebugAsync("Received Dispatch (PRESENCE_UPDATE)").ConfigureAwait(false); await _gatewayLogger.DebugAsync("Received Dispatch (PRESENCE_UPDATE)").ConfigureAwait(false);
await _gatewayLogger.DebugAsync(payload.ToString());
var data = (payload as JToken).ToObject<API.Presence>(_serializer); var data = (payload as JToken).ToObject<API.Presence>(_serializer);


if (data.GuildId.IsSpecified) if (data.GuildId.IsSpecified)


+ 8
- 0
src/Discord.Net.WebSocket/Extensions/EntityExtensions.cs View File

@@ -4,6 +4,14 @@ namespace Discord.WebSocket
{ {
public static IActivity ToEntity(this API.Game model) public static IActivity ToEntity(this API.Game model)
{ {
// Spotify Game
if (model.SyncId.IsSpecified)
{
return new SpotifyGame()
{
};
}

// Rich Game // Rich Game
if (model.ApplicationId.IsSpecified) if (model.ApplicationId.IsSpecified)
{ {


Loading…
Cancel
Save