using System.Threading.Tasks; using Wabbajack.Common; using Wabbajack.Lib.Exceptions; #nullable enable namespace Wabbajack.Lib { public class ClientAPI { public static Common.Http.Client GetClient() { var client = new Common.Http.Client(); if (Utils.HaveEncryptedJson(Consts.MetricsKeyHeader)) client.Headers.Add((Consts.MetricsKeyHeader, Utils.FromEncryptedJson(Consts.MetricsKeyHeader))); return client; } public static async Task GetModUpgrade(Hash hash) { using var response = await GetClient() .GetAsync($"{Consts.WabbajackBuildServerUri}alternative/{hash.ToHex()}"); if (response.IsSuccessStatusCode) { return (await response.Content.ReadAsStringAsync()).FromJsonString(); } Utils.Log($"No Upgrade for {hash}"); Utils.Log(await response.Content.ReadAsStringAsync()); return null; } /// /// Given an archive hash, search the Wabbajack server for a matching .ini file /// /// /// public static async Task GetModIni(Hash hash) { var client = new Common.Http.Client(); try { return await client.GetStringAsync( $"{Consts.WabbajackBuildServerUri}indexed_files/{hash.ToHex()}/meta.ini"); } catch (HttpException) { return null; } } public class NexusCacheStats { public long CachedCount { get; set; } public long ForwardCount { get; set; } public double CacheRatio { get; set; } } public static async Task GetNexusCacheStats() { return await GetClient() .GetJsonAsync($"{Consts.WabbajackBuildServerUri}nexus_cache/stats"); } } }