public async Task <PonyMoveResponseModel> MovePony(string mazeId, PonyMoveRequestModel ponyMoveRequestModel) { if (!mazes.ContainsKey(mazeId)) { return(new PonyMoveResponseModel { IsSuccessful = false, MoveResult = Resources.MazeService.WrongMazeMessage }); } if (ponyMoveRequestModel.Direction.Equals(Resources.MazeService.Automatically)) { ponyMoveRequestModel.Direction = mazes[mazeId].GetMoveDirection(); } else { mazes[mazeId].ShouldSolveAgain = true; } var moveResponse = await httpClient.PostAsync($"{ponyApiUri}/{mazeId}", new StringContent( JsonConvert.SerializeObject(ponyMoveRequestModel).ToString(), Encoding.UTF8, "application/json" )); var moveResponseContent = await moveResponse.Content.ReadAsStringAsync(); var ponyMoveResponseModel = JsonConvert.DeserializeObject <PonyMoveResponseModel>(moveResponseContent); var isMoveSuccessful = ponyMoveResponseModel.MoveResult.Equals(Resources.MazeService.MoveAccepted); if (!isMoveSuccessful) { ponyMoveResponseModel.IsSuccessful = false; return(ponyMoveResponseModel); } var mazeDataResponse = await httpClient.GetAsync($"{ponyApiUri}/{mazeId}"); var mazeDataResponseContent = await mazeDataResponse.Content.ReadAsStringAsync(); var mazeDataResponseModel = JsonConvert.DeserializeObject <MazeDataResponseModel>(mazeDataResponseContent); ponyMoveResponseModel.IsSuccessful = true; ponyMoveResponseModel.MazeData = mazeDataResponseModel; mazes[mazeId].UpdatePonyLocation(ponyMoveRequestModel.Direction); return(ponyMoveResponseModel); }
public async Task <PonyMoveResponseModel> Post(string mazeId, [FromBody] PonyMoveRequestModel ponyMoveRequestModel) { return(await mazeService.MovePony(mazeId, ponyMoveRequestModel)); }