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); } }
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); } }