summary refs log tree commit diff
path: root/extra/admin-api/Models/Spacebar.Models.Generic/PresenceResponse.cs
diff options
context:
space:
mode:
Diffstat (limited to 'extra/admin-api/Models/Spacebar.Models.Generic/PresenceResponse.cs')
-rw-r--r--extra/admin-api/Models/Spacebar.Models.Generic/PresenceResponse.cs57
1 files changed, 57 insertions, 0 deletions
diff --git a/extra/admin-api/Models/Spacebar.Models.Generic/PresenceResponse.cs b/extra/admin-api/Models/Spacebar.Models.Generic/PresenceResponse.cs
new file mode 100644

index 000000000..97dcf21c4 --- /dev/null +++ b/extra/admin-api/Models/Spacebar.Models.Generic/PresenceResponse.cs
@@ -0,0 +1,57 @@ +using System.Diagnostics.CodeAnalysis; +using System.Text.Json.Nodes; +using System.Text.Json.Serialization; +using Spacebar.Models.Generic; + +namespace Spacebar.Models.Generic; + +public class Presence { + [JsonPropertyName("user")] + public required PartialUser User { get; set; } + + [JsonPropertyName("guild_id"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? GuildId { get; set; } + + [JsonPropertyName("status")] + public string Status { get; set; } = "unknown"; + + // TODO + [JsonPropertyName("activities")] + public List<JsonObject> Activities { get; set; } + + // TODO + [JsonPropertyName("hidden_activities")] + public List<JsonObject> HiddenActivities { get; set; } + + [JsonPropertyName("client_status")] + public ClientStatuses ClientStatus { get; set; } + + [JsonPropertyName("has_played_game")] + public bool? HasPlayedGame { get; set; } + + // Unsure if this is used outside of op14 + [JsonPropertyName("game")] + public JsonObject? Game { get; set; } + + // Unsure if used outside of op14 + [JsonPropertyName("processed_at_timestamp")] + public ulong? ProcessedAtTimestamp { get; set; } + + [SuppressMessage("ReSharper", "UnusedMember.Local")] + public class ClientStatuses { + [JsonPropertyName("desktop"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Desktop { get; set; } + + [JsonPropertyName("mobile"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Mobile { get; set; } + + [JsonPropertyName("web"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Web { get; set; } + + [JsonPropertyName("embedded"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Embedded { get; set; } + + [JsonPropertyName("vr"), JsonIgnore(Condition = JsonIgnoreCondition.WhenWritingNull)] + public string? Vr { get; set; } + } +} \ No newline at end of file