Files: MoveOrCopyBatchCheckFromBody is now GET

This commit is contained in:
pavelbannov 2021-09-28 11:57:03 +03:00
parent acded72c12
commit 39a1d433da
2 changed files with 79 additions and 14 deletions

View File

@ -1,9 +1,13 @@
using System.Collections.Generic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using ASC.Api.Collections;
using ASC.Web.Files.Services.WCFService.FileOperations;
using Microsoft.AspNetCore.Http;
namespace ASC.Files.Model
{
public class BaseBatchModel<T>
@ -43,5 +47,73 @@ namespace ASC.Files.Model
public JsonElement DestFolderId { get; set; }
public FileConflictResolveType ConflictResolveType { get; set; }
public bool DeleteAfter { get; set; }
public static BatchModel FromQuery(HttpContext httpContext)
{
var result = new BatchModel();
var query = httpContext.Request.Query;
var destId = query["DestFolderId"];
if (destId.Any())
{
result.DestFolderId = ParseQueryParam(destId.First());
}
var conflictResolveType = query["ConflictResolveType"];
if (conflictResolveType.Any())
{
if (Enum.TryParse<FileConflictResolveType>(conflictResolveType.First(), out var crf))
{
result.ConflictResolveType = crf;
}
}
var deleteAfter = query["DeleteAfter"];
if (deleteAfter.Any())
{
if (bool.TryParse(deleteAfter.First(), out var d))
{
result.DeleteAfter = d;
}
}
var fileIdsQuery = query["FileIds"];
if (fileIdsQuery.Any())
{
var fileIds = new List<JsonElement>();
foreach (var f in fileIdsQuery)
{
fileIds.Add(ParseQueryParam(f));
}
result.FileIds = fileIds;
}
var folderIdsQuery = query["FolderIds"];
if (folderIdsQuery.Any())
{
var folderIds = new List<JsonElement>();
foreach (var f in folderIdsQuery)
{
folderIds.Add(ParseQueryParam(f));
}
result.FolderIds = folderIds;
}
return result;
}
public static JsonElement ParseQueryParam(string data)
{
if (int.TryParse(data, out _))
{
return JsonSerializer.Deserialize<JsonElement>(data);
}
return JsonSerializer.Deserialize<JsonElement>($"\"{data}\"");
}
}
}

View File

@ -1229,17 +1229,10 @@ namespace ASC.Api.Documents
/// <param name="folderIds">Folder ID list</param>
/// <param name="fileIds">File ID list</param>
/// <returns>Conflicts file ids</returns>
[Create("fileops/move")]
public IEnumerable<FileEntryWrapper> MoveOrCopyBatchCheckFromBody([FromBody] BatchModel batchModel)
[Read("fileops/move")]
public IEnumerable<FileEntryWrapper> MoveOrCopyBatchCheck()
{
return FilesControllerHelperString.MoveOrCopyBatchCheck(batchModel);
}
[Create("fileops/move")]
[Consumes("application/x-www-form-urlencoded")]
public IEnumerable<FileEntryWrapper> MoveOrCopyBatchCheckFromForm([FromForm] BatchModel batchModel)
{
return FilesControllerHelperString.MoveOrCopyBatchCheck(batchModel);
return FilesControllerHelperString.MoveOrCopyBatchCheck(BatchModel.FromQuery(HttpContext));
}
/// <summary>