using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
using IW4MAdmin.Application.Plugin;
using Refit;
using SharedLibraryCore.Helpers;
namespace IW4MAdmin.Application.API.Master;
public class AuthenticationId
{
[JsonPropertyName("id")] public string Id { get; set; }
}
public class TokenId
{
[JsonPropertyName("access_token")] public string AccessToken { get; set; }
}
public class VersionInfo
{
[JsonPropertyName("current-version-stable")]
[JsonConverter(typeof(BuildNumberJsonConverter))]
public BuildNumber CurrentVersionStable { get; set; }
[JsonPropertyName("current-version-prerelease")]
[JsonConverter(typeof(BuildNumberJsonConverter))]
public BuildNumber CurrentVersionPrerelease { get; set; }
}
public class ResultMessage
{
[JsonPropertyName("message")] public string Message { get; set; }
}
public class PluginSubscriptionContent
{
public string Content { get; set; }
public PluginType Type { get; set; }
}
///
/// Defines the capabilities of the master API
///
[Headers("User-Agent: IW4MAdmin-RestEase")]
public interface IMasterApi
{
[Post("/authenticate")]
Task Authenticate([Body] AuthenticationId Id);
[Post("/instance/")]
Task> AddInstance([Body] ApiInstance instance, [Header("Authorization")] string authorization);
[Put("/instance/{id}")]
Task> UpdateInstance(string id, [Body] ApiInstance instance, [Header("Authorization")] string authorization);
[Get("/version/{apiVersion}")]
Task GetVersion(int apiVersion);
[Get("/localization")]
Task> GetLocalization();
[Get("/localization/{languageTag}")]
Task GetLocalization(string languageTag);
[Get("/plugin_subscriptions")]
Task> GetPluginSubscription([Query] string instance_id,
[Query] string subscription_id);
}