private async Task <TaskSolutionResult> ValidateTaskSolution(TaskSolutionModel taskSolution) { var task = _context.Tasks.First(x => x.Id == taskSolution.TaskId); var request = new ExecuteCodeRequest { Program = taskSolution.Solution, Input = task.Input }; var response = await _rextesterApiClient.ExecuteCode(request); return(new TaskSolutionResult { IsSuccess = response.IsSuccess && task.Output == response.Result.Trim(), Error = response.Errors }); }
public async Task <ExecuteCodeResponse> ExecuteCode(ExecuteCodeRequest request) { var json = JsonConvert.SerializeObject(request); var data = new StringContent(json, Encoding.UTF8, "application/json"); var response = await _httpClient.PostAsync(_settings.Value.RextesterApiBaseUrl, data); var result = await response.Content.ReadAsStringAsync(); if (!response.IsSuccessStatusCode) { throw new Exception($"{nameof(ExecuteCode)} request failed with status code: {response.StatusCode}"); } return(JsonConvert.DeserializeObject <ExecuteCodeResponse>(result)); }