From ae541f56368dbff39a62fe278a96bd2bed27f12e Mon Sep 17 00:00:00 2001 From: Bjarne Fyrstenborg Date: Mon, 11 Mar 2024 09:56:32 +0100 Subject: [PATCH] Webhook paged results (#15802) * Add controller to fetch paged results of webhooks * Return OK directly * Fix total * Update all languages --- .../Language/AllLanguageController.cs | 5 ++- .../Webhook/AllWebhookController.cs | 39 +++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 src/Umbraco.Cms.Api.Management/Controllers/Webhook/AllWebhookController.cs diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Language/AllLanguageController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Language/AllLanguageController.cs index 4bb96d3694..acbd3ae3f2 100644 --- a/src/Umbraco.Cms.Api.Management/Controllers/Language/AllLanguageController.cs +++ b/src/Umbraco.Cms.Api.Management/Controllers/Language/AllLanguageController.cs @@ -26,13 +26,14 @@ public class AllLanguageController : LanguageControllerBase [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] public async Task>> All(int skip = 0, int take = 100) { - ILanguage[] allLanguages = (await _languageService.GetAllAsync()).ToArray(); + IEnumerable result = await _languageService.GetAllAsync(); + ILanguage[] allLanguages = result.ToArray(); var viewModel = new PagedViewModel { Total = allLanguages.Length, Items = _umbracoMapper.MapEnumerable(allLanguages.Skip(skip).Take(take)) }; - return await Task.FromResult(Ok(viewModel)); + return Ok(viewModel); } } diff --git a/src/Umbraco.Cms.Api.Management/Controllers/Webhook/AllWebhookController.cs b/src/Umbraco.Cms.Api.Management/Controllers/Webhook/AllWebhookController.cs new file mode 100644 index 0000000000..f6cf4254a3 --- /dev/null +++ b/src/Umbraco.Cms.Api.Management/Controllers/Webhook/AllWebhookController.cs @@ -0,0 +1,39 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Api.Common.ViewModels.Pagination; +using Umbraco.Cms.Api.Management.ViewModels.Webhook; +using Umbraco.Cms.Core.Mapping; +using Umbraco.Cms.Core.Models; +using Umbraco.Cms.Core.Services; + +namespace Umbraco.Cms.Api.Management.Controllers.Webhook; + +[ApiVersion("1.0")] +public class AllWebhookController : WebhookControllerBase +{ + private readonly IWebhookService _webhookService; + private readonly IUmbracoMapper _umbracoMapper; + + public AllWebhookController(IWebhookService webhookService, IUmbracoMapper umbracoMapper) + { + _webhookService = webhookService; + _umbracoMapper = umbracoMapper; + } + + [HttpGet] + [MapToApiVersion("1.0")] + [ProducesResponseType(typeof(PagedViewModel), StatusCodes.Status200OK)] + public async Task>> All(int skip = 0, int take = 100) + { + PagedModel result = await _webhookService.GetAllAsync(skip, take); + IWebhook[] webhooks = result.Items.ToArray(); + var viewModel = new PagedViewModel + { + Total = result.Total, + Items = _umbracoMapper.MapEnumerable(webhooks) + }; + + return Ok(viewModel); + } +}