Skip to content
Snippets Groups Projects
Commit c992191f authored by Benedikt Heinrichs's avatar Benedikt Heinrichs
Browse files

Docs + small cleanup

parent e567d4b5
Branches
Tags v2.8.0
1 merge request!1New: Create a Api Client Script
# CodeGen
This project aims to be able to generate Code from our Swagger / OpenAPI definitions.
## Build
* .NET 5 SDK has to be installed
* `dotnet build src`
## Usage
* Execute the built CodeGen executable
* You should find the output client definitions in the specified output folder (default. `Output`)
## Implementation
An abstract `CodeGenerator` has been implemented fully as a `CoscineCodeGenerator`.
The idea is that with this abstraction someone can easily adapt and generate the code they want to produce.
......@@ -10,6 +10,7 @@ namespace Coscine.CodeGen.CodeGenerator
{
public abstract class CodeGenerator
{
#region Functionality
public async Task GenerateCode()
{
var jarFileName = await GetClientGenerator();
......@@ -36,9 +37,9 @@ namespace Coscine.CodeGen.CodeGenerator
foreach (var key in keys)
{
Console.WriteLine(key);
string swaggerUrl = await GetSwaggerUrl(domainName, hostName, key);
var command = $"java \"-Dio.swagger.parser.util.RemoteUrl.trustAll=true\" \"-Dio.swagger.v3.parser.util.RemoteUrl.trustAll=true\" -jar \"{jarFileName}\" generate -i \"{swaggerUrl}\" -g typescript-axios -o \"{outputPath}/{key}\" --skip-validate-spec";
var swaggerUrl = await GetSwaggerUrl(domainName, hostName, key);
var command = GetGenerationCommand(outputPath, jarFileName, key, swaggerUrl);
await ExecuteCommand(command);
}
......@@ -159,17 +160,22 @@ const apis = implementations(instance);
return process.WaitForExitAsync();
}
}
#endregion
internal abstract Task<string> GetSwaggerUrl(string domainName, string hostName, string key);
internal abstract Task<string> GetCustomBasePath(string directoryName);
#region Abstract Methods
public abstract Task<string> GetClientGenerator();
internal abstract Task<string> GetCustomCodeForCombinationFile(string combinationFileText);
public abstract Task<IEnumerable<string>> GetApiNames();
internal abstract Task<string> GetOutputPath();
public abstract Task<string> GetClientGenerator();
internal abstract Task<string> GetSwaggerUrl(string domainName, string hostName, string key);
public abstract Task<IEnumerable<string>> GetApiNames();
internal abstract string GetGenerationCommand(string outputPath, string jarFileName, string key, string swaggerUrl);
internal abstract Task<string> GetCustomBasePath(string directoryName);
internal abstract Task<string> GetCustomCodeForCombinationFile(string combinationFileText);
#endregion
}
}
......@@ -19,7 +19,6 @@ namespace Coscine.CodeGen.CodeGenerator
public async override Task<string> GetClientGenerator()
{
var jarDownloadLink = await _configuration.GetStringAsync("coscine/local/codegen/jarlink",
//"https://repo1.maven.org/maven2/io/swagger/codegen/v3/swagger-codegen-cli/3.0.27/swagger-codegen-cli-3.0.27.jar"
"https://repo1.maven.org/maven2/org/openapitools/openapi-generator-cli/5.2.1/openapi-generator-cli-5.2.1.jar"
);
......@@ -43,11 +42,17 @@ namespace Coscine.CodeGen.CodeGenerator
{
return await _configuration.GetStringAsync("coscine/local/codegen/outputpath", "Output");
}
internal override Task<string> GetSwaggerUrl(string domainName, string hostName, string key)
{
return Task.FromResult($"https://{hostName}.{domainName}/coscine/api/{key}/swagger/v1/swagger.json");
}
internal override string GetGenerationCommand(string outputPath, string jarFileName, string key, string swaggerUrl)
{
return $"java \"-Dio.swagger.parser.util.RemoteUrl.trustAll=true\" \"-Dio.swagger.v3.parser.util.RemoteUrl.trustAll=true\" -jar \"{jarFileName}\" generate -i \"{swaggerUrl}\" -g typescript-axios -o \"{outputPath}/{key}\" --skip-validate-spec";
}
internal override Task<string> GetCustomBasePath(string directoryName)
{
return Task.FromResult($"https://' + getHostName() + '/coscine/api/{directoryName}");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment