ASC.MessageService: refactoring. DI

This commit is contained in:
pavelbannov 2019-06-17 16:53:10 +03:00
parent 0ffdc833b8
commit e303a103a6
7 changed files with 102 additions and 100 deletions

View File

@ -25,8 +25,8 @@
using System;
using System.Configuration;
using ASC.Common.Logging;
using ASC.Common.Utils;
namespace ASC.MessagingSystem.DbSender
{
@ -38,7 +38,7 @@ namespace ASC.MessagingSystem.DbSender
{
get
{
var setting = ConfigurationManager.AppSettings["messaging.enabled"];
var setting = ConfigurationManager.AppSettings["messaging:enabled"];
return !string.IsNullOrEmpty(setting) && setting == "true";
}
}

View File

@ -25,149 +25,152 @@
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using ASC.Common.Logging;
using ASC.MessagingSystem.DbSender;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
namespace ASC.MessagingSystem
{
public static class MessageService
public class MessageService
{
private static readonly ILog log = LogManager.GetLogger("ASC.Messaging");
private static readonly IMessageSender sender;
private readonly IMessageSender sender;
private readonly HttpRequest request;
static MessageService()
public MessageService(IConfiguration configuration, IHttpContextAccessor httpContextAccessor)
{
if (ConfigurationManager.AppSettings["messaging.enabled"] != "true")
if (configuration["messaging:enabled"] != "true")
{
return;
}
sender = new DbMessageSender();
request = httpContextAccessor?.HttpContext?.Request;
}
#region HttpRequest
public static void Send(HttpRequest request, MessageAction action)
public void Send(MessageAction action)
{
SendRequestMessage(request, null, action, null);
SendRequestMessage(null, action, null);
}
public static void Send(HttpRequest request, MessageAction action, string d1)
public void Send(MessageAction action, string d1)
{
SendRequestMessage(request, null, action, null, d1);
SendRequestMessage(null, action, null, d1);
}
public static void Send(HttpRequest request, MessageAction action, string d1, string d2)
public void Send(MessageAction action, string d1, string d2)
{
SendRequestMessage(request, null, action, null, d1, d2);
SendRequestMessage(null, action, null, d1, d2);
}
public static void Send(HttpRequest request, MessageAction action, string d1, string d2, string d3)
public void Send(MessageAction action, string d1, string d2, string d3)
{
SendRequestMessage(request, null, action, null, d1, d2, d3);
SendRequestMessage(null, action, null, d1, d2, d3);
}
public static void Send(HttpRequest request, MessageAction action, string d1, string d2, string d3, string d4)
public void Send(MessageAction action, string d1, string d2, string d3, string d4)
{
SendRequestMessage(request, null, action, null, d1, d2, d3, d4);
SendRequestMessage(null, action, null, d1, d2, d3, d4);
}
public static void Send(HttpRequest request, MessageAction action, IEnumerable<string> d1, string d2)
public void Send(MessageAction action, IEnumerable<string> d1, string d2)
{
SendRequestMessage(request, null, action, null, string.Join(", ", d1), d2);
SendRequestMessage(null, action, null, string.Join(", ", d1), d2);
}
public static void Send(HttpRequest request, MessageAction action, string d1, IEnumerable<string> d2)
public void Send(MessageAction action, string d1, IEnumerable<string> d2)
{
SendRequestMessage(request, null, action, null, d1, string.Join(", ", d2));
SendRequestMessage(null, action, null, d1, string.Join(", ", d2));
}
public static void Send(HttpRequest request, MessageAction action, string d1, string d2, IEnumerable<string> d3)
public void Send(MessageAction action, string d1, string d2, IEnumerable<string> d3)
{
SendRequestMessage(request, null, action, null, d1, d2, string.Join(", ", d3));
SendRequestMessage(null, action, null, d1, d2, string.Join(", ", d3));
}
public static void Send(HttpRequest request, MessageAction action, IEnumerable<string> d1)
public void Send(MessageAction action, IEnumerable<string> d1)
{
SendRequestMessage(request, null, action, null, string.Join(", ", d1));
SendRequestMessage(null, action, null, string.Join(", ", d1));
}
public static void Send(HttpRequest request, string loginName, MessageAction action)
public void Send(string loginName, MessageAction action)
{
SendRequestMessage(request, loginName, action, null);
SendRequestMessage(loginName, action, null);
}
public static void Send(HttpRequest request, string loginName, MessageAction action, string d1)
public void Send(string loginName, MessageAction action, string d1)
{
SendRequestMessage(request, loginName, action, null, d1);
SendRequestMessage(loginName, action, null, d1);
}
#endregion
#region HttpRequest & Target
public static void Send(HttpRequest request, MessageAction action, MessageTarget target)
public void Send(MessageAction action, MessageTarget target)
{
SendRequestMessage(request, null, action, target);
SendRequestMessage(null, action, target);
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1)
public void Send(MessageAction action, MessageTarget target, string d1)
{
SendRequestMessage(request, null, action, target, d1);
SendRequestMessage(null, action, target, d1);
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2)
public void Send(MessageAction action, MessageTarget target, string d1, string d2)
{
SendRequestMessage(request, null, action, target, d1, d2);
SendRequestMessage(null, action, target, d1, d2);
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2, string d3)
public void Send(MessageAction action, MessageTarget target, string d1, string d2, string d3)
{
SendRequestMessage(request, null, action, target, d1, d2, d3);
SendRequestMessage(null, action, target, d1, d2, d3);
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2, string d3, string d4)
public void Send(MessageAction action, MessageTarget target, string d1, string d2, string d3, string d4)
{
SendRequestMessage(request, null, action, target, d1, d2, d3, d4);
SendRequestMessage(null, action, target, d1, d2, d3, d4);
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, IEnumerable<string> d1, string d2)
public void Send(MessageAction action, MessageTarget target, IEnumerable<string> d1, string d2)
{
SendRequestMessage(request, null, action, target, string.Join(", ", d1), d2);
SendRequestMessage(null, action, target, string.Join(", ", d1), d2);
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, IEnumerable<string> d2)
public void Send(MessageAction action, MessageTarget target, string d1, IEnumerable<string> d2)
{
SendRequestMessage(request, null, action, target, d1, string.Join(", ", d2));
SendRequestMessage(null, action, target, d1, string.Join(", ", d2));
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, string d1, string d2, IEnumerable<string> d3)
public void Send(MessageAction action, MessageTarget target, string d1, string d2, IEnumerable<string> d3)
{
SendRequestMessage(request, null, action, target, d1, d2, string.Join(", ", d3));
SendRequestMessage(null, action, target, d1, d2, string.Join(", ", d3));
}
public static void Send(HttpRequest request, MessageAction action, MessageTarget target, IEnumerable<string> d1)
public void Send(MessageAction action, MessageTarget target, IEnumerable<string> d1)
{
SendRequestMessage(request, null, action, target, string.Join(", ", d1));
SendRequestMessage(null, action, target, string.Join(", ", d1));
}
public static void Send(HttpRequest request, string loginName, MessageAction action, MessageTarget target)
public void Send(string loginName, MessageAction action, MessageTarget target)
{
SendRequestMessage(request, loginName, action, target);
SendRequestMessage(loginName, action, target);
}
public static void Send(HttpRequest request, string loginName, MessageAction action, MessageTarget target, string d1)
public void Send(string loginName, MessageAction action, MessageTarget target, string d1)
{
SendRequestMessage(request, loginName, action, target, d1);
SendRequestMessage(loginName, action, target, d1);
}
#endregion
private static void SendRequestMessage(HttpRequest request, string loginName, MessageAction action, MessageTarget target, params string[] description)
private void SendRequestMessage(string loginName, MessageAction action, MessageTarget target, params string[] description)
{
if (sender == null) return;
@ -185,27 +188,27 @@ namespace ASC.MessagingSystem
#region HttpHeaders
public static void Send(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action)
public void Send(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action)
{
SendHeadersMessage(userData, httpHeaders, action, null);
}
public static void Send(Dictionary<string, string> httpHeaders, MessageAction action)
public void Send(Dictionary<string, string> httpHeaders, MessageAction action)
{
SendHeadersMessage(null, httpHeaders, action, null);
}
public static void Send(Dictionary<string, string> httpHeaders, MessageAction action, string d1)
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, string d1)
{
SendHeadersMessage(null, httpHeaders, action, null, d1);
}
public static void Send(Dictionary<string, string> httpHeaders, MessageAction action, IEnumerable<string> d1)
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, IEnumerable<string> d1)
{
SendHeadersMessage(null, httpHeaders, action, null, d1 != null ? d1.ToArray() : null);
}
public static void Send(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target)
public void Send(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target)
{
SendHeadersMessage(userData, httpHeaders, action, target);
}
@ -214,24 +217,24 @@ namespace ASC.MessagingSystem
#region HttpHeaders & Target
public static void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target)
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target)
{
SendHeadersMessage(null, httpHeaders, action, target);
}
public static void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, string d1)
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, string d1)
{
SendHeadersMessage(null, httpHeaders, action, target, d1);
}
public static void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, IEnumerable<string> d1)
public void Send(Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, IEnumerable<string> d1)
{
SendHeadersMessage(null, httpHeaders, action, target, d1 != null ? d1.ToArray() : null);
}
#endregion
private static void SendHeadersMessage(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, params string[] description)
private void SendHeadersMessage(MessageUserData userData, Dictionary<string, string> httpHeaders, MessageAction action, MessageTarget target, params string[] description)
{
if (sender == null) return;
@ -243,33 +246,23 @@ namespace ASC.MessagingSystem
#region Initiator
public static void Send(HttpRequest request, MessageInitiator initiator, MessageAction action, params string[] description)
public void Send(MessageInitiator initiator, MessageAction action, params string[] description)
{
SendInitiatorMessage(request, initiator.ToString(), action, null, description);
}
public static void Send(MessageInitiator initiator, MessageAction action, params string[] description)
{
SendInitiatorMessage(null, initiator.ToString(), action, null, description);
SendInitiatorMessage(initiator.ToString(), action, null, description);
}
#endregion
#region Initiator & Target
public static void Send(HttpRequest request, MessageInitiator initiator, MessageAction action, MessageTarget target, params string[] description)
public void Send(MessageInitiator initiator, MessageAction action, MessageTarget target, params string[] description)
{
SendInitiatorMessage(request, initiator.ToString(), action, target, description);
}
public static void Send(MessageInitiator initiator, MessageAction action, MessageTarget target, params string[] description)
{
SendInitiatorMessage(null, initiator.ToString(), action, target, description);
SendInitiatorMessage(initiator.ToString(), action, target, description);
}
#endregion
private static void SendInitiatorMessage(HttpRequest request, string initiator, MessageAction action, MessageTarget target, params string[] description)
private void SendInitiatorMessage(string initiator, MessageAction action, MessageTarget target, params string[] description)
{
if (sender == null) return;

View File

@ -35,11 +35,13 @@ namespace ASC.Employee.Core.Controllers
{
public Common.Logging.LogManager LogManager { get; }
public ApiContext ApiContext { get; }
public MessageService MessageService { get; }
public PeopleController(Common.Logging.LogManager logManager)
public PeopleController(Common.Logging.LogManager logManager, MessageService messageService)
{
LogManager = logManager;
ApiContext = HttpContext;
MessageService = messageService;
}
[Read, Read(false)]
@ -343,7 +345,7 @@ namespace ASC.Employee.Core.Controllers
user = UserManagerWrapper.AddUser(user, memberModel.Password, false, true, memberModel.IsVisitor);
var messageAction = memberModel.IsVisitor ? MessageAction.GuestCreated : MessageAction.UserCreated;
MessageService.Send(Request, messageAction, MessageTarget.Create(user.ID), user.DisplayUserName(false));
MessageService.Send(messageAction, MessageTarget.Create(user.ID), user.DisplayUserName(false));
UpdateDepartments(memberModel.Department, user);
@ -495,12 +497,12 @@ namespace ASC.Employee.Core.Controllers
}
CoreContext.UserManager.SaveUserInfo(user, memberModel.IsVisitor);
MessageService.Send(Request, MessageAction.UserUpdated, MessageTarget.Create(user.ID), user.DisplayUserName(false));
MessageService.Send(MessageAction.UserUpdated, MessageTarget.Create(user.ID), user.DisplayUserName(false));
if (memberModel.Disable.HasValue && memberModel.Disable.Value)
{
CookiesManager.ResetUserCookie(user.ID);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.CookieSettingsUpdated);
MessageService.Send(MessageAction.CookieSettingsUpdated);
}
return new EmployeeWraperFull(user);
@ -528,7 +530,7 @@ namespace ASC.Employee.Core.Controllers
CoreContext.UserManager.DeleteUser(user.ID);
//QueueWorker.StartRemove(Common.HttpContext.Current, TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, false);
MessageService.Send(Request, MessageAction.UserDeleted, MessageTarget.Create(user.ID), userName);
MessageService.Send(MessageAction.UserDeleted, MessageTarget.Create(user.ID), userName);
return new EmployeeWraperFull(user);
}
@ -598,7 +600,7 @@ namespace ASC.Employee.Core.Controllers
}
CoreContext.UserManager.SaveUserInfo(user);
MessageService.Send(Request, MessageAction.UserAddedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false));
MessageService.Send(MessageAction.UserAddedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false));
return new ThumbnailsDataWrapper(user.ID);
}
@ -616,7 +618,7 @@ namespace ASC.Employee.Core.Controllers
UserPhotoManager.RemovePhoto(user.ID);
CoreContext.UserManager.SaveUserInfo(user);
MessageService.Send(Request, MessageAction.UserDeletedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false));
MessageService.Send(MessageAction.UserDeletedAvatar, MessageTarget.Create(user.ID), user.DisplayUserName(false));
return new ThumbnailsDataWrapper(user.ID);
}
@ -649,7 +651,7 @@ namespace ASC.Employee.Core.Controllers
}
CoreContext.UserManager.SaveUserInfo(user);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserUpdatedAvatarThumbnails, MessageTarget.Create(user.ID), user.DisplayUserName(false));
MessageService.Send(MessageAction.UserUpdatedAvatarThumbnails, MessageTarget.Create(user.ID), user.DisplayUserName(false));
return new ThumbnailsDataWrapper(user.ID);
}
@ -659,7 +661,7 @@ namespace ASC.Employee.Core.Controllers
[Create("password"), Create("password", false)]
public string SendUserPassword(string email)
{
var userInfo = UserManagerWrapper.SendUserPassword(email);
var userInfo = UserManagerWrapper.SendUserPassword(email, MessageService);
return string.Format(Resource.MessageYourPasswordSuccessfullySendedToEmail, userInfo.Email);
}
@ -690,10 +692,10 @@ namespace ASC.Employee.Core.Controllers
if (!string.IsNullOrEmpty(memberModel.Password))
{
SecurityContext.SetUserPassword(userid, memberModel.Password);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserUpdatedPassword);
MessageService.Send(MessageAction.UserUpdatedPassword);
CookiesManager.ResetUserCookie(userid);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.CookieSettingsUpdated);
MessageService.Send(MessageAction.CookieSettingsUpdated);
}
return new EmployeeWraperFull(GetUserInfo(userid.ToString()));
@ -767,7 +769,7 @@ namespace ASC.Employee.Core.Controllers
}
}
MessageService.Send(Request, MessageAction.UsersUpdatedType, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false)));
MessageService.Send(MessageAction.UsersUpdatedType, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false)));
return users.Select(user => new EmployeeWraperFull(user));
}
@ -803,12 +805,12 @@ namespace ASC.Employee.Core.Controllers
CoreContext.UserManager.SaveUserInfo(user);
CookiesManager.ResetUserCookie(user.ID);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.CookieSettingsUpdated);
MessageService.Send(MessageAction.CookieSettingsUpdated);
break;
}
}
MessageService.Send(Request, MessageAction.UsersUpdatedStatus, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false)));
MessageService.Send(MessageAction.UsersUpdatedStatus, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false)));
return users.Select(user => new EmployeeWraperFull(user));
}
@ -843,7 +845,7 @@ namespace ASC.Employee.Core.Controllers
}
}
MessageService.Send(Request, MessageAction.UsersSentActivationInstructions, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false)));
MessageService.Send(MessageAction.UsersSentActivationInstructions, MessageTarget.Create(users.Select(x => x.ID)), users.Select(x => x.DisplayUserName(false)));
return users.Select(user => new EmployeeWraperFull(user));
}
@ -871,7 +873,7 @@ namespace ASC.Employee.Core.Controllers
//QueueWorker.StartRemove(HttpContext.Current, TenantProvider.CurrentTenantID, user, SecurityContext.CurrentAccount.ID, false);
}
MessageService.Send(Request, MessageAction.UsersDeleted, MessageTarget.Create(users.Select(x => x.ID)), userNames);
MessageService.Send(MessageAction.UsersDeleted, MessageTarget.Create(users.Select(x => x.ID)), userNames);
return users.Select(user => new EmployeeWraperFull(user));
}
@ -886,7 +888,7 @@ namespace ASC.Employee.Core.Controllers
throw new SecurityException();
StudioNotifyService.Instance.SendMsgProfileDeletion(user);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserSentDeleteInstructions);
MessageService.Send(MessageAction.UserSentDeleteInstructions);
return string.Format(Resource.SuccessfullySentNotificationDeleteUserInfoMessage, "<b>" + user.Email + "</b>");
}
@ -900,7 +902,7 @@ namespace ASC.Employee.Core.Controllers
if (string.IsNullOrEmpty(profile.AuthorizationError))
{
GetLinker().AddLink(SecurityContext.CurrentAccount.ID.ToString(), profile);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserLinkedSocialAccount, GetMeaningfulProviderName(profile.Provider));
MessageService.Send(MessageAction.UserLinkedSocialAccount, GetMeaningfulProviderName(profile.Provider));
}
else
{
@ -916,7 +918,7 @@ namespace ASC.Employee.Core.Controllers
public void UnlinkAccount(string provider)
{
GetLinker().RemoveProvider(SecurityContext.CurrentAccount.ID.ToString(), provider);
MessageService.Send(Common.HttpContext.Current.Request, MessageAction.UserUnlinkedSocialAccount, GetMeaningfulProviderName(provider));
MessageService.Send(MessageAction.UserUnlinkedSocialAccount, GetMeaningfulProviderName(provider));
}
private static AccountLinker GetLinker()

View File

@ -20,7 +20,7 @@ using ASC.Web.Core;
using ASC.Data.Storage.Configuration;
using Autofac;
using ASC.MessagingSystem;
namespace ASC.Web.Api
{
@ -68,7 +68,8 @@ namespace ASC.Web.Api
services.AddLogManager()
.AddStorage()
.AddWebItemManager();
.AddWebItemManager()
.AddTransient<MessageService>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)

View File

@ -30,6 +30,9 @@
"daemon-email": "mail-daemon@onlyoffice.com",
"server-mailbox-limit-per-user": 2
},
"messaging": {
"enabled": "true"
},
"version": {
"release": {
"date": "",

View File

@ -163,7 +163,7 @@ namespace ASC.Web.Core.Users
throw new Exception(GenerateErrorMessage(passwordSettingsObj));
}
public static UserInfo SendUserPassword(string email)
public static UserInfo SendUserPassword(string email, MessageService messageService)
{
email = (email ?? "").Trim();
if (!email.TestEmailRegex()) throw new ArgumentNullException("email", Resource.ErrorNotCorrectEmail);
@ -196,7 +196,7 @@ namespace ASC.Web.Core.Users
StudioNotifyService.Instance.UserPasswordChange(userInfo);
var displayUserName = userInfo.DisplayUserName(false);
MessageService.Send(HttpContext.Current.Request, MessageAction.UserSentPasswordChangeInstructions, displayUserName);
messageService.Send(MessageAction.UserSentPasswordChangeInstructions, displayUserName);
return userInfo;
}

View File

@ -30,6 +30,9 @@
"daemon-email": "mail-daemon@onlyoffice.com",
"server-mailbox-limit-per-user": 2
},
"messaging": {
"enabled": "enabled"
},
"version": {
"release": {
"date": "",
@ -41,7 +44,7 @@
"alias": {
"min": ""
},
"images": "images",
"images": "images",
"hide-settings": "Monitoring,LdapSettings,DocService,MailService,PublicPortal,ProxyHttpContent,SpamSubscription,FullTextSearch",
"hub": {
"url": "",