private static HttpContent ConstructApplyValidatorBodyFromObject(object obj, string validatorId)
        {
            var dataType       = CollectionNameDeterminer.GetCollectionName(obj.GetType());
            var submitDataBody = new ApplyValidatorBody(dataType, obj, validatorId);

            return(PostBodyBuilder.ConstructBody(submitDataBody));
        }
        private static HttpContent ConstructApplyValidatorBodyFromJson(string dataType, string json, string validatorId)
        {
            var submitDataBody       = new ApplyValidatorBody(dataType, null, validatorId);
            var submitBodyJsonObject = JObject.FromObject(submitDataBody);

            submitBodyJsonObject["Data"] = JObject.Parse(json);
            return(PostBodyBuilder.ConstructBodyFromJObject(submitBodyJsonObject));
        }
示例#3
0
        public async Task <IActionResult> Apply([FromBody] ApplyValidatorBody body)
        {
            List <IValidator> matchingValidators;

            if (!string.IsNullOrEmpty(body.ValidatorId))
            {
                var validator = validatorManager.GetValidator(body.ValidatorId);
                if (validator == null)
                {
                    return(NotFound());
                }
                matchingValidators = new List <IValidator>
                {
                    validator
                };
            }
            else
            {
                matchingValidators = await validatorManager.GetApprovedValidators(body.DataType);
            }

            foreach (var validator in matchingValidators)
            {
                try
                {
                    var validationResult = validator.Validate(body.Data.ToString());
                    if (!validationResult.IsValid)
                    {
                        return(new ContentResult
                        {
                            ContentType = Conventions.JsonContentType,
                            Content = JsonConvert.SerializeObject(validationResult),
                            StatusCode = (int)HttpStatusCode.BadRequest
                        });
                    }
                }
                catch (Exception e)
                {
                    apiEventLogger.Log(LogLevel.Error, e.ToString());
                    return(StatusCode((int)HttpStatusCode.InternalServerError, e.Message));
                }
            }
            return(Ok());
        }