Files
hello-shop/src/HelloShop.ServiceDefaults/Infrastructure/AcceptLanguageHeaderDocumentTransformer.cs
T

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