Make "create folder" return HTTP 201 Created for file system folders (#15459)

* Make "create folder" return 201 and add expected return types to "create" and "delete" for all file system folder endpoints

* Update OpenApi.json
This commit is contained in:
Kenn Jacobsen
2023-12-18 11:01:53 +01:00
committed by GitHub
parent 32cecbe14f
commit c2b970d0de
8 changed files with 329 additions and 29 deletions

View File

@@ -2,21 +2,33 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Umbraco.Cms.Api.Management.ViewModels.Folder;
using Umbraco.Cms.Core;
using Umbraco.Cms.Core.Mapping;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Services;
using Umbraco.Cms.Core.Services.OperationStatus;
namespace Umbraco.Cms.Api.Management.Controllers.Stylesheet.Folder;
[ApiVersion("1.0")]
public class CreateStylesheetFolderController : StylesheetFolderControllerBase
{
public CreateStylesheetFolderController(IUmbracoMapper mapper, IStylesheetFolderService stylesheetFolderService) : base(mapper, stylesheetFolderService)
public CreateStylesheetFolderController(IUmbracoMapper mapper, IStylesheetFolderService stylesheetFolderService)
: base(mapper, stylesheetFolderService)
{
}
[HttpPost]
[MapToApiVersion("1.0")]
[ProducesResponseType(StatusCodes.Status200OK)]
public Task<IActionResult> Create(CreatePathFolderRequestModel model) => CreateAsync(model);
[ProducesResponseType(StatusCodes.Status201Created)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
public async Task<IActionResult> Create(CreatePathFolderRequestModel model)
{
Attempt<PathContainer?, StylesheetFolderOperationStatus> result = await CreateAsync(model);
return result.Success
? CreatedAtAction<ByPathStylesheetFolderController>(controller => nameof(controller.ByPath), new { path = result.Result!.Path })
: OperationStatusResult(result.Status);
}
}

View File

@@ -9,12 +9,15 @@ namespace Umbraco.Cms.Api.Management.Controllers.Stylesheet.Folder;
[ApiVersion("1.0")]
public class DeleteStylesheetFolderController : StylesheetFolderControllerBase
{
public DeleteStylesheetFolderController(IUmbracoMapper mapper, IStylesheetFolderService stylesheetFolderService) : base(mapper, stylesheetFolderService)
public DeleteStylesheetFolderController(IUmbracoMapper mapper, IStylesheetFolderService stylesheetFolderService)
: base(mapper, stylesheetFolderService)
{
}
[HttpDelete]
[MapToApiVersion("1.0")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status400BadRequest)]
[ProducesResponseType(typeof(ProblemDetails), StatusCodes.Status404NotFound)]
public Task<IActionResult> Delete(string path) => DeleteAsync(path);
}