Files
api-generator/Generator/Infrastructure/OpenApi/OpenApiDirector.cs
2025-10-11 13:08:09 +02:00

76 lines
2.4 KiB
C#

using Core.Events;
using Core.Interfaces;
using Core.Settings;
using Core.Yaml;
using Generator.Infrastructure.OpenApi.Builders;
namespace Generator.Infrastructure.OpenApi;
public class OpenApiDirector : IGeneratorDirector<OpenApiYaml>
{
private DisplayEmitter _emitter;
public OpenApiDirector(DisplayEmitter emitter)
{
_emitter = emitter;
}
/// <summary>
/// Launches dotnet server generation
/// </summary>
/// <param name="file"></param>
/// <param name="config"></param>
public async Task DotnetServer(OpenApiYaml file, DotnetConfig config)
{
var dotnetServerBuilder = new OpenApiDotnetServerBuilder(config, _emitter);
dotnetServerBuilder.Load(file);
dotnetServerBuilder.CreateGeneratorConfig();
dotnetServerBuilder.Generate();
dotnetServerBuilder.Build();
await dotnetServerBuilder.ExecuteAllAsync();
}
/// <summary>
/// Launches dotnet client generation
/// </summary>
/// <param name="file"></param>
/// <param name="config"></param>
public async Task DotnetClient(OpenApiYaml file, DotnetConfig config)
{
var dotnetClientBuilder = new OpenApiDotnetClientBuilder(config, _emitter);
dotnetClientBuilder.Load(file);
dotnetClientBuilder.CreateGeneratorConfig();
dotnetClientBuilder.Generate();
dotnetClientBuilder.Build();
await dotnetClientBuilder.ExecuteAllAsync();
}
/// <summary>
/// Launches java generation
/// </summary>
/// <param name="file"></param>
/// <param name="config"></param>
public async Task Java(OpenApiYaml file, JavaConfig config)
{
var javaBuilder = new OpenApiJavaBuilder(config, _emitter);
javaBuilder.Load(file);
javaBuilder.CreateGeneratorConfig();
javaBuilder.Generate();
javaBuilder.Build();
await javaBuilder.ExecuteAllAsync();
}
/// <summary>
/// Launches javascript generation
/// </summary>
/// <param name="file"></param>
/// <param name="config"></param>
public async Task Javascript(OpenApiYaml file, JavascriptConfig config)
{
_emitter.Warn(this, "Javascript generation is temporally disabled");
/*var jsBuilder = new OpenApiJavascriptBuilder(config, _emitter);
jsBuilder.Load(file);
jsBuilder.Generate();
await jsBuilder.ExecuteAllAsync();*/
}
}