예제 #1
0
        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));
        }