summary refs log tree commit diff
path: root/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs')
-rw-r--r--extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs84
1 files changed, 84 insertions, 0 deletions
diff --git a/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs b/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs
new file mode 100644

index 00000000..fdb020f4 --- /dev/null +++ b/extra/admin-api/Spacebar.UApi/Controllers/Applications/ApplicationRpcController.cs
@@ -0,0 +1,84 @@ +using System.Text.Json.Serialization; +using ArcaneLibs.Collections; +using Microsoft.AspNetCore.Mvc; + +namespace Spacebar.UApi.Controllers.Applications; + +[ApiController] +[Route("/api/v{_}/applications/{applicationId}/")] +public class ApplicationRpcController : ControllerBase { + private static LruCache<object> _rpcInfoCache = new(10000); + // [HttpGet] + // public async Task<object> GetApplicationRpcInfo(string applicationId) { + // + // } + + [HttpGet("disclosures")] + public ApplicationDisclosures GetApplicationDisclosures(string applicationId) { + return new ApplicationDisclosures { + Disclosures = [], + AckedDisclosures = [], + AllAcked = true + }; + } + + [HttpPost("disclosures")] + public ApplicationDisclosures AckApplicationDisclosures(string applicationId) { + // TODO: type is wrong, normally only `disclosures` is returned + return new ApplicationDisclosures { + Disclosures = [], + AckedDisclosures = [], + AllAcked = true + }; + } +} + +public class ApplicationDisclosures { + [JsonPropertyName("disclosures")] + public List<ApplicationDisclosures.Type> Disclosures { get; set; } + + [JsonPropertyName("acked_disclosures")] + public List<ApplicationDisclosures.Type> AckedDisclosures { get; set; } + + [JsonPropertyName("all_acked")] + public bool AllAcked { get; set; } + + public enum Type { + UnspecifiedDisclosure = 0, + IpLocation = 1, + DisplaysAdvertisements = 2, + PartnerSdkDataSharingMessage = 3 + } +} + +public class RpcApplicationInfo { + [JsonPropertyName("id")] + public string Id { get; set; } + + [JsonPropertyName("name")] + public string Name { get; set; } + + [JsonPropertyName("icon")] + public string Icon { get; set; } + + [JsonPropertyName("description")] + public string Description { get; set; } + + [JsonPropertyName("summary")] + public string Summary { get; set; } + + [JsonPropertyName("type")] + public ApplicationType? Type { get; set; } // what is this? + + [JsonPropertyName("verify_key")] + public string VerifyKey { get; set; } +} + +[Flags] +public enum ApplicationType { + DeprecatedGame, + Music, + TicketedEvents, + CreatorMonetization, + Game +} \ No newline at end of file