wabbajack/Wabbajack.Lib/FileUploader/AuthorAPI.cs

78 lines
2.7 KiB
C#
Raw Normal View History

using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Reactive.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Wabbajack.Common;
using Wabbajack.Lib.Downloaders;
using File = Alphaleonis.Win32.Filesystem.File;
using Path = Alphaleonis.Win32.Filesystem.Path;
namespace Wabbajack.Lib.FileUploader
{
public class AuthorAPI
{
public static IObservable<bool> HaveAuthorAPIKey => Utils.HaveEncryptedJsonObservable(Consts.AuthorAPIKeyFile);
2020-04-10 01:29:53 +00:00
public static string? ApiKeyOverride = null;
2020-04-08 04:19:36 +00:00
2020-04-10 01:29:53 +00:00
public static async Task<string> GetAPIKey(string? apiKey = null)
{
2020-04-08 04:19:36 +00:00
if (ApiKeyOverride != null) return ApiKeyOverride;
return apiKey ?? (await Consts.LocalAppDataPath.Combine(Consts.AuthorAPIKeyFile).ReadAllTextAsync()).Trim();
}
2020-05-09 22:16:16 +00:00
2020-06-26 17:08:30 +00:00
public static async Task<Wabbajack.Lib.Http.Client> GetAuthorizedClient(string? apiKey = null)
{
2020-06-26 17:08:30 +00:00
var client = new Wabbajack.Lib.Http.Client();
2020-03-30 20:38:46 +00:00
client.Headers.Add(("X-API-KEY", await GetAPIKey(apiKey)));
return client;
}
public static async Task<string> RunJob(string jobtype)
{
2020-03-25 22:30:43 +00:00
var client = await GetAuthorizedClient();
2020-04-08 04:19:36 +00:00
return await client.GetStringAsync($"{Consts.WabbajackBuildServerUri}jobs/enqueue_job/{jobtype}");
}
public static async Task<string> UpdateNexusCache()
{
return await RunJob("GetNexusUpdatesJob");
}
public static async Task<string> UpdateServerModLists()
{
return await RunJob("UpdateModLists");
}
public static async Task<string> GetServerLog()
{
return await (await GetAuthorizedClient()).GetStringAsync($"{Consts.WabbajackBuildServerUri}heartbeat/logs");
}
public static async Task<IEnumerable<string>> GetMyFiles()
{
return (await (await GetAuthorizedClient()).GetStringAsync($"{Consts.WabbajackBuildServerUri}uploaded_files/list")).FromJsonString<string[]>();
}
public static async Task<string> DeleteFile(string name)
{
2020-03-25 22:30:43 +00:00
var result = await (await GetAuthorizedClient())
.DeleteStringAsync($"{Consts.WabbajackBuildServerUri}uploaded_files/{name}");
return result;
}
public static async Task<string> PurgeNexusModInfo(long modId)
{
return await (await GetAuthorizedClient()).GetStringAsync($"{Consts.WabbajackBuildServerUri}purge_nexus_cache/{modId}");
}
}
}