#403 api/ftp methods added

This commit is contained in:
Hamid Reza Mohammadi 2023-07-29 13:51:18 +03:30
parent fa44a626e3
commit 4f605bd3fe
2 changed files with 81 additions and 3 deletions

View File

@ -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
{
/// <summary>
/// queued ftp uploads
/// </summary>
/// <param name="paging"></param>
/// <returns></returns>
[HttpGet]
[Authorize(Policy = RMuseumSecurableItem.QueuedFTPUploadShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK, Type = typeof(IEnumerable<QueuedFTPUpload>))]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> 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);
}
/// <summary>
/// process ftp queue
/// </summary>
/// <returns></returns>
[HttpPost("start")]
[Authorize(Policy = RMuseumSecurableItem.QueuedFTPUploadShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> ProcessQueueAsync()
{
var res = await _ftpService.ProcessQueueAsync();
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok();
}
/// <summary>
/// reset ftp queue
/// </summary>
/// <returns></returns>
[HttpPost("reset")]
[Authorize(Policy = RMuseumSecurableItem.QueuedFTPUploadShortName + ":" + RMuseumSecurableItem.ModerateOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
public async Task<IActionResult> ResetQueueAsync()
{
var res = await _ftpService.ResetQueueAsync();
if (!string.IsNullOrEmpty(res.ExceptionString))
return BadRequest(res.ExceptionString);
return Ok();
}
/// <summary>
/// FTP Service
/// </summary>

View File

@ -787,12 +787,31 @@
donation service
</summary>
</member>
<member name="F:RMuseum.Controllers.ExtenalFTPController._ftpService">
<member name="M:RMuseum.Controllers.ExternalFTPController.GetQueuedFTPUploadsAsync(RSecurityBackend.Models.Generic.PagingParameterModel)">
<summary>
queued ftp uploads
</summary>
<param name="paging"></param>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.ExternalFTPController.ProcessQueueAsync">
<summary>
process ftp queue
</summary>
<returns></returns>
</member>
<member name="M:RMuseum.Controllers.ExternalFTPController.ResetQueueAsync">
<summary>
reset ftp queue
</summary>
<returns></returns>
</member>
<member name="F:RMuseum.Controllers.ExternalFTPController._ftpService">
<summary>
FTP Service
</summary>
</member>
<member name="M:RMuseum.Controllers.ExtenalFTPController.#ctor(RMuseum.Services.IQueuedFTPUploadService)">
<member name="M:RMuseum.Controllers.ExternalFTPController.#ctor(RMuseum.Services.IQueuedFTPUploadService)">
<summary>
constructor
</summary>