Implement temporary file configuration endpoint (#15518)

* Implement temporary file configuration endpoint

* Update MaxfileSize to be a string.

* Make max file size a nullable integer

---------

Co-authored-by: Elitsa <elm@umbraco.dk>
This commit is contained in:
Nikolaj Geisle
2024-01-10 09:20:29 +01:00
committed by GitHub
parent 5f4c8ea0bf
commit a6ccd5a7a9
5 changed files with 79 additions and 1 deletions

View File

@@ -0,0 +1,26 @@
using Asp.Versioning;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Management.Factories;
using Umbraco.Cms.Api.Management.ViewModels.TemporaryFile;
namespace Umbraco.Cms.Api.Management.Controllers.TemporaryFile;
[ApiVersion("1.0")]
public class ConfigurationTemporaryFileController : TemporaryFileControllerBase
{
private readonly ITemporaryFileConfigurationPresentationFactory _temporaryFileConfigurationPresentationFactory;
public ConfigurationTemporaryFileController(
ITemporaryFileConfigurationPresentationFactory temporaryFileConfigurationPresentationFactory) =>
_temporaryFileConfigurationPresentationFactory = temporaryFileConfigurationPresentationFactory;
[HttpGet("configuration")]
[MapToApiVersion("1.0")]
[ProducesResponseType(StatusCodes.Status200OK)]
public Task<IActionResult> Configuration()
{
TemporaryFileConfigurationResponseModel responseModel = _temporaryFileConfigurationPresentationFactory.Create();
return Task.FromResult<IActionResult>(Ok(responseModel));
}
}

View File

@@ -1,4 +1,6 @@
using Umbraco.Cms.Api.Management.Mapping.TemporaryFile;
using Microsoft.Extensions.DependencyInjection;
using Umbraco.Cms.Api.Management.Factories;
using Umbraco.Cms.Api.Management.Mapping.TemporaryFile;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Mapping;
@@ -10,6 +12,7 @@ internal static class TTemporaryFileBuilderExtensions
{
builder.WithCollectionBuilder<MapDefinitionCollectionBuilder>()
.Add<TemporaryFileViewModelsMapDefinition>();
builder.Services.AddTransient<ITemporaryFileConfigurationPresentationFactory, TemporaryFileConfigurationPresentationFactory>();
return builder;
}

View File

@@ -0,0 +1,8 @@
using Umbraco.Cms.Api.Management.ViewModels.TemporaryFile;
namespace Umbraco.Cms.Api.Management.Factories;
public interface ITemporaryFileConfigurationPresentationFactory
{
TemporaryFileConfigurationResponseModel Create();
}

View File

@@ -0,0 +1,29 @@
using Microsoft.Extensions.Options;
using Umbraco.Cms.Api.Management.ViewModels.TemporaryFile;
using Umbraco.Cms.Core.Configuration.Models;
using Umbraco.Cms.Core.Media;
namespace Umbraco.Cms.Api.Management.Factories;
public class TemporaryFileConfigurationPresentationFactory : ITemporaryFileConfigurationPresentationFactory
{
private readonly RuntimeSettings _runtimeSettings;
private readonly IImageUrlGenerator _imageUrlGenerator;
private readonly ContentSettings _contentSettings;
public TemporaryFileConfigurationPresentationFactory(IOptionsSnapshot<ContentSettings> contentSettings, IOptionsSnapshot<RuntimeSettings> runtimeSettings, IImageUrlGenerator imageUrlGenerator)
{
_runtimeSettings = runtimeSettings.Value;
_imageUrlGenerator = imageUrlGenerator;
_contentSettings = contentSettings.Value;
}
public TemporaryFileConfigurationResponseModel Create() =>
new()
{
ImageFileTypes = _imageUrlGenerator.SupportedImageFileTypes.ToArray(),
DisallowedUploadedFilesExtensions = _contentSettings.DisallowedUploadedFileExtensions,
AllowedUploadedFileExtensions = _contentSettings.AllowedUploadedFileExtensions,
MaxFileSize = _runtimeSettings.MaxRequestLength,
};
}

View File

@@ -0,0 +1,12 @@
namespace Umbraco.Cms.Api.Management.ViewModels.TemporaryFile;
public class TemporaryFileConfigurationResponseModel
{
public string[] ImageFileTypes { get; set; } = Array.Empty<string>();
public string[] DisallowedUploadedFilesExtensions { get; set; } = Array.Empty<string>();
public string[] AllowedUploadedFileExtensions { get; set; } = Array.Empty<string>();
public int? MaxFileSize { get; set; }
}