22 lines
1.1 KiB
C#
22 lines
1.1 KiB
C#
using Microsoft.Extensions.Options;
|
|
using TeleWave.Infrastructure.Media;
|
|
|
|
namespace TeleWave.Api.Common;
|
|
|
|
/// <summary>
|
|
/// Лимиты приёма файла, собранные в одно место. Они живут в двух разных секциях конфигурации
|
|
/// (<c>Media</c> и <c>Storage</c>), но проверяются всегда вместе и только на входе загрузки —
|
|
/// хендлеру незачем знать про обе секции и тащить два <see cref="IOptions{T}"/> в сигнатуре.
|
|
/// </summary>
|
|
public sealed class UploadLimits(
|
|
IOptions<MediaOptions> media,
|
|
IOptions<StorageOptions> storage
|
|
)
|
|
{
|
|
/// <summary>Потолок размера загружаемого файла.</summary>
|
|
public long MaxUploadBytes { get; } = media.Value.MaxUploadBytes;
|
|
|
|
/// <summary>Сколько места должно остаться свободным после приёма файла.</summary>
|
|
public long MinFreeSpaceBytes { get; } = storage.Value.MinFreeSpaceBytes;
|
|
}
|