using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Newtonsoft.Json; using RestEase; using SharedLibraryCore.Helpers; namespace IW4MAdmin.Application.API.Master { public class AuthenticationId { [JsonProperty("id")] public string Id { get; set; } } public class TokenId { [JsonProperty("access_token")] public string AccessToken { get; set; } } public class VersionInfo { [JsonProperty("current-version-stable")] [JsonConverter(typeof(BuildNumberJsonConverter))] public BuildNumber CurrentVersionStable { get; set; } [JsonProperty("current-version-prerelease")] [JsonConverter(typeof(BuildNumberJsonConverter))] public BuildNumber CurrentVersionPrerelease { get; set; } } public class ResultMessage { [JsonProperty("message")] public string Message { get; set; } } public class Endpoint { #if !DEBUG private static readonly IMasterApi api = RestClient.For("http://api.raidmax.org:5000"); #else private static readonly IMasterApi api = RestClient.For("http://127.0.0.1"); #endif public static IMasterApi Get() => api; } /// /// Defines the capabilities of the master API /// [Header("User-Agent", "IW4MAdmin-RestEase")] public interface IMasterApi { [Header("Authorization")] string AuthorizationToken { get; set; } [Post("authenticate")] Task Authenticate([Body] AuthenticationId Id); [Post("instance/")] [AllowAnyStatusCode] Task> AddInstance([Body] ApiInstance instance); [Put("instance/{id}")] [AllowAnyStatusCode] Task> UpdateInstance([Path] string id, [Body] ApiInstance instance); [Get("version/{apiVersion}")] Task GetVersion([Path] int apiVersion); [Get("localization")] Task> GetLocalization(); [Get("localization/{languageTag}")] Task GetLocalization([Path("languageTag")] string languageTag); } }