public static async Task Transfer(this TransmittedMessage transmittedMessage)
        {
            var bodyText = transmittedMessage.Body.Text;

            if (bodyText == null)
            {
                throw new ArgumentException($"Сообщение пустое");
            }

            var api = new VkApi();
            await api.AuthorizeAsync(new ApiAuthParams
            {
                AccessToken = transmittedMessage.AuthorizedSender.AccessToken
            });

            var receiverIds = transmittedMessage.Receivers
                              .Select(receiver => api.GetReceiverId(receiver.Id));

            foreach (var receiverId in receiverIds)
            {
                await api.Messages.SendAsync(new MessagesSendParams
                {
                    Message = bodyText,
                    PeerId  = receiverId
                });
            }
        }
示例#2
0
        public async Task <IActionResult> TransferMessage([FromBody] TransmittedMessage transmittedMessage)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(new ResponseResult
                {
                    IsOk = false,
                    Description = "Не передано сообщение или данные для авторизации"
                }));
            }

            try
            {
                await transmittedMessage.Transfer();
            }
            catch (Exception e)
            {
                return(BadRequest(new ResponseResult
                {
                    IsOk = false,
                    Description = e.Message
                }));
            }

            return(Ok(new ResponseResult {
                IsOk = false, Description = "Сообщение отправлено"
            }));
        }
示例#3
0
        public async void Message_With_Invalid_Credentials_Throws_UserAuthorizationFailException()
        {
            TransmittedMessage transmittedMessage = new TransmittedMessage()
            {
                AuthorizedSender = new AuthorizedUser()
                {
                    AccessToken = "invalid"
                }
            };

            await Assert.ThrowsAsync <UserAuthorizationFailException>(async() => await transmittedMessage.Transfer());
        }
示例#4
0
        public async Task <ActionResult> IndexAsync([FromBody] TransmittedMessage message)
        {
            var session = User.Identity.AsUserSessionIdentity().Session;

            Message msg = new Message();

            msg.Body       = (message.Body);
            msg.To         = (message.To);
            msg.Type       = (message.Type);
            msg.SentAt     = DateTime.Now;
            msg.FromUserId = session.UserId;

            await messageService.SendAsync(msg);

            return(Ok());
        }
示例#5
0
        public async void Message_With_Nonexistent_Receiver_Throws_AggregateException()
        {
            TransmittedMessage transmittedMessage = new TransmittedMessage()
            {
                AuthorizedSender = new AuthorizedUser()
                {
                    AccessToken = ValidAcessToken
                },
                Body = new MessageBody("sample_text")
            };
            var Receivers = new[]
            {
                new ExternalUser("very long just nonexistent username with spaces")
            };

            var aggregateException = await Assert.ThrowsAsync <AggregateException>(async() => await transmittedMessage.Transfer());
        }