Example #1
0
        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
            });
        }
Example #2
0
        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);
 }