Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public void Apply(Schema schema, SchemaFilterContext context)
- {
- if (context.SystemType.IsEnum)
- {
- var names = Enum.GetNames(context.SystemType);
- var values = Enum.GetValues(context.SystemType);
- var desc = "";
- foreach (var value in values)
- {
- var intValue = Convert.ChangeType(value, Enum.GetUnderlyingType(value.GetType()));
- desc += $"{intValue}={value},";
- }
- desc = desc.TrimEnd(',');
- schema.Extensions.Add("x-enumNames", names);
- schema.Extensions["description"] = desc;
- }
- }
- resolution: {
- format: "int32",
- enum: [
- 1,
- 2,
- 3,
- 4
- ],
- type: "integer",
- x-enumNames: [
- "Hour",
- "Day",
- "Month",
- "Year"
- ],
- description: "1=Hour,2=Day,3=Month,4=Year"
- }
- public async Task<ActionResult<ReturnType>> GetData(Models.ResolutionEnum resolution)
- {
- name: "resolution",
- in: "query",
- required: true,
- type: "integer",
- format: "int32",
- enum: [
- 1,
- 2,
- 3,
- 4
- ]
- }
- public class InjectXStuff : IDocumentFilter
- {
- public void Apply(SwaggerDocument s, DocumentFilterContext c)
- {
- PathItem path = s.Paths.Where(x => x.Key.Contains("Values")).First().Value;
- path.Post.Parameters.FirstOrDefault().Extensions.Add("x-stuff", "123456");
- }
- }
- public class ModifyParametersFilter : IParameterFilter
- {
- public void Apply(IParameter parameter, ParameterFilterContext context)
- {
- var type = context.ParameterInfo?.ParameterType;
- if (type == null)
- return;
- if (type.IsEnum)
- {
- var names = Enum.GetNames(type);
- var values = Enum.GetValues(type);
- var desc = "";
- foreach (var value in values)
- {
- var intValue = Convert.ChangeType(value, Enum.GetUnderlyingType(value.GetType()));
- desc += $"{intValue}={value},";
- }
- desc = desc.TrimEnd(',');
- if (!parameter.Extensions.ContainsKey("x-enumNames"))
- parameter.Extensions.Add("x-enumNames", names);
- }
- }
- }
- services.AddSwaggerGen(c =>
- {
- ..
- c.ParameterFilter<ModifyParametersFilter>();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement