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); } }