mirror of
https://github.com/RPCS3/discord-bot.git
synced 2025-01-31 15:33:44 +00:00
63 lines
2.1 KiB
C#
63 lines
2.1 KiB
C#
using System;
|
|
using System.Net.Http;
|
|
using System.Net.Http.Json;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using CompatApiClient;
|
|
using CompatApiClient.Compression;
|
|
using CompatApiClient.Utils;
|
|
using System.Text.Json;
|
|
using System.Text.Json.Serialization;
|
|
using CompatApiClient.Formatters;
|
|
using YandexDiskClient.POCOs;
|
|
|
|
namespace YandexDiskClient;
|
|
|
|
public sealed class Client
|
|
{
|
|
private readonly HttpClient client;
|
|
private readonly JsonSerializerOptions jsonOptions;
|
|
|
|
public Client()
|
|
{
|
|
client = HttpClientFactory.Create(new CompressionMessageHandler());
|
|
jsonOptions = new()
|
|
{
|
|
PropertyNamingPolicy = SpecialJsonNamingPolicy.SnakeCase,
|
|
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
|
IncludeFields = true,
|
|
};
|
|
}
|
|
|
|
public Task<ResourceInfo?> GetResourceInfoAsync(string shareKey, CancellationToken cancellationToken)
|
|
=> GetResourceInfoAsync(new Uri($"https://yadi.sk/d/{shareKey}"), cancellationToken);
|
|
|
|
public async Task<ResourceInfo?> GetResourceInfoAsync(Uri publicUri, CancellationToken cancellationToken)
|
|
{
|
|
try
|
|
{
|
|
var uri = new Uri("https://cloud-api.yandex.net/v1/disk/public/resources").SetQueryParameters(
|
|
("public_key", publicUri.ToString()),
|
|
("fields", "size,name,file")
|
|
);
|
|
using var message = new HttpRequestMessage(HttpMethod.Get, uri);
|
|
message.Headers.UserAgent.Add(ApiConfig.ProductInfoHeader);
|
|
using var response = await client.SendAsync(message, cancellationToken).ConfigureAwait(false);
|
|
try
|
|
{
|
|
await response.Content.LoadIntoBufferAsync().ConfigureAwait(false);
|
|
return await response.Content.ReadFromJsonAsync<ResourceInfo>(jsonOptions, cancellationToken).ConfigureAwait(false);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
ConsoleLogger.PrintError(e, response);
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
ApiConfig.Log.Error(e);
|
|
}
|
|
return null;
|
|
}
|
|
|
|
} |