38 lines
1011 B
C#
38 lines
1011 B
C#
using Hutopy.Web.Common.BlobStorage;
|
|
using Hutopy.Web.Features.Users.Data;
|
|
|
|
namespace Hutopy.Web.Features.Users.Handlers;
|
|
|
|
[PublicAPI]
|
|
public class GetCurrentUserPortraitHandler(
|
|
IdentityService identityService,
|
|
AzureBlobStorage blobStorage
|
|
)
|
|
: EndpointWithoutRequest<Stream>
|
|
{
|
|
public override void Configure()
|
|
{
|
|
Get("/api/users/portrait");
|
|
Options(o => o.WithTags("Users"));
|
|
}
|
|
|
|
public override async Task HandleAsync(
|
|
CancellationToken cancellationToken)
|
|
{
|
|
var identityUser = await identityService.GetCurrentUserAsync();
|
|
|
|
if (identityUser is null)
|
|
{
|
|
await SendNotFoundAsync(cancellationToken);
|
|
return;
|
|
}
|
|
|
|
var stream = await blobStorage.DownloadFileAsync(
|
|
ContainerNames.Users,
|
|
$"{identityUser.Id.ToString()}/{SubDirectoryNames.Profile}/{CommonFileNames.ProfilePicture}",
|
|
cancellationToken);
|
|
|
|
await SendOkAsync(stream, cancellationToken);
|
|
}
|
|
}
|