From 4f605bd3fee925d1dd0fed6223d1611c12884618 Mon Sep 17 00:00:00 2001 From: Hamid Reza Mohammadi Date: Sat, 29 Jul 2023 13:51:18 +0330 Subject: [PATCH] #403 api/ftp methods added --- RMuseum/Controllers/ExternalFTPController.cs | 61 +++++++++++++++++++- RMuseum/RMuseum.xml | 23 +++++++- 2 files changed, 81 insertions(+), 3 deletions(-) diff --git a/RMuseum/Controllers/ExternalFTPController.cs b/RMuseum/Controllers/ExternalFTPController.cs index c8a896e8..952c90ae 100644 --- a/RMuseum/Controllers/ExternalFTPController.cs +++ b/RMuseum/Controllers/ExternalFTPController.cs @@ -4,7 +4,10 @@ using RMuseum.Models.Auth.Memory; using RMuseum.Services; using System.Net; using System.Threading.Tasks; -using RMuseum.Models.FAQ; +using System.Collections.Generic; +using RMuseum.Models.ExternalFTPUpload; +using RSecurityBackend.Models.Generic; +using Newtonsoft.Json; namespace RMuseum.Controllers { @@ -12,6 +15,62 @@ namespace RMuseum.Controllers [Route("api/ftp")] public class ExternalFTPController : Controller { + /// + /// queued ftp uploads + /// + /// + /// + [HttpGet] + [Authorize(Policy = RMuseumSecurableItem.QueuedFTPUploadShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)] + [ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable))] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task GetQueuedFTPUploadsAsync([FromQuery] PagingParameterModel paging) + { + + RServiceResult<(PaginationMetadata PagingMeta, QueuedFTPUpload[] Items)> itemsInfo = await _ftpService.GetQueuedFTPUploadsAsync(paging); + if (!string.IsNullOrEmpty(itemsInfo.ExceptionString)) + { + return BadRequest(itemsInfo.ExceptionString); + } + + // Paging Header + HttpContext.Response.Headers.Add("paging-headers", JsonConvert.SerializeObject(itemsInfo.Result.PagingMeta)); + + return Ok(itemsInfo.Result.Items); + } + + /// + /// process ftp queue + /// + /// + [HttpPost("start")] + [Authorize(Policy = RMuseumSecurableItem.QueuedFTPUploadShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)] + [ProducesResponseType((int)HttpStatusCode.OK)] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task ProcessQueueAsync() + { + var res = await _ftpService.ProcessQueueAsync(); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + return Ok(); + } + + /// + /// reset ftp queue + /// + /// + [HttpPost("reset")] + [Authorize(Policy = RMuseumSecurableItem.QueuedFTPUploadShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)] + [ProducesResponseType((int)HttpStatusCode.OK)] + [ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))] + public async Task ResetQueueAsync() + { + var res = await _ftpService.ResetQueueAsync(); + if (!string.IsNullOrEmpty(res.ExceptionString)) + return BadRequest(res.ExceptionString); + return Ok(); + } + /// /// FTP Service /// diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml index 2eccd0d9..44849ea5 100644 --- a/RMuseum/RMuseum.xml +++ b/RMuseum/RMuseum.xml @@ -787,12 +787,31 @@ donation service - + + + queued ftp uploads + + + + + + + process ftp queue + + + + + + reset ftp queue + + + + FTP Service - + constructor