FilesMessageService: removed GetHttpHeaders

This commit is contained in:
pavelbannov 2023-09-25 14:14:57 +03:00
parent b670c532cc
commit 7c62a28318
4 changed files with 41 additions and 46 deletions

View File

@ -33,7 +33,6 @@ public class CustomTagsService
private readonly FileSecurity _fileSecurity; private readonly FileSecurity _fileSecurity;
private readonly AuthContext _authContext; private readonly AuthContext _authContext;
private readonly FilesMessageService _filesMessageService; private readonly FilesMessageService _filesMessageService;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly UserManager _userManager; private readonly UserManager _userManager;
public CustomTagsService( public CustomTagsService(
@ -41,14 +40,12 @@ public class CustomTagsService
FileSecurity fileSecurity, FileSecurity fileSecurity,
AuthContext authContext, AuthContext authContext,
FilesMessageService filesMessageService, FilesMessageService filesMessageService,
IHttpContextAccessor httpContextAccessor,
UserManager userManager) UserManager userManager)
{ {
_daoFactory = daoFactory; _daoFactory = daoFactory;
_fileSecurity = fileSecurity; _fileSecurity = fileSecurity;
_authContext = authContext; _authContext = authContext;
_filesMessageService = filesMessageService; _filesMessageService = filesMessageService;
_httpContextAccessor = httpContextAccessor;
_userManager = userManager; _userManager = userManager;
} }

View File

@ -47,7 +47,6 @@ public class RoomLogoManager
private readonly TenantManager _tenantManager; private readonly TenantManager _tenantManager;
private IDataStore _dataStore; private IDataStore _dataStore;
private readonly FilesMessageService _filesMessageService; private readonly FilesMessageService _filesMessageService;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly EmailValidationKeyProvider _emailValidationKeyProvider; private readonly EmailValidationKeyProvider _emailValidationKeyProvider;
private readonly SecurityContext _securityContext; private readonly SecurityContext _securityContext;
private readonly FileUtilityConfiguration _fileUtilityConfiguration; private readonly FileUtilityConfiguration _fileUtilityConfiguration;
@ -59,7 +58,6 @@ public class RoomLogoManager
FileSecurity fileSecurity, FileSecurity fileSecurity,
ILogger<RoomLogoManager> logger, ILogger<RoomLogoManager> logger,
FilesMessageService filesMessageService, FilesMessageService filesMessageService,
IHttpContextAccessor httpContextAccessor,
EmailValidationKeyProvider emailValidationKeyProvider, EmailValidationKeyProvider emailValidationKeyProvider,
SecurityContext securityContext, SecurityContext securityContext,
FileUtilityConfiguration fileUtilityConfiguration) FileUtilityConfiguration fileUtilityConfiguration)
@ -70,7 +68,6 @@ public class RoomLogoManager
_fileSecurity = fileSecurity; _fileSecurity = fileSecurity;
_logger = logger; _logger = logger;
_filesMessageService = filesMessageService; _filesMessageService = filesMessageService;
_httpContextAccessor = httpContextAccessor;
_emailValidationKeyProvider = emailValidationKeyProvider; _emailValidationKeyProvider = emailValidationKeyProvider;
_securityContext = securityContext; _securityContext = securityContext;
_fileUtilityConfiguration = fileUtilityConfiguration; _fileUtilityConfiguration = fileUtilityConfiguration;

View File

@ -34,23 +34,17 @@ public class FilesMessageService
private readonly MessageService _messageService; private readonly MessageService _messageService;
private readonly IHttpContextAccessor _httpContextAccessor; private readonly IHttpContextAccessor _httpContextAccessor;
private readonly IDaoFactory _daoFactory; private readonly IDaoFactory _daoFactory;
private readonly NotifyClient _notifyClient;
private readonly AuthContext _authContext;
public FilesMessageService( public FilesMessageService(
ILoggerProvider options, ILoggerProvider options,
MessageTarget messageTarget, MessageTarget messageTarget,
MessageService messageService, MessageService messageService,
IDaoFactory daoFactory, IDaoFactory daoFactory)
NotifyClient notifyClient,
AuthContext authContext)
{ {
_logger = options.CreateLogger("ASC.Messaging"); _logger = options.CreateLogger("ASC.Messaging");
_messageTarget = messageTarget; _messageTarget = messageTarget;
_messageService = messageService; _messageService = messageService;
_daoFactory = daoFactory; _daoFactory = daoFactory;
_notifyClient = notifyClient;
_authContext = authContext;
} }
public FilesMessageService( public FilesMessageService(
@ -58,10 +52,8 @@ public class FilesMessageService
MessageTarget messageTarget, MessageTarget messageTarget,
MessageService messageService, MessageService messageService,
IHttpContextAccessor httpContextAccessor, IHttpContextAccessor httpContextAccessor,
IDaoFactory daoFactory, IDaoFactory daoFactory)
NotifyClient notifyClient, : this(options, messageTarget, messageService, daoFactory)
AuthContext authContext)
: this(options, messageTarget, messageService, daoFactory, notifyClient, authContext)
{ {
_httpContextAccessor = httpContextAccessor; _httpContextAccessor = httpContextAccessor;
} }
@ -78,34 +70,23 @@ public class FilesMessageService
public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, params string[] description) public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, params string[] description)
{ {
await SendAsync(action, entry, GetHttpHeaders(), null, Guid.Empty, FileShare.None, description); await SendAsync(action, entry, null, Guid.Empty, FileShare.None, description);
}
public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, IDictionary<string, StringValues> headers, List<AceWrapper> aces, params string[] description)
{
if (action == MessageAction.RoomDeleted)
{
var userId = _authContext.CurrentAccount.ID;
await _notifyClient.SendRoomRemovedAsync(entry, aces, userId);
}
await SendAsync(action, entry, headers, null, Guid.Empty, FileShare.None, description);
} }
public async Task SendAsync<T>(MessageAction action, string oldTitle, FileEntry<T> entry, params string[] description) public async Task SendAsync<T>(MessageAction action, string oldTitle, FileEntry<T> entry, params string[] description)
{ {
await SendAsync(action, entry, GetHttpHeaders(), oldTitle, description: description); await SendAsync(action, entry, oldTitle, description: description);
} }
public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, Guid userId, params string[] description) public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, Guid userId, params string[] description)
{ {
await SendAsync(action, entry, GetHttpHeaders(), userId: userId, description: description); await SendAsync(action, entry, null, userId, FileShare.None, description);
} }
public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, Guid userId, FileShare userRole, params string[] description) public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, Guid userId, FileShare userRole, params string[] description)
{ {
description = description.Append(FileStorageService.GetAccessString(userRole)).ToArray(); description = description.Append(FileStorageService.GetAccessString(userRole)).ToArray();
await SendAsync(action, entry, GetHttpHeaders(), null, userId, userRole, description); await SendAsync(action, entry, null, userId, userRole, description);
} }
private async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, IDictionary<string, StringValues> headers, string oldTitle = null, Guid userId = default(Guid), FileShare userRole = FileShare.None, params string[] description) private async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, IDictionary<string, StringValues> headers, string oldTitle = null, Guid userId = default(Guid), FileShare userRole = FileShare.None, params string[] description)
@ -122,7 +103,31 @@ public class FilesMessageService
description = description.Append(additionalParam).ToArray(); description = description.Append(additionalParam).ToArray();
} }
await SendHeadersMessageAsync(headers, action, _messageTarget.Create(entry.Id), description); if (headers == null)//todo check need if
{
_logger.DebugEmptyRequestHeaders(action);
return;
}
await _messageService.SendHeadersMessageAsync(action, _messageTarget.Create(entry.Id), headers, description);
}
private async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, string oldTitle = null, Guid userId = default(Guid), FileShare userRole = FileShare.None, params string[] description)
{
if (entry == null)
{
return;
}
var additionalParam = await GetAdditionalNotificationParamAsync(entry, action, oldTitle, userId, userRole);
if (additionalParam != "")
{
description = description.Append(additionalParam).ToArray();
}
await _messageService.SendAsync(action, _messageTarget.Create(entry.Id), description);
} }
public async Task SendAsync<T1, T2>(MessageAction action, FileEntry<T1> entry1, FileEntry<T2> entry2, IDictionary<string, StringValues> headers, params string[] description) public async Task SendAsync<T1, T2>(MessageAction action, FileEntry<T1> entry1, FileEntry<T2> entry2, IDictionary<string, StringValues> headers, params string[] description)
@ -139,11 +144,6 @@ public class FilesMessageService
description = description.Append(additionalParams).ToArray(); description = description.Append(additionalParams).ToArray();
} }
await SendHeadersMessageAsync(headers, action, _messageTarget.CreateFromGroupValues(new[] { entry1.Id.ToString(), entry2.Id.ToString() }), description);
}
private async Task SendHeadersMessageAsync(IDictionary<string, StringValues> headers, MessageAction action, MessageTarget target, params string[] description)
{
if (headers == null)//todo check need if if (headers == null)//todo check need if
{ {
_logger.DebugEmptyRequestHeaders(action); _logger.DebugEmptyRequestHeaders(action);
@ -151,7 +151,7 @@ public class FilesMessageService
return; return;
} }
await _messageService.SendHeadersMessageAsync(action, target, headers, description); await _messageService.SendHeadersMessageAsync(action, _messageTarget.CreateFromGroupValues(new[] { entry1.Id.ToString(), entry2.Id.ToString() }), headers, description);
} }
public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, string description) public async Task SendAsync<T>(MessageAction action, FileEntry<T> entry, string description)
@ -254,9 +254,4 @@ public class FilesMessageService
return serializedParam; return serializedParam;
} }
private IDictionary<string, StringValues> GetHttpHeaders()
{
return _httpContextAccessor?.HttpContext?.Request?.Headers?.ToDictionary(k => k.Key, v => v.Value);
}
} }

View File

@ -120,7 +120,11 @@ class FileDeleteOperation<T> : FileOperation<FileDeleteOperationData<T>, T>
var scopeClass = scope.ServiceProvider.GetService<FileDeleteOperationScope>(); var scopeClass = scope.ServiceProvider.GetService<FileDeleteOperationScope>();
var socketManager = scope.ServiceProvider.GetService<SocketManager>(); var socketManager = scope.ServiceProvider.GetService<SocketManager>();
var fileSharing = scope.ServiceProvider.GetService<FileSharing>(); var fileSharing = scope.ServiceProvider.GetService<FileSharing>();
var authContext = scope.ServiceProvider.GetService<AuthContext>();
var notifyClient = scope.ServiceProvider.GetService<NotifyClient>();
var (fileMarker, filesMessageService, roomLogoManager) = scopeClass; var (fileMarker, filesMessageService, roomLogoManager) = scopeClass;
foreach (var folderId in folderIds) foreach (var folderId in folderIds)
{ {
CancellationToken.ThrowIfCancellationRequested(); CancellationToken.ThrowIfCancellationRequested();
@ -209,7 +213,8 @@ class FileDeleteOperation<T> : FileOperation<FileDeleteOperationData<T>, T>
if (isRoom) if (isRoom)
{ {
_ = filesMessageService.SendAsync(MessageAction.RoomDeleted, folder, _headers, aces, folder.Title); await notifyClient.SendRoomRemovedAsync(folder, aces, authContext.CurrentAccount.ID);
_ = filesMessageService.SendAsync(MessageAction.RoomDeleted, folder, _headers, folder.Title);
} }
else else
{ {
@ -253,7 +258,8 @@ class FileDeleteOperation<T> : FileOperation<FileDeleteOperationData<T>, T>
{ {
if (isRoom) if (isRoom)
{ {
_ = filesMessageService.SendAsync(MessageAction.RoomDeleted, folder, _headers, aces, folder.Title); await notifyClient.SendRoomRemovedAsync(folder, aces, authContext.CurrentAccount.ID);
_ = filesMessageService.SendAsync(MessageAction.RoomDeleted, folder, _headers, folder.Title);
} }
else else
{ {