@page "/StickerCdnTest"
@using System.Net.Http.Headers
@using Spacebar.Models.AdminApi
@using Spacebar.AdminApi.TestClient.Services
@inject Config Config
StickerCdnTest
@foreach (var sticker in Stickers.OrderBy(x=>x.GuildId).ThenBy(x=>x.Id))
{
|
|
PA: @sticker.IsPixelArt
CA: @sticker.IsCartoonArt
@sticker.Name (ID: @sticker.Id)
|
}
@code {
private List Stickers { get; set; } = new();
protected override async Task OnInitializedAsync()
{
var hc = new HttpClient();
hc.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Config.AccessToken);
var response = await hc.GetAsync(Config.AdminUrl + "/_spacebar/admin/media/sticker/");
if (!response.IsSuccessStatusCode) throw new Exception(await response.Content.ReadAsStringAsync());
var content = response.Content.ReadFromJsonAsAsyncEnumerable();
var tasks = new List();
var ss = new SemaphoreSlim(4, 4);
await foreach (var sticker in content) {
await ss.WaitAsync();
tasks.Add(Task.Run(async () => {
var isPixelArtTask = hc.GetFromJsonAsync($"{Config.CdnUrl}/isPixelArt/stickers/{sticker.Id}.gif");
var isCartoonArtTask = hc.GetFromJsonAsync($"{Config.CdnUrl}/isPixelArt/stickers/{sticker.Id}.gif");
sticker.IsPixelArt = await isPixelArtTask;
sticker.IsCartoonArt = await isCartoonArtTask;
Console.WriteLine($"Sticker: {sticker!.Id} - {sticker.Name}, PixelArt: {sticker.IsPixelArt}, CartoonArt: {sticker.IsCartoonArt}");
Stickers.Add(sticker!);
StateHasChanged();
ss.Release();
}));
}
await Task.WhenAll(tasks);
StateHasChanged();
}
private class Sticker : StickerModel {
public bool IsPixelArt { get; set; }
public bool IsCartoonArt { get; set; }
}
}