public void OnActionExecuted(ActionExecutedContext context)
        {
            if (_context.AnyNotification)
            {
                var responseObj = new ResultWithErrors(_context.GetNotifications());

                if (ExisteNotFound(responseObj))
                {
                    context.Result = new NotFoundObjectResult(responseObj)
                    {
                        ContentTypes = { "application/problem+json" }
                    };
                    context.Canceled = true;
                }
                else
                {
                    context.Result = new BadRequestObjectResult(responseObj)
                    {
                        ContentTypes = { "application/problem+json" }
                    };
                    context.Canceled = true;
                }
                return;
            }

            if (!context.ModelState.IsValid)
            {
                context.Result = new BadRequestObjectResult(new ResultWithErrors(context.ModelState.Values.SelectMany(v => v.Errors.Select(x => new Notification(string.Empty, nameof(Messages.InternalError), string.Empty, x.ErrorMessage, 400)))))
                {
                    ContentTypes = { "application/problem+json" }
                };
                context.Canceled = true;
            }
        }
コード例 #2
0
        private TestSchemaCache(ResultWithErrors <ResourceTypeSchema[]> schemaResults)
        {
            if (schemaResults.Errors.Any())
            {
                var errors = schemaResults.Errors
                             .Where(err => !SchemaLoader.CircularReferenceSchemas.Contains(err.Target))
                             .ToArray();

                if (errors.Any())
                {
                    var errorsJson = JsonConvert.SerializeObject(errors, Formatting.Indented);
                    throw new InvalidOperationException($"Found errors building normalized cache: {errorsJson}");
                }
            }

            this.schemaCache = schemaResults.Value
                               .GroupByOrdinalInsensitively(schema => schema.ResourceProviderNamespace)
                               .ToDictionary(
                keySelector: grouping => grouping.Key,
                elementSelector: grouping => grouping.ToLookupOrdinalInsensitively(schema => schema.FullyQualifiedResourceType),
                comparer: StringComparer.OrdinalIgnoreCase);
        }
 private bool ExisteNotFound(ResultWithErrors responseObj)
 {
     return(responseObj.Erros.Any(e => e.Status == StatusCodes.Status404NotFound));
 }