public async Task <IActionResult> GetMessagesForSession(AuthorizedIntViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var fromEmail =
                    await Services.AuthorizationServices.VerifyToken(clientFactory, viewModel.JwtFrom);

                if (fromEmail != null)
                {
                    try
                    {
                        return(Ok(
                                   JsonConvert.SerializeObject(await sessionRepository.GetMessagesForSessionAsync(
                                                                   viewModel.Value,
                                                                   fromEmail
                                                                   ))
                                   ));
                    }
                    catch (EmailNotAssociatedWithMessageSessionException)
                    {
                        return(BadRequest("User must be associated with message session to see messages."));
                    }
                }
            }
            return(BadRequest(ModelState));
        }
示例#2
0
        public async Task <IActionResult> Confirm(AuthorizedIntViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                // In the case of confirmation, the JWT email is the user confirming the friendship
                // rather than the requester (see method Create())
                var fromEmail =
                    await Services.AuthorizationServices.VerifyToken(_clientFactory, viewModel.JwtFrom);

                if (fromEmail != null)
                {
                    try
                    {
                        var friendship = await friendshipRepo.ConfirmFriendshipAsync(viewModel.Value, fromEmail);

                        return(Ok());
                    }
                    catch (FriendshipDoesNotExistException)
                    {
                        return(BadRequest("Friendship does not exist"));
                    }
                    catch (UnauthorizedFriendConfirmException)
                    {
                        return(BadRequest("Friendship cannot be authorized with token"));
                    }
                }
            }

            return(BadRequest(ModelState));
        }
        public async Task <IActionResult> DeleteSession(AuthorizedIntViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var fromEmail =
                    await Services.AuthorizationServices.VerifyToken(clientFactory, viewModel.JwtFrom);

                if (fromEmail != null)
                {
                    try
                    {
                        var session = await sessionRepository.DeleteMessageSessionAsync(viewModel.Value, fromEmail);

                        if (session == null)
                        {
                            return(BadRequest("Session does not exist."));
                        }
                        return(Ok());
                    }
                    catch (EmailDoesNotMatchMessageSessionOwnerException)
                    {
                        return(BadRequest("Attempted to delete session not owned by requester."));
                    }
                }
            }
            return(BadRequest());
        }
示例#4
0
        public static async Task <ResponseResult> RemoveFriendship(string jwt, int id)
        {
            using (var request = new HttpRequestMessage(HttpMethod.Post, $"{URI}/Remove"))
            {
                var viewModel = new AuthorizedIntViewModel {
                    JwtFrom = jwt, Value = id
                };

                request.Content = new StringContent(JsonConvert.SerializeObject(viewModel), Encoding.UTF8, "application/json");
                var response = await _client.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    return(new ResponseResult(true));
                }

                return(new ResponseResult(false));
            }
        }
示例#5
0
        public static async Task <ResponseResult <Message[]> > GetMessages(string jwt, int sessionId)
        {
            using (var request = new HttpRequestMessage(HttpMethod.Get, $"{URI}/GetMessages"))
            {
                var viewModel = new AuthorizedIntViewModel {
                    JwtFrom = jwt, Value = sessionId
                };
                request.Content = new StringContent(JsonConvert.SerializeObject(viewModel), Encoding.UTF8, "application/json");

                var response = await _client.SendAsync(request);

                if (response.IsSuccessStatusCode)
                {
                    return(new ResponseResult <Message[]>(
                               true,
                               JsonConvert.DeserializeObject <Message[]>(await response.Content.ReadAsStringAsync())
                               ));
                }
                return(new ResponseResult <Message[]>(false, null));
            }
        }