public SolutionsResponse GetSolution(SolutionsRequest request) { if (!_helper.IsDayYearValid(request.Day, request.Year)) { throw new DayOrYearNotValidException(); } var language = Constants.DefaultLanguage; var script = _helper.BuildScriptPath(request.Year, request.Day, language); if (!File.Exists(script)) { throw new DayNotImplementedException(); } var interpreter = _config[language]; if (!File.Exists(interpreter)) { throw new InterpreterNotFoundException(); } File.WriteAllText(@"..\input\" + request.Day + ".txt", request.Input); var(err, result) = RunScript(interpreter, script); var parts = result.Split("\r\n"); if (parts.Length > 2) { throw new UnexpectedResultLengthException(result); } return(new SolutionsResponse { Part1 = parts.Length > 0 ? parts[0] : null, Part2 = parts.Length > 1 ? parts[1] : null, Error = parts.Length > 2 ? "Output: " + string.Join(";", parts.Skip(2)) + (err == null ? "" : "\nError: " + err) : err }); }
public object GetResult(SolutionsRequest request) { try { return(_service.GetSolution(request)); } catch (AdventOfCodeException e) { HttpContext.Response.StatusCode = e.Code; return(new ProblemDetails { Status = e.Code, Title = e.Title, Detail = e.Message }); } catch (Exception e) { // logging HttpContext.Response.StatusCode = 500; return(new ProblemDetails { Status = 500, Title = "Internal server error.", Detail = e.Message }); } }
private async Task SendPostRequest(SolutionsRequest solutionsRequest) { _response.Result = await Client.PostAsJsonAsync(ListSolutionsUrl, solutionsRequest).ConfigureAwait(false); }
private async Task SendPostRequest(SolutionsRequest solutionsRequest) { response.Result = await Client.PostAsJsonAsync(ListSolutionsUrl, solutionsRequest); }