Пример #1
0
        public static void ChangeConfigValue(string property, string value)
        {
            bool   success       = false;
            string propertyLower = property.ToLower();

            Plugin.Log("Config Change Attempt: " + property + " " + value);

            object inifile = Plugin.ConfigSettings.GetField <object>("_instance");

            IniParser.Model.IniData data = inifile.GetField <IniParser.Model.IniData>("data");

            foreach (var section in data.Sections)
            {
                if (success)
                {
                    break;
                }
                foreach (var key in section.Keys)
                {
                    if (key.KeyName.ToLower() == propertyLower && !data.Sections[section.SectionName].ContainsKey("ChargeCost"))
                    {
                        inifile.InvokeMethod("IniWriteValue", section.SectionName, property, value);
                        ChatMessageHandler.TryAsyncMessage("Changed Value");
                        Config.Load();
                        success = true;
                        break;
                    }
                }
            }
        }
 public WebSocketRequestHandler(IConnectionManager connectionManager,
                                ChatCommandHandler chatCommandHandler,
                                ChatMessageHandler chatMessageHandler,
                                ChatRegistrationHandler chatRegistrationHandler)
 {
     _connectionManager       = connectionManager ?? throw new ArgumentNullException(nameof(connectionManager));
     _chatCommandHandler      = chatCommandHandler ?? throw new ArgumentNullException(nameof(chatCommandHandler));
     _chatMessageHandler      = chatMessageHandler ?? throw new ArgumentNullException(nameof(chatMessageHandler));
     _chatRegistrationHandler = chatRegistrationHandler ?? throw new ArgumentNullException(nameof(chatRegistrationHandler));
 }
Пример #3
0
        public AdminController(
            ApplicationContext dbContext,
            IAuthService authService,
            ChatMessageHandler webSocketHandler
            )
        {
            DbContext   = dbContext;
            AuthService = authService;

            WebSocketHandler = webSocketHandler;
        }
Пример #4
0
 // Start is called before the first frame update
 private void Start()
 {
     logger             = GameObject.FindObjectOfType <GameUILog>();
     gameClient         = IoCContainer.Instance.Resolve <IRavenClient>();
     Auth               = gameClient.Modules.GetModule <Authentication>();
     PlayerHandler      = gameClient.Modules.GetModule <PlayerHandler>();
     ObjectHandler      = gameClient.Modules.GetModule <ObjectHandler>();
     NpcHandler         = gameClient.Modules.GetModule <NpcHandler>();
     CharacterHandler   = gameClient.Modules.GetModule <CharacterHandler>();
     ChatMessageHandler = gameClient.Modules.GetModule <ChatMessageHandler>();
     //Connect();
 }
Пример #5
0
        public RavenClient(ILogger logger, IModuleManager moduleManager, INetworkPacketController controller)
        {
            this.logger  = logger;
            this.Modules = moduleManager;

            this.client             = new RavenNetworkClient(logger, RegisterPacketHandlers(controller));
            this.auth               = this.Modules.AddModule(new Authentication(this.client));
            this.playerHandler      = this.Modules.AddModule(new PlayerHandler());
            this.npcHandler         = this.Modules.AddModule(new NpcHandler());
            this.objectHandler      = this.Modules.AddModule(new ObjectHandler());
            this.npcHandler         = this.Modules.AddModule(new NpcHandler());
            this.characterHandler   = this.Modules.AddModule(new CharacterHandler());
            this.chatMessageHandler = this.Modules.AddModule(new ChatMessageHandler());
        }
Пример #6
0
        public async Task GivenAMessageToAllWhenExecutingHandleThanReturnTheFormattedMessage()
        {
            var nickname = "foo";
            var message  = "message";
            var expected = ServerMessageConstants.GetMessage(ServerMessageConstants.GENERAL_MESSAGE, nickname, message);

            Mock <WebSocket>      originSocketMock  = new Mock <WebSocket>();
            Mock <ISocketHandler> socketHandlerMock = new Mock <ISocketHandler>();

            var chatMessageHandler = new ChatMessageHandler(socketHandlerMock.Object);

            var taskResult = await chatMessageHandler.Handle(originSocketMock.Object, nickname, message);

            Assert.Equal(taskResult, expected);
        }
Пример #7
0
        public static void ChangeConfigValue(string command, string property, string value)
        {
            Plugin.Log("Config Change Attempt: " + command + " " + property + " " + value);
            object inifile = Plugin.ConfigSettings.GetField <object>("_instance");

            IniParser.Model.IniData data = inifile.GetField <IniParser.Model.IniData>("data");
            if (data.Sections.ContainsSection(command))
            {
                if (data.Sections[command].ContainsKey(property))
                {
                    inifile.InvokeMethod("IniWriteValue", command, property, value);
                    ChatMessageHandler.TryAsyncMessage("Changed Value");
                    Config.Load();
                }
            }
        }
Пример #8
0
        public async Task <MessageListModel> Send(SendMessageModel model, int userId, Language language, string deviceId)
        {
            string sentMessage;
            var    caller = await _repository.Filter <User>(u => u.Id == userId).FirstOrDefaultAsync();

            if (caller == null)
            {
                throw new Exception("caller not found");
            }
            var conversation = await _repository.Filter <Conversation>(x => x.Id == model.ConversationId)
                               .FirstOrDefaultAsync();

            if (conversation.AnnouncementCreatorId != caller.Id && conversation.QuestionerId != caller.Id)
            {
                throw new Exception(_optionsBinder.Error().NotParticipating);
            }
            if (conversation.AnnouncementCreatorConversationIsDeleted || conversation.QuestionerConversationIsDeleted)
            {
                conversation.QuestionerConversationIsDeleted          = false;
                conversation.AnnouncementCreatorConversationIsDeleted = false;
                _repository.Update(conversation);
            }

            var  body            = model.MessageText;
            var  messageBodyType = MessageBodyType.Text;
            long length          = 0;

            if (model.File != null)
            {
                messageBodyType = MessageBodyType.Image;
                body            = await _accessor.Upload(model.File, UploadType.MessageFiles, conversation.Id);

                var extension = Path.GetExtension(body);
                if (extension != ".jpg" && extension != ".jpeg" && extension != ".png")
                {
                    messageBodyType = MessageBodyType.File;
                }
                length = await _accessor.GetLength(body, UploadType.MessageFiles, conversation.Id);
            }
            int?replayValue = null;
            var receiverId  = conversation.AnnouncementCreatorId == caller.Id
              ? conversation.QuestionerId
              : conversation.AnnouncementCreatorId;
            var message = _repository.Create(new Message
            {
                ConversationId  = conversation.Id,
                MessageBodyType = messageBodyType,
                MessageText     = body,
                SenderId        = caller.Id,
                FileLength      = length,
                ReciverId       = receiverId,
                ReplayMessageId = model.ReplayMessageId.HasValue ? model.ReplayMessageId.Value : replayValue
            });
            await _repository.SaveChangesAsync();

            int unreadConversationCount = _repository.Filter <Message>(m => m.ReciverId == receiverId && !m.IsSeen).GroupBy(m => m.ConversationId).Count();
            var success = _repository.FilterAsNoTracking <PersonSetting>(x => x.UserId == receiverId).Where(x =>
                                                                                                            x.SubscriptionsType == SubscriptionsType.EnableMessageNotification).Count();
            var notify = (new MessageListModel
            {
                SenderId = caller.Id,
                FullName = message.User != null ? message.User.FullName : "User",
                Photo = message.User != null ? new ImageOptimizer
                {
                    Photo = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                     UploadType.ProfilePhoto, message.User.ProfilePhoto, ConstValues.Width, ConstValues.Height, false, 0),
                    PhotoBlur = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                         UploadType.ProfilePhoto, message.User.ProfilePhoto, 100, 100, true, 0)
                } : new ImageOptimizer(),
                CreatedDate = new DateTime(message.CreatedDt.Ticks),
                IsSentFromMe = false,
                MessageId = message.Id,
                MessageBodyType = messageBodyType,
                MessageText = message.MessageBodyType == MessageBodyType.Image
                    ? Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                               UploadType.MessageFiles, message.MessageText, 200, 200, false, conversation.Id) : message.MessageText,
                FileSize = length,
                FileUrl = messageBodyType == MessageBodyType.File
                    ? Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaDownload,
                                               UploadType.MessageFiles, message.MessageText, false, conversation.Id) : null,
                ReplayMessage = message.ReplayMessageId != null ? await _repository.Filter <Message>(s => s.Id == message.ReplayMessageId)
                                .Select(s => new MessageListModel
                {
                    MessageBodyType = s.MessageBodyType,
                    Photo = s.User != null ? new ImageOptimizer
                    {
                        Photo = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                         UploadType.ProfilePhoto, s.User.ProfilePhoto, ConstValues.Width, ConstValues.Height, false, 0),
                        PhotoBlur = Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                             UploadType.ProfilePhoto, s.User.ProfilePhoto, 100, 100, true, 0)
                    } : new ImageOptimizer(),
                    SenderId = s.SenderId,
                    FullName = s.User != null ? s.User.FullName : "User",
                    MessageId = s.Id,
                    MessageText = s.MessageBodyType == MessageBodyType.Image ?
                                  Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaResize,
                                                           UploadType.MessageFiles, s.MessageText, 1000, 1000, false, conversation.Id) : s.MessageText,
                    CreatedDate = s.CreatedDt,
                    IsSentFromMe = s.SenderId == caller.Id,
                    FileUrl = s.MessageBodyType == MessageBodyType.File ?
                              Utilities.ReturnFilePath(ConstValues.MediaBaseUrl, ConstValues.MediaDownload,
                                                       UploadType.MessageFiles, s.MessageText, false, conversation.Id) : null,
                    FileSize = s.FileLength
                }).FirstOrDefaultAsync() : null
            });

            var ann = _repository.Filter <Announcement>(a => a.Id == model.AnnouncementId).FirstOrDefault();

            if (ann != null)
            {
                await _activityService.AddOrUpdate(ann, caller.Id, false, ActivityType.Contacted);
            }
            var notifyToString = Utilities.SerializeObject(notify);
            var isSent         = await ChatMessageHandler.SendMessageAsync(conversation.Id, caller.Id, notifyToString, deviceId);

            if (isSent)
            {
                message.IsSeen = true;
                await _repository.SaveChangesAsync();
            }
            if (!isSent)
            {
                var receiverLanguage = await _repository.Filter <PersonOtherSetting>(x => x.UserId == receiverId)
                                       .Select(x => x.Language).FirstOrDefaultAsync();

                if (receiverLanguage == Language.English)
                {
                    sentMessage = "sent you a message";
                }
                else
                {
                    sentMessage = "ارسلت لك رساله";
                }
                await BaseMessageHandler.SendMessageAsync(conversation.Id, receiverId);

                if (success > 0)
                {
                    await _firebaseRepository.SendIndividualNotification(new NewMessageNotificationModel
                    {
                        SenderId    = caller.Id,
                        Description = messageBodyType == MessageBodyType.Image ? "Image" :
                                      messageBodyType == MessageBodyType.File ? "Photo" : model.MessageText,
                        GenericId               = conversation.Id,
                        NotificationType        = NotificationType.NewMessage,
                        ReceiverId              = receiverId,
                        Title                   = $"{caller.FullName} {sentMessage}",
                        UnreadConversationCount = unreadConversationCount
                    }, false);
                }
                await _firebaseRepository.SendIndividualNotification(new NewMessageNotificationModel
                {
                    SenderId    = caller.Id,
                    Description = messageBodyType == MessageBodyType.Image ? "Image" :
                                  messageBodyType == MessageBodyType.File ? "Photo" : model.MessageText,
                    GenericId               = conversation.Id,
                    NotificationType        = NotificationType.NewMessageGeneralInformation,
                    ReceiverId              = receiverId,
                    Title                   = $"{caller.FullName} {sentMessage}",
                    UnreadConversationCount = unreadConversationCount
                }, false);
            }
            return(notify);
        }
Пример #9
0
 public CarController(IHostingEnvironment env, ChatMessageHandler chatMessageHandler)
 {
     this._hostingEnv         = env;
     this._chatMessageHandler = chatMessageHandler;
 }
Пример #10
0
 public ChatController(ApplicationContext dbContext, ChatMessageHandler webSocketHandler)
 {
     this.DbContext   = dbContext;
     WebSocketHandler = webSocketHandler;
 }
Пример #11
0
 public void InitChatCore()
 {
     ChatMessageHandler.Load();
 }
Пример #12
0
        public static async Task Map(this HttpContext context, IEntityRepository repository)
        {
            var socket = await context.WebSockets.AcceptWebSocketAsync();

            context.Request.Query.TryGetValue("conversationId", out var conversationStringValues);
            if (conversationStringValues.Count == 0)
            {
                context.Request.Headers.TryGetValue("conversationId", out conversationStringValues);
            }
            int.TryParse(conversationStringValues, out var conversationId);
            var path = context.Request.Path.Value;

            if (conversationId == 0 && !path.Contains("supportBaseHub") && !path.Contains("baseHub") && !path.Contains("progressHub"))
            {
                return;
            }
            var userName = context.User.FindFirst(ClaimTypes.NameIdentifier)?.Value;

            // var userId = int.Parse(context.User.Claims.Single(u => u.Type == "userId").Value);//check

            context.Request.Headers.TryGetValue("deviceId", out var deviceIdString);
            if (deviceIdString.Count == 0)
            {
                context.Request.Query.TryGetValue("deviceId", out deviceIdString);
            }
            var  deviceId = deviceIdString.FirstOrDefault();
            User user     = null;

            if (!string.IsNullOrEmpty(userName))
            {
                user = await repository.Filter <User>(x => x.Email == userName || // add verfiedBy
                                                      (x.PhoneCode + x.Phone) == userName).FirstOrDefaultAsync();
            }
            if (path.Contains("supportChatHub", StringComparison.InvariantCulture))
            {
                var guest = await repository.Filter <Guest>(x => x.DeviceId == deviceId).FirstOrDefaultAsync();

                if (user == null && guest == null)
                {
                    return;
                }
                await SupportChatMessageHandler.OnConnected(conversationId, user?.Id ?? guest.Id, socket, user == null, deviceId);

                await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                {
                    if (result.MessageType == WebSocketMessageType.Close)
                    {
                        await SupportChatMessageHandler.OnDisconnected(conversationId, user?.Id ?? guest.Id, user == null, deviceId);
                    }
                });
            }
            else
            {
                if (user == null)
                {
                    return;
                }
                if (path.Contains("chatHub", StringComparison.InvariantCulture))
                {
                    await ChatMessageHandler.OnConnected(conversationId, user.Id, socket, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await ChatMessageHandler.OnDisconnected(conversationId, user.Id, deviceId);
                        }
                    });
                }
                if (path.Contains("supportBaseHub", StringComparison.InvariantCulture))
                {
                    await SupportBaseMessageHandler.OnConnected(user.Id, socket, false, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await SupportBaseMessageHandler.OnDisconnected(user.Id, false, deviceId);
                        }
                    });
                }
                if (path.Contains("baseHub", StringComparison.InvariantCulture))
                {
                    await BaseMessageHandler.OnConnected(user.Id, socket, false, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await BaseMessageHandler.OnDisconnected(user.Id, false, deviceId);
                        }
                    });
                }
                if (path.Contains("progressHub", StringComparison.InvariantCulture))
                {
                    await AnnouncementProgressHandler.OnConnected(user.Id, socket, deviceId);

                    await WebSocketManagerMapper.Receive(socket, async (result, buffer) =>
                    {
                        if (result.MessageType == WebSocketMessageType.Close)
                        {
                            await AnnouncementProgressHandler.OnDisconnected(user.Id, deviceId);
                        }
                    });
                }
            }
        }
Пример #13
0
 public RoomController(ChatMessageHandler handler)
 {
     ChatMessageHandler = handler;
 }
Пример #14
0
 public WebSocketController(ChatMessageHandler handler)
 {
     _handler = handler;
 }
Пример #15
0
 public ChatRoomRepository(FakeDbContext context, ChatMessageHandler chatMessageHandler)
 {
     this.context            = context;
     this.chatMessageHandler = chatMessageHandler;
 }