44 lines
1.4 KiB
C#
44 lines
1.4 KiB
C#
// Copyright (c) HelloShop Corporation. All rights reserved.
|
|
// See the license file in the project root for more information.
|
|
|
|
using Microsoft.AspNetCore.OpenApi;
|
|
using Microsoft.Net.Http.Headers;
|
|
using Microsoft.OpenApi;
|
|
|
|
namespace HelloShop.ServiceDefaults.Infrastructure
|
|
{
|
|
public sealed class AcceptLanguageHeaderDocumentTransformer : IOpenApiDocumentTransformer
|
|
{
|
|
public Task TransformAsync(OpenApiDocument document, OpenApiDocumentTransformerContext context, CancellationToken cancellationToken)
|
|
{
|
|
var parameter = new OpenApiParameter
|
|
{
|
|
Name = HeaderNames.AcceptLanguage,
|
|
In = ParameterLocation.Header,
|
|
Required = false,
|
|
Schema = new OpenApiSchema
|
|
{
|
|
Type = JsonSchemaType.String,
|
|
Default = "zh-CN",
|
|
Enum = ["zh-CN", "en-US"]
|
|
}
|
|
};
|
|
|
|
foreach (var path in document.Paths.Values)
|
|
{
|
|
if (path.Operations != null)
|
|
{
|
|
foreach (var operation in path.Operations.Values)
|
|
{
|
|
operation.Parameters ??= [];
|
|
operation.Parameters.Add(parameter);
|
|
}
|
|
continue;
|
|
}
|
|
}
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
}
|
|
}
|