feat: add support for external avatar hosting service (#614)

This commit is contained in:
Astrid 2024-02-11 03:53:46 +01:00 committed by GitHub
parent 8befb1c857
commit 8157c6932e
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 94 additions and 5 deletions

View file

@ -18,12 +18,14 @@ public class SystemEdit
private readonly HttpClient _client;
private readonly DataFileService _dataFiles;
private readonly PrivateChannelService _dmCache;
private readonly AvatarHostingService _avatarHosting;
public SystemEdit(DataFileService dataFiles, HttpClient client, PrivateChannelService dmCache)
public SystemEdit(DataFileService dataFiles, HttpClient client, PrivateChannelService dmCache, AvatarHostingService avatarHosting)
{
_dataFiles = dataFiles;
_client = client;
_dmCache = dmCache;
_avatarHosting = avatarHosting;
}
public async Task Name(Context ctx, PKSystem target)
@ -473,6 +475,7 @@ public class SystemEdit
{
ctx.CheckOwnSystem(target);
img = await _avatarHosting.TryRehostImage(img, AvatarHostingService.RehostedImageType.Avatar, ctx.Author.Id);
await AvatarUtils.VerifyAvatarOrThrow(_client, img.Url);
await ctx.Repository.UpdateSystem(target.Id, new SystemPatch { AvatarUrl = img.CleanUrl ?? img.Url });
@ -541,6 +544,7 @@ public class SystemEdit
{
ctx.CheckOwnSystem(target);
img = await _avatarHosting.TryRehostImage(img, AvatarHostingService.RehostedImageType.Avatar, ctx.Author.Id);
await AvatarUtils.VerifyAvatarOrThrow(_client, img.Url);
await ctx.Repository.UpdateSystemGuild(target.Id, ctx.Guild.Id, new SystemGuildPatch { AvatarUrl = img.CleanUrl ?? img.Url });
@ -638,6 +642,7 @@ public class SystemEdit
else if (await ctx.MatchImage() is { } img)
{
img = await _avatarHosting.TryRehostImage(img, AvatarHostingService.RehostedImageType.Banner, ctx.Author.Id);
await AvatarUtils.VerifyAvatarOrThrow(_client, img.Url, true);
await ctx.Repository.UpdateSystem(target.Id, new SystemPatch { BannerImage = img.CleanUrl ?? img.Url });