elsa-core/src/server/Elsa.Server.Api/Extensions/ServiceCollectionExtensions.cs

64 lines
2.4 KiB
C#
Raw Normal View History

2020-11-13 13:13:36 +00:00
using System;
using Elsa.Models;
2020-10-23 13:01:33 +00:00
using Elsa.Server.Api.Extensions;
2020-11-13 13:13:36 +00:00
using Elsa.Server.Api.Swagger;
2020-10-19 20:12:11 +00:00
using Microsoft.AspNetCore.Mvc;
2020-11-13 13:13:36 +00:00
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.Filters;
using Swashbuckle.AspNetCore.SwaggerGen;
2020-10-19 20:12:11 +00:00
// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static class ServiceCollectionExtensions
{
public static IServiceCollection AddElsaApiEndpoints(this IServiceCollection services)
{
services.AddControllers().AddJsonSerialization();
2020-10-19 20:12:11 +00:00
services.AddRouting(options => options.LowercaseUrls = true);
2020-11-13 13:13:36 +00:00
services.AddVersionedApiExplorer(o =>
{
o.GroupNameFormat = "'v'VVV";
o.SubstituteApiVersionInUrl = true;
});
2020-10-19 20:12:11 +00:00
services.AddApiVersioning(
options =>
{
options.ReportApiVersions = true;
options.DefaultApiVersion = ApiVersion.Default;
options.AssumeDefaultVersionWhenUnspecified = true;
});
return services;
}
2020-11-13 13:13:36 +00:00
public static IServiceCollection AddElsaSwagger(this IServiceCollection services, Action<SwaggerGenOptions>? configure = default) =>
services
.AddSwaggerExamplesFromAssemblyOf<WorkflowDefinitionExample>()
.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new OpenApiInfo {Title = "Elsa", Version = "v1"});
c.EnableAnnotations();
c.ExampleFilters();
c.MapType<VersionOptions?>(() => new OpenApiSchema
{
Type = PrimitiveType.String.ToString().ToLower(),
Example = new OpenApiString("Latest"),
Description = "Any of Latest, Published, Draft, LatestOrPublished or a specific version number.",
Nullable = true,
Default = new OpenApiString("Latest")
});
c.MapType<Type>(() => new OpenApiSchema
{
Type = PrimitiveType.String.ToString().ToLower(),
Example = new OpenApiString("System.String, mscorlib")
});
configure?.Invoke(c);
});
2020-10-19 20:12:11 +00:00
}
}