Merge branch 'master' into feature/files
This commit is contained in:
commit
99e641bb2f
@ -31,8 +31,8 @@
|
||||
<PackageReference Include="Autofac" Version="5.2.0" />
|
||||
<PackageReference Include="Autofac.Configuration" Version="5.1.0" />
|
||||
<PackageReference Include="Autofac.Extensions.DependencyInjection" Version="6.0.0" />
|
||||
<PackageReference Include="Confluent.Kafka" Version="1.3.0" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.11.4" />
|
||||
<PackageReference Include="Confluent.Kafka" Version="1.4.3" />
|
||||
<PackageReference Include="Google.Protobuf" Version="3.12.2" />
|
||||
<PackageReference Include="Grpc" Version="2.27.0" />
|
||||
<PackageReference Include="Grpc.Tools" Version="2.27.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
@ -58,7 +58,7 @@
|
||||
</PackageReference> -->
|
||||
<PackageReference Include="MySql.Data" Version="8.0.20" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
|
||||
<PackageReference Include="NLog" Version="4.7.1" />
|
||||
<PackageReference Include="NLog" Version="4.7.2" />
|
||||
<PackageReference Include="NLog.Web.AspNetCore" Version="4.9.2" />
|
||||
<PackageReference Include="NUnit" Version="3.12.0" />
|
||||
<PackageReference Include="NVelocity" Version="1.2.0" />
|
||||
|
@ -43,10 +43,10 @@
|
||||
<None Remove="protos\UserPhotoCacheItem.proto" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="AWSSDK.CloudFront" Version="3.3.101.146" />
|
||||
<PackageReference Include="AWSSDK.Core" Version="3.3.106.24" />
|
||||
<PackageReference Include="AWSSDK.S3" Version="3.3.110.70" />
|
||||
<PackageReference Include="AWSSDK.SimpleEmail" Version="3.3.101.150" />
|
||||
<PackageReference Include="AWSSDK.CloudFront" Version="3.3.101.153" />
|
||||
<PackageReference Include="AWSSDK.Core" Version="3.3.107.3" />
|
||||
<PackageReference Include="AWSSDK.S3" Version="3.3.111.4" />
|
||||
<PackageReference Include="AWSSDK.SimpleEmail" Version="3.3.101.157" />
|
||||
<PackageReference Include="Grpc.Tools" Version="2.27.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
|
@ -90,7 +90,35 @@ namespace ASC.Core
|
||||
}
|
||||
|
||||
public class TenantManager
|
||||
{
|
||||
{
|
||||
private class TenantHolder
|
||||
{
|
||||
public Tenant Tenant;
|
||||
}
|
||||
|
||||
private static readonly AsyncLocal<TenantHolder> currentTenant = new AsyncLocal<TenantHolder>();
|
||||
|
||||
public Tenant CurrentTenant
|
||||
{
|
||||
get
|
||||
{
|
||||
return currentTenant.Value?.Tenant;
|
||||
}
|
||||
set
|
||||
{
|
||||
var holder = currentTenant.Value;
|
||||
if (holder != null)
|
||||
{
|
||||
holder.Tenant = null;
|
||||
}
|
||||
|
||||
if (value != null)
|
||||
{
|
||||
currentTenant.Value = new TenantHolder { Tenant = value };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public const string CURRENT_TENANT = "CURRENT_TENANT";
|
||||
internal ITenantService TenantService { get; set; }
|
||||
internal IQuotaService QuotaService { get; set; }
|
||||
@ -101,8 +129,6 @@ namespace ASC.Core
|
||||
internal IHttpContextAccessor HttpContextAccessor { get; set; }
|
||||
internal CoreBaseSettings CoreBaseSettings { get; set; }
|
||||
internal CoreSettings CoreSettings { get; set; }
|
||||
|
||||
public Tenant CurrentTenant { get; set; }
|
||||
|
||||
static TenantManager()
|
||||
{
|
||||
@ -248,6 +274,9 @@ namespace ASC.Core
|
||||
{
|
||||
throw new Exception("Could not resolve current tenant :-(.");
|
||||
}
|
||||
|
||||
CurrentTenant = tenant;
|
||||
|
||||
return tenant;
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,6 @@
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
using ASC.Common;
|
||||
using ASC.Common.Threading.Progress;
|
||||
@ -34,14 +33,15 @@ using ASC.Core.Users;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Data.Reassigns
|
||||
{
|
||||
public class QueueWorker
|
||||
{
|
||||
public static Dictionary<string, string> GetHttpHeaders(HttpRequest httpRequest)
|
||||
public static IDictionary<string, StringValues> GetHttpHeaders(HttpRequest httpRequest)
|
||||
{
|
||||
return httpRequest?.Headers.Keys.ToDictionary(key => key, key => httpRequest.Headers[key].ToString());
|
||||
return httpRequest?.Headers;
|
||||
}
|
||||
}
|
||||
public class QueueWorker<T> where T : class, IProgressItem
|
||||
|
@ -44,13 +44,14 @@ using ASC.Web.Studio.Core.Notify;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Data.Reassigns
|
||||
{
|
||||
public class ReassignProgressItem : IProgressItem
|
||||
{
|
||||
private readonly HttpContext _context;
|
||||
private readonly Dictionary<string, string> _httpHeaders;
|
||||
private readonly IDictionary<string, StringValues> _httpHeaders;
|
||||
|
||||
private readonly int _tenantId;
|
||||
private readonly Guid _currentUserId;
|
||||
|
@ -46,12 +46,13 @@ using ASC.Web.Studio.Core.Notify;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Data.Reassigns
|
||||
{
|
||||
public class RemoveProgressItem : IProgressItem
|
||||
{
|
||||
private readonly Dictionary<string, string> _httpHeaders;
|
||||
private readonly IDictionary<string, StringValues> _httpHeaders;
|
||||
|
||||
private readonly int _tenantId;
|
||||
private readonly Guid _currentUserId;
|
||||
|
@ -22,10 +22,10 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Google.Api.Gax" Version="2.10.0" />
|
||||
<PackageReference Include="Google.Api.Gax.Rest" Version="2.10.0" />
|
||||
<PackageReference Include="Google.Apis" Version="1.43.0" />
|
||||
<PackageReference Include="Google.Apis.Auth" Version="1.43.0" />
|
||||
<PackageReference Include="Google.Apis.Core" Version="1.43.0" />
|
||||
<PackageReference Include="Google.Apis.Storage.v1" Version="1.43.0.1791" />
|
||||
<PackageReference Include="Google.Apis" Version="1.45.0" />
|
||||
<PackageReference Include="Google.Apis.Auth" Version="1.45.0" />
|
||||
<PackageReference Include="Google.Apis.Core" Version="1.45.0" />
|
||||
<PackageReference Include="Google.Apis.Storage.v1" Version="1.45.0.1964" />
|
||||
<PackageReference Include="Google.Cloud.Storage.V1" Version="2.5.0" />
|
||||
<PackageReference Include="Grpc.Tools" Version="2.27.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
|
@ -35,6 +35,7 @@ using ASC.Core;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.MessagingSystem
|
||||
{
|
||||
@ -81,7 +82,7 @@ namespace ASC.MessagingSystem
|
||||
}
|
||||
}
|
||||
|
||||
public EventMessage Create(MessageUserData userData, Dictionary<string, string> headers, MessageAction action, MessageTarget target, params string[] description)
|
||||
public EventMessage Create(MessageUserData userData, IDictionary<string, StringValues> headers, MessageAction action, MessageTarget target, params string[] description)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -97,10 +98,10 @@ namespace ASC.MessagingSystem
|
||||
|
||||
if (headers != null)
|
||||
{
|
||||
var userAgent = headers.ContainsKey(userAgentHeader) ? headers[userAgentHeader] : null;
|
||||
var forwarded = headers.ContainsKey(forwardedHeader) ? headers[forwardedHeader] : null;
|
||||
var host = headers.ContainsKey(hostHeader) ? headers[hostHeader] : null;
|
||||
var referer = headers.ContainsKey(refererHeader) ? headers[refererHeader] : null;
|
||||
var userAgent = headers.ContainsKey(userAgentHeader) ? headers[userAgentHeader].ToString() : null;
|
||||
var forwarded = headers.ContainsKey(forwardedHeader) ? headers[forwardedHeader].ToString() : null;
|
||||
var host = headers.ContainsKey(hostHeader) ? headers[hostHeader].ToString() : null;
|
||||
var referer = headers.ContainsKey(refererHeader) ? headers[refererHeader].ToString() : null;
|
||||
|
||||
message.IP = forwarded ?? host;
|
||||
message.UAHeader = userAgent;
|
||||
|
@ -34,6 +34,7 @@ using ASC.MessagingSystem.DbSender;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.MessagingSystem
|
||||
{
|
||||
@ -212,27 +213,27 @@ namespace ASC.MessagingSystem
|
||||
|
||||
#region HttpHeaders
|
||||
|
||||
public void Send(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action)
|
||||
public void Send(MessageUserData userData, IDictionary<string, StringValues> httpHeaders, MessageAction action)
|
||||
{
|
||||
SendHeadersMessage(userData, httpHeaders, action, null);
|
||||
}
|
||||
|
||||
public void Send(Dictionary<string, string> httpHeaders, MessageAction action)
|
||||
public void Send(IDictionary<string, StringValues> httpHeaders, MessageAction action)
|
||||
{
|
||||
SendHeadersMessage(null, httpHeaders, action, null);
|
||||
}
|
||||
|
||||
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, string d1)
|
||||
public void Send(IDictionary<string, StringValues> httpHeaders, MessageAction action, string d1)
|
||||
{
|
||||
SendHeadersMessage(null, httpHeaders, action, null, d1);
|
||||
}
|
||||
|
||||
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, IEnumerable<string> d1)
|
||||
public void Send(IDictionary<string, StringValues> httpHeaders, MessageAction action, IEnumerable<string> d1)
|
||||
{
|
||||
SendHeadersMessage(null, httpHeaders, action, null, d1?.ToArray());
|
||||
}
|
||||
|
||||
public void Send(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target)
|
||||
public void Send(MessageUserData userData, IDictionary<string, StringValues> httpHeaders, MessageAction action, MessageTarget target)
|
||||
{
|
||||
SendHeadersMessage(userData, httpHeaders, action, target);
|
||||
}
|
||||
@ -241,24 +242,24 @@ namespace ASC.MessagingSystem
|
||||
|
||||
#region HttpHeaders & Target
|
||||
|
||||
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target)
|
||||
public void Send(IDictionary<string, StringValues> httpHeaders, MessageAction action, MessageTarget target)
|
||||
{
|
||||
SendHeadersMessage(null, httpHeaders, action, target);
|
||||
}
|
||||
|
||||
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, string d1)
|
||||
public void Send(IDictionary<string, StringValues> httpHeaders, MessageAction action, MessageTarget target, string d1)
|
||||
{
|
||||
SendHeadersMessage(null, httpHeaders, action, target, d1);
|
||||
}
|
||||
|
||||
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, IEnumerable<string> d1)
|
||||
public void Send(IDictionary<string, StringValues> httpHeaders, MessageAction action, MessageTarget target, IEnumerable<string> d1)
|
||||
{
|
||||
SendHeadersMessage(null, httpHeaders, action, target, d1?.ToArray());
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private void SendHeadersMessage(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, params string[] description)
|
||||
private void SendHeadersMessage(MessageUserData userData, IDictionary<string, StringValues> httpHeaders, MessageAction action, MessageTarget target, params string[] description)
|
||||
{
|
||||
if (sender == null) return;
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CommandLineParser" Version="2.7.82" />
|
||||
<PackageReference Include="CommandLineParser" Version="2.8.0" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration" Version="3.1.4" />
|
||||
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="3.1.4" />
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="3.1.4" />
|
||||
|
@ -22,12 +22,12 @@
|
||||
<None Remove="protos\SearchItem.proto" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Elasticsearch.Net" Version="7.6.1" />
|
||||
<PackageReference Include="Elasticsearch.Net" Version="7.7.1" />
|
||||
<PackageReference Include="Grpc.Tools" Version="2.27.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="NEST" Version="7.6.1" />
|
||||
<PackageReference Include="NEST" Version="7.7.1" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\ASC.Common\ASC.Common.csproj" />
|
||||
|
@ -27,11 +27,11 @@
|
||||
<None Remove="proto\SharePointProviderCacheItem.proto" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Box.V2.Core" Version="3.22.0" />
|
||||
<PackageReference Include="DocuSign.eSign.dll" Version="4.3.0" />
|
||||
<PackageReference Include="DotNetZip" Version="1.13.7" />
|
||||
<PackageReference Include="Dropbox.Api" Version="4.9.4" />
|
||||
<PackageReference Include="Google.Apis.Drive.v3" Version="1.44.1.1876" />
|
||||
<PackageReference Include="Box.V2.Core" Version="3.23.0" />
|
||||
<PackageReference Include="DocuSign.eSign.dll" Version="4.4.1" />
|
||||
<PackageReference Include="DotNetZip" Version="1.13.8" />
|
||||
<PackageReference Include="Dropbox.Api" Version="4.10.0" />
|
||||
<PackageReference Include="Google.Apis.Drive.v3" Version="1.45.0.1964" />
|
||||
<PackageReference Include="Grpc.Tools" Version="2.27.0">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
@ -39,7 +39,7 @@
|
||||
<PackageReference Include="Microsoft.AspNet.WebApi.Core" Version="5.2.7" />
|
||||
<PackageReference Include="Microsoft.OneDriveSDK" Version="2.0.7" />
|
||||
<PackageReference Include="Microsoft.SharePoint.Client" Version="14.0.4762.1000" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
|
||||
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.7.1" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
@ -68,6 +68,7 @@ using ASC.Web.Files.Utils;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
using FileShare = ASC.Files.Core.Security.FileShare;
|
||||
using UrlShortener = ASC.Web.Core.Utility.UrlShortener;
|
||||
@ -1009,7 +1010,7 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
file = EntryManager.SaveEditing(fileId, null, url, null, doc, string.Format(FilesCommonResource.CommentRevertChanges, modifiedOnString));
|
||||
}
|
||||
|
||||
FilesMessageService.Send(file, GetHttpHeaders(), MessageAction.FileRestoreVersion, file.Title, version.ToString(CultureInfo.InvariantCulture));
|
||||
FilesMessageService.Send(file, HttpContextAccessor?.HttpContext?.Request?.Headers, MessageAction.FileRestoreVersion, file.Title, version.ToString(CultureInfo.InvariantCulture));
|
||||
|
||||
fileDao = GetFileDao();
|
||||
return new ItemList<EditHistory>(fileDao.GetEditHistory(DocumentServiceHelper, file.ID));
|
||||
@ -2039,18 +2040,9 @@ namespace ASC.Web.Files.Services.WCFService
|
||||
return new InvalidOperationException(error.Message, error);
|
||||
}
|
||||
|
||||
private Dictionary<string, string> GetHttpHeaders()
|
||||
private IDictionary<string, StringValues> GetHttpHeaders()
|
||||
{
|
||||
if (HttpContextAccessor?.HttpContext != null && HttpContextAccessor?.HttpContext.Request != null && HttpContextAccessor?.HttpContext.Request.Headers != null)
|
||||
{
|
||||
var headers = new Dictionary<string, string>();
|
||||
foreach (var k in HttpContextAccessor?.HttpContext.Request.Headers)
|
||||
{
|
||||
headers[k.Key] = string.Join(", ", k.Value);
|
||||
}
|
||||
return headers;
|
||||
}
|
||||
return null;
|
||||
return HttpContextAccessor?.HttpContext?.Request?.Headers;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -60,7 +60,8 @@ using DocuSign.eSign.Model;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ASC.Web.Files.Helpers
|
||||
@ -204,7 +205,7 @@ namespace ASC.Web.Files.Helpers
|
||||
return true;
|
||||
}
|
||||
|
||||
public string SendDocuSign<T>(T fileId, DocuSignData docuSignData, Dictionary<string, string> requestHeaders)
|
||||
public string SendDocuSign<T>(T fileId, DocuSignData docuSignData, IDictionary<string, StringValues> requestHeaders)
|
||||
{
|
||||
if (docuSignData == null) throw new ArgumentNullException("docuSignData");
|
||||
var token = DocuSignToken.GetToken();
|
||||
|
@ -33,6 +33,7 @@ using ASC.MessagingSystem;
|
||||
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Web.Files.Helpers
|
||||
{
|
||||
@ -64,12 +65,12 @@ namespace ASC.Web.Files.Helpers
|
||||
HttpContextAccessor = httpContextAccessor;
|
||||
}
|
||||
|
||||
public void Send(Dictionary<string, string> headers, MessageAction action)
|
||||
public void Send(IDictionary<string, StringValues> headers, MessageAction action)
|
||||
{
|
||||
SendHeadersMessage(headers, action, null);
|
||||
}
|
||||
|
||||
public void Send<T>(FileEntry<T> entry, Dictionary<string, string> headers, MessageAction action, params string[] description)
|
||||
public void Send<T>(FileEntry<T> entry, IDictionary<string, StringValues> headers, MessageAction action, params string[] description)
|
||||
{
|
||||
// do not log actions in users folder
|
||||
if (entry == null || entry.RootFolderType == FolderType.USER) return;
|
||||
@ -77,7 +78,7 @@ namespace ASC.Web.Files.Helpers
|
||||
SendHeadersMessage(headers, action, MessageTarget.Create(entry.ID), description);
|
||||
}
|
||||
|
||||
public void Send<T1, T2>(FileEntry<T1> entry1, FileEntry<T2> entry2, Dictionary<string, string> headers, MessageAction action, params string[] description)
|
||||
public void Send<T1, T2>(FileEntry<T1> entry1, FileEntry<T2> entry2, IDictionary<string, StringValues> headers, MessageAction action, params string[] description)
|
||||
{
|
||||
// do not log actions in users folder
|
||||
if (entry1 == null || entry2 == null || entry1.RootFolderType == FolderType.USER || entry2.RootFolderType == FolderType.USER) return;
|
||||
@ -85,7 +86,7 @@ namespace ASC.Web.Files.Helpers
|
||||
SendHeadersMessage(headers, action, MessageTarget.Create(new[] { entry1.ID.ToString(), entry2.ID.ToString() }), description);
|
||||
}
|
||||
|
||||
private void SendHeadersMessage(Dictionary<string, string> headers, MessageAction action, MessageTarget target, params string[] description)
|
||||
private void SendHeadersMessage(IDictionary<string, StringValues> headers, MessageAction action, MessageTarget target, params string[] description)
|
||||
{
|
||||
if (headers == null)
|
||||
{
|
||||
|
@ -37,6 +37,7 @@ using ASC.Web.Files.Helpers;
|
||||
using ASC.Web.Files.Utils;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
@ -44,16 +45,16 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
public bool IgnoreException { get; }
|
||||
public bool Immediately { get; }
|
||||
public Dictionary<string, string> Headers { get; }
|
||||
public IDictionary<string, StringValues> Headers { get; }
|
||||
|
||||
public FileDeleteOperationData(IEnumerable<object> folders, IEnumerable<object> files, Tenant tenant,
|
||||
bool holdResult = true, bool ignoreException = false, bool immediately = false, Dictionary<string, string> headers = null)
|
||||
bool holdResult = true, bool ignoreException = false, bool immediately = false, IDictionary<string, StringValues> headers = null)
|
||||
: this(folders.OfType<T>(), files.OfType<T>(), tenant, holdResult, ignoreException, immediately, headers)
|
||||
{
|
||||
}
|
||||
|
||||
public FileDeleteOperationData(IEnumerable<T> folders, IEnumerable<T> files, Tenant tenant,
|
||||
bool holdResult = true, bool ignoreException = false, bool immediately = false, Dictionary<string, string> headers = null)
|
||||
bool holdResult = true, bool ignoreException = false, bool immediately = false, IDictionary<string, StringValues> headers = null)
|
||||
: base(folders, files, tenant, holdResult)
|
||||
{
|
||||
IgnoreException = ignoreException;
|
||||
@ -80,7 +81,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
private int _trashId;
|
||||
private readonly bool _ignoreException;
|
||||
private readonly bool _immediately;
|
||||
private readonly Dictionary<string, string> _headers;
|
||||
private readonly IDictionary<string, StringValues> _headers;
|
||||
|
||||
public override FileOperationType OperationType
|
||||
{
|
||||
|
@ -47,15 +47,16 @@ using ASC.Web.Studio.Core;
|
||||
using Ionic.Zip;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
internal class FileDownloadOperationData<T> : FileOperationData<T>
|
||||
{
|
||||
public Dictionary<T, string> FilesDownload { get; }
|
||||
public Dictionary<string, string> Headers { get; }
|
||||
public IDictionary<string, StringValues> Headers { get; }
|
||||
|
||||
public FileDownloadOperationData(Dictionary<T, string> folders, Dictionary<T, string> files, Tenant tenant, Dictionary<string, string> headers, bool holdResult = true)
|
||||
public FileDownloadOperationData(Dictionary<T, string> folders, Dictionary<T, string> files, Tenant tenant, IDictionary<string, StringValues> headers, bool holdResult = true)
|
||||
: base(folders.Select(f => f.Key).ToList(), files.Select(f => f.Key).ToList(), tenant, holdResult)
|
||||
{
|
||||
FilesDownload = files;
|
||||
@ -117,7 +118,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
class FileDownloadOperation<T> : FileOperation<FileDownloadOperationData<T>, T>
|
||||
{
|
||||
private readonly Dictionary<T, string> files;
|
||||
private readonly Dictionary<string, string> headers;
|
||||
private readonly IDictionary<string, StringValues> headers;
|
||||
ItemNameValueCollection<T> entriesPathId;
|
||||
public override FileOperationType OperationType
|
||||
{
|
||||
|
@ -39,6 +39,7 @@ using ASC.Web.Files.Helpers;
|
||||
using ASC.Web.Files.Utils;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
@ -67,14 +68,14 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
public int DaoFolderId { get; }
|
||||
public bool Copy { get; }
|
||||
public FileConflictResolveType ResolveType { get; }
|
||||
public Dictionary<string, string> Headers { get; }
|
||||
public IDictionary<string, StringValues> Headers { get; }
|
||||
|
||||
public FileMoveCopyOperationData(IEnumerable<object> folders, IEnumerable<object> files, Tenant tenant, JsonElement toFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult = true, Dictionary<string, string> headers = null)
|
||||
public FileMoveCopyOperationData(IEnumerable<object> folders, IEnumerable<object> files, Tenant tenant, JsonElement toFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult = true, IDictionary<string, StringValues> headers = null)
|
||||
: this(folders.OfType<T>(), files.OfType<T>(), tenant, toFolderId, copy, resolveType, holdResult, headers)
|
||||
{
|
||||
}
|
||||
|
||||
public FileMoveCopyOperationData(IEnumerable<T> folders, IEnumerable<T> files, Tenant tenant, JsonElement toFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult = true, Dictionary<string, string> headers = null)
|
||||
public FileMoveCopyOperationData(IEnumerable<T> folders, IEnumerable<T> files, Tenant tenant, JsonElement toFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult = true, IDictionary<string, StringValues> headers = null)
|
||||
: base(folders, files, tenant, holdResult)
|
||||
{
|
||||
if (toFolderId.ValueKind == JsonValueKind.String)
|
||||
@ -99,7 +100,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
private readonly bool _copy;
|
||||
private readonly FileConflictResolveType _resolveType;
|
||||
|
||||
private readonly Dictionary<string, string> _headers;
|
||||
private readonly IDictionary<string, StringValues> _headers;
|
||||
|
||||
public override FileOperationType OperationType
|
||||
{
|
||||
|
@ -34,7 +34,9 @@ using ASC.Common;
|
||||
using ASC.Common.Threading;
|
||||
using ASC.Core;
|
||||
using ASC.Files.Resources;
|
||||
|
||||
|
||||
using Microsoft.Extensions.Primitives;
|
||||
|
||||
namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
{
|
||||
public class FileOperationsManager
|
||||
@ -109,7 +111,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
return QueueTask(authContext, op);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> Download(AuthContext authContext, TenantManager tenantManager, Dictionary<JsonElement, string> folders, Dictionary<JsonElement, string> files, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> Download(AuthContext authContext, TenantManager tenantManager, Dictionary<JsonElement, string> folders, Dictionary<JsonElement, string> files, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
var operations = tasks.GetTasks()
|
||||
.Where(t => t.GetProperty<Guid>(FileOperation.OWNER) == authContext.CurrentAccount.ID)
|
||||
@ -128,7 +130,7 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
return QueueTask(authContext, op);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> MoveOrCopy(AuthContext authContext, TenantManager tenantManager, IEnumerable<JsonElement> folders, IEnumerable<JsonElement> files, JsonElement destFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> MoveOrCopy(AuthContext authContext, TenantManager tenantManager, IEnumerable<JsonElement> folders, IEnumerable<JsonElement> files, JsonElement destFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
var tenant = tenantManager.GetCurrentTenant();
|
||||
var op1 = new FileMoveCopyOperation<int>(ServiceProvider, new FileMoveCopyOperationData<int>(folders.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()), files.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()), tenant, destFolderId, copy, resolveType, holdResult, headers));
|
||||
@ -138,13 +140,13 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
return QueueTask(authContext, op);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> Delete<T>(AuthContext authContext, TenantManager tenantManager, IEnumerable<T> folders, IEnumerable<T> files, bool ignoreException, bool holdResult, bool immediately, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> Delete<T>(AuthContext authContext, TenantManager tenantManager, IEnumerable<T> folders, IEnumerable<T> files, bool ignoreException, bool holdResult, bool immediately, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
var op = new FileDeleteOperation<T>(ServiceProvider, new FileDeleteOperationData<T>(folders, files, tenantManager.GetCurrentTenant(), holdResult, ignoreException, immediately, headers));
|
||||
return QueueTask(authContext, op);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> Delete(AuthContext authContext, TenantManager tenantManager, IEnumerable<JsonElement> folders, IEnumerable<JsonElement> files, bool ignoreException, bool holdResult, bool immediately, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> Delete(AuthContext authContext, TenantManager tenantManager, IEnumerable<JsonElement> folders, IEnumerable<JsonElement> files, bool ignoreException, bool holdResult, bool immediately, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
var op1 = new FileDeleteOperation<int>(ServiceProvider, new FileDeleteOperationData<int>(folders.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()), files.Where(r => r.ValueKind == JsonValueKind.Number).Select(r => r.GetInt32()), tenantManager.GetCurrentTenant(), holdResult, ignoreException, immediately, headers));
|
||||
var op2 = new FileDeleteOperation<string>(ServiceProvider, new FileDeleteOperationData<string>(folders.Where(r => r.ValueKind == JsonValueKind.String).Select(r => r.GetString()), files.Where(r => r.ValueKind == JsonValueKind.String).Select(r => r.GetString()), tenantManager.GetCurrentTenant(), holdResult, ignoreException, immediately, headers));
|
||||
@ -198,32 +200,32 @@ namespace ASC.Web.Files.Services.WCFService.FileOperations
|
||||
return FileOperationsManager.MarkAsRead(AuthContext, TenantManager, folderIds, fileIds);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> Download(Dictionary<JsonElement, string> folders, Dictionary<JsonElement, string> files, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> Download(Dictionary<JsonElement, string> folders, Dictionary<JsonElement, string> files, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
return FileOperationsManager.Download(AuthContext, TenantManager, folders, files, headers);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> MoveOrCopy(IEnumerable<JsonElement> folders, IEnumerable<JsonElement> files, JsonElement destFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> MoveOrCopy(IEnumerable<JsonElement> folders, IEnumerable<JsonElement> files, JsonElement destFolderId, bool copy, FileConflictResolveType resolveType, bool holdResult, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
return FileOperationsManager.MoveOrCopy(AuthContext, TenantManager, folders, files, destFolderId, copy, resolveType, holdResult, headers);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> Delete(List<JsonElement> folders, List<JsonElement> files, bool ignoreException, bool holdResult, bool immediately, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> Delete(List<JsonElement> folders, List<JsonElement> files, bool ignoreException, bool holdResult, bool immediately, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
return FileOperationsManager.Delete(AuthContext, TenantManager, folders, files, ignoreException, holdResult, immediately, headers);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> Delete<T>(List<T> folders, List<T> files, bool ignoreException, bool holdResult, bool immediately, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> Delete<T>(List<T> folders, List<T> files, bool ignoreException, bool holdResult, bool immediately, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
return FileOperationsManager.Delete(AuthContext, TenantManager, folders, files, ignoreException, holdResult, immediately, headers);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> DeleteFile<T>(T file, bool ignoreException, bool holdResult, bool immediately, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> DeleteFile<T>(T file, bool ignoreException, bool holdResult, bool immediately, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
return Delete(new List<T>(), new List<T>() { file }, ignoreException, holdResult, immediately, headers);
|
||||
}
|
||||
|
||||
public ItemList<FileOperationResult> DeleteFolder<T>(T folder, bool ignoreException, bool holdResult, bool immediately, Dictionary<string, string> headers)
|
||||
public ItemList<FileOperationResult> DeleteFolder<T>(T folder, bool ignoreException, bool holdResult, bool immediately, IDictionary<string, StringValues> headers)
|
||||
{
|
||||
return Delete(new List<T>() { folder }, new List<T>(), ignoreException, holdResult, immediately, headers);
|
||||
}
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="3.1.4" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.2" />
|
||||
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.3" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
@ -313,7 +313,7 @@ namespace ASC.Api.Settings
|
||||
[Read("cultures")]
|
||||
public IEnumerable<object> GetSupportedCultures()
|
||||
{
|
||||
return SetupInfo.EnabledCultures.Select(r => new { r.Name });
|
||||
return SetupInfo.EnabledCultures.Select(r => r.Name).ToArray();
|
||||
}
|
||||
|
||||
[Read("timezones")]
|
||||
|
Loading…
Reference in New Issue
Block a user