コード例 #1
0
        public IActionResult FilterExtremumCandles([FromBody] CandlesFiltrationRequestModel request, bool analyzeOnly)
        {
            var modelErrors = CandlesFiltrationRequestModel.CheckupModel(request);

            if (modelErrors.Count > 0)
            {
                var response = new ErrorResponse();
                foreach (var me in modelErrors)
                {
                    response.AddModelError(me.Key, me.Value);
                }

                return(BadRequest(response));
            }

            var filtrationLaunchResult = _candlesFiltrationManager.Filtrate(request, analyzeOnly);

            switch (filtrationLaunchResult)
            {
            case CandlesFiltrationManager.FiltrationLaunchResult.AlreadyInProgress:
                return(Ok("The previous filtration session still has not been finished. Parallel execution is not supported."));

            case CandlesFiltrationManager.FiltrationLaunchResult.AssetPairNotSupported:
                return(BadRequest(
                           ErrorResponse.Create("The specified asset pair is not supported.")));

            default:
                return(Ok());
            }
        }
        public void OnException(ExceptionContext context)
        {
            if (context.Exception is ArgumentValidationException argException)
            {
                ErrorResponse error= ErrorResponse.Create("Validation Error");

                error.AddModelError(argException.ParamName, argException.Message);
                context.HttpContext.Response.StatusCode = (int)HttpStatusCode.BadRequest;
                var jsonString = Newtonsoft.Json.JsonConvert.SerializeObject(error);
                byte[] data = Encoding.UTF8.GetBytes(jsonString);
                context.HttpContext.Response.ContentType = "application/json";
                context.HttpContext.Response.Body.Write(data, 0, data.Length);
                context.ExceptionHandled = true;
            }
        }