using System.Threading.Tasks; using Wabbajack.Common; using Wabbajack.Lib.Exceptions; 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($"https://{Consts.WabbajackCacheHostname}/alternative/{hash.ToHex()}"); return !response.IsSuccessStatusCode ? null : (await response.Content.ReadAsStringAsync()).FromJSONString(); } /// /// 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"); } } }