Exemple #1
0
        public void Apply(Schema model, SchemaFilterContext context)
        {
            if (model.Properties == null)
            {
                return;
            }

            var jsonContract = (JsonObjectContract)context.JsonContract;

            if (jsonContract == null)
            {
                throw new InvalidOperationException($"JSON contract is not defined for type {context.SystemType}");
            }

            foreach (var property in model.Properties.Where(x => x.Value.Enum != null))
            {
                var jsonProperty = jsonContract.Properties?.GetProperty(property.Key, StringComparison.Ordinal);

                if (jsonProperty == null)
                {
                    throw new InvalidOperationException($"Property {property.Key} not found in JSON contract for type {jsonContract.UnderlyingType}");
                }

                XmsEnumExtensionApplicator.Apply(property.Value.Extensions, jsonProperty.PropertyType, _options);
            }
        }
Exemple #2
0
        public void Apply(Operation operation, OperationFilterContext context)
        {
            if (operation.Parameters == null)
            {
                return;
            }

            var invalidParameters = context.ApiDescription.ParameterDescriptions.Where(p => p.Type == null).ToArray();

            if (invalidParameters.Any())
            {
                var invalidParameter = invalidParameters.First();
                var message          =
                    $@"Invalid parameter found. Probably parameter source mismatched. (e.g. You specified [FromQuery] for the path parameter).

Action: {context.ApiDescription?.ActionDescriptor.DisplayName}
Relaive path: {context.ApiDescription?.RelativePath}
OperationId: {operation.OperationId}
Parameter: {invalidParameter?.Name}
Expected parameter source: {invalidParameter?.Source.DisplayName}";
                throw new InvalidOperationException(message);
            }

            foreach (var parameter in GetEnumPerameters(context))
            {
                var operationParameter = operation.Parameters.Single(p => p.Name == parameter.Name);

                XmsEnumExtensionApplicator.Apply(operationParameter.Extensions, parameter.Type, _options);
            }
        }
        public void Apply(OpenApiSchema model, SchemaFilterContext context)
        {
            if (model.Properties == null)
            {
                return;
            }

            foreach (var property in model.Properties.Where(x => x.Value.Enum != null))
            {
                XmsEnumExtensionApplicator.Apply(property.Value.Extensions, property.Value.Type, _options);
            }
        }