mirror of
https://github.com/4sval/FModel.git
synced 2026-04-04 16:15:52 -05:00
60 lines
2.4 KiB
C#
60 lines
2.4 KiB
C#
using System.IO;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using FModel.ViewModels.ApiEndpoints.Models;
|
|
using RestSharp;
|
|
using Serilog;
|
|
|
|
namespace FModel.ViewModels.ApiEndpoints
|
|
{
|
|
public class BenbotApiEndpoint : AbstractApiProvider
|
|
{
|
|
public BenbotApiEndpoint(IRestClient client) : base(client)
|
|
{
|
|
}
|
|
|
|
public async Task<AesResponse> GetAesKeysAsync(CancellationToken token)
|
|
{
|
|
var request = new RestRequest("https://benbot.app/api/v2/aes", Method.GET)
|
|
{
|
|
OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; }
|
|
};
|
|
var response = await _client.ExecuteAsync<AesResponse>(request, token).ConfigureAwait(false);
|
|
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, request.Resource);
|
|
return response.Data;
|
|
}
|
|
|
|
public AesResponse GetAesKeys(CancellationToken token)
|
|
{
|
|
return GetAesKeysAsync(token).GetAwaiter().GetResult();
|
|
}
|
|
|
|
public async Task<MappingsResponse[]> GetMappingsAsync(CancellationToken token)
|
|
{
|
|
var request = new RestRequest("https://benbot.app/api/v1/mappings", Method.GET)
|
|
{
|
|
OnBeforeDeserialization = resp => { resp.ContentType = "application/json; charset=utf-8"; }
|
|
};
|
|
var response = await _client.ExecuteAsync<MappingsResponse[]>(request, token).ConfigureAwait(false);
|
|
Log.Information("[{Method}] [{Status}({StatusCode})] '{Resource}'", request.Method, response.StatusDescription, (int) response.StatusCode, request.Resource);
|
|
return response.Data;
|
|
}
|
|
|
|
public MappingsResponse[] GetMappings(CancellationToken token)
|
|
{
|
|
return GetMappingsAsync(token).GetAwaiter().GetResult();
|
|
}
|
|
|
|
public async Task DownloadFileAsync(string fileLink, string installationPath)
|
|
{
|
|
var request = new RestRequest(fileLink, Method.GET);
|
|
var data = _client.DownloadData(request);
|
|
await File.WriteAllBytesAsync(installationPath, data);
|
|
}
|
|
|
|
public void DownloadFile(string fileLink, string installationPath)
|
|
{
|
|
DownloadFileAsync(fileLink, installationPath).GetAwaiter().GetResult();
|
|
}
|
|
}
|
|
} |