using File.Application.Features.Shares.Commands;
using File.Application.Features.Shares.DTOs;
using MediatR;
namespace BuildFlow.Host.Endpoints.file.Shares;
/// 创建分享链接端点。POST /api/share。
[Authorize]
///
/// undefined
///
public class CreateShareEndpoint(IMediator mediator) : Endpoint
{
public override void Configure()
{
Post("/share");
}
public override async Task HandleAsync(CreateShareRequest req, CancellationToken ct)
{
var expiresAt = string.IsNullOrEmpty(req.ExpiresAt)
? (DateTime?)null
: DateTime.Parse(req.ExpiresAt, null, System.Globalization.DateTimeStyles.RoundtripKind);
var result = await mediator.Send(new CreateShareCommand(req.ResourceType,
Guid.Parse(req.ResourceId), req.Password, expiresAt, req.MaxDownloads), ct);
await Send.OkAsync(result, ct);
}
}