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 }); } }
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 = "Сообщение отправлено" })); }
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()); }
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()); }
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()); }