Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1152,6 +1152,10 @@ public void addGenericHostSupportingFiles(final String clientPackageDir, final S
String extensionsFolder = sourceFolder + File.separator + packageName + File.separator + "Extensions";
supportingFiles.add(new SupportingFile("IHttpClientBuilderExtensions.mustache", extensionsFolder, "IHttpClientBuilderExtensions.cs"));
supportingFiles.add(new SupportingFile("IHostBuilderExtensions.mustache", extensionsFolder, "IHostBuilderExtensions.cs"));
// IHostApplicationBuilder is only available on .NET 8 or later
if (additionalProperties.containsKey(NET_80_OR_LATER)) {
supportingFiles.add(new SupportingFile("IHostApplicationBuilderExtensions.mustache", extensionsFolder, "IHostApplicationBuilderExtensions.cs"));
}
supportingFiles.add(new SupportingFile("IServiceCollectionExtensions.mustache", extensionsFolder, "IServiceCollectionExtensions.cs"));

String apiTestFolder = testFolder + File.separator + testPackageName() + File.separator + apiPackage();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
{{>partial_header}}
{{#nrt}}
#nullable enable

{{/nrt}}
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using {{packageName}}.{{clientPackage}};

namespace {{packageName}}.Extensions
{
/// <summary>
/// Extension methods for IHostApplicationBuilder
/// </summary>
{{>visibility}} static class IHostApplicationBuilderExtensions
{
{{^hasAuthMethods}}
/// <summary>
/// Add the api to your application builder.
/// </summary>
/// <param name="builder"></param>
public static IHostApplicationBuilder Configure{{apiName}}(this IHostApplicationBuilder builder)
{
HostConfiguration config = new(builder.Services);

IServiceCollectionExtensions.Add{{apiName}}(builder.Services, config);

return builder;
}

{{/hasAuthMethods}}
/// <summary>
/// Add the api to your application builder.
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostApplicationBuilder Configure{{apiName}}(this IHostApplicationBuilder builder, Action<HostConfiguration>{{nrt?}} options = null)
{
HostConfiguration config = new(builder.Services);

options?.Invoke(config);

IServiceCollectionExtensions.Add{{apiName}}(builder.Services, config);

return builder;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -45,15 +45,54 @@ using Microsoft.Extensions.DependencyInjection;
using {{packageName}}.Api;
using {{packageName}}.Client;
using {{packageName}}.Model;
using Org.OpenAPITools.Extensions;
using {{packageName}}.Extensions;

namespace YourProject
{
public class Program
{
public static async Task Main(string[] args)
{
{{#net80OrLater}}
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.Configure{{apiName}}(options =>
{
{{#authMethods}}
{{#-first}}
// The type of token here depends on the api security specifications
// Available token types are ApiKeyToken, BasicToken, BearerToken, HttpSigningToken, and OAuthToken.
BearerToken token = new("<your token>");
options.AddTokens(token);

// optionally choose the method the tokens will be provided with, default is RateLimitProvider
options.UseProvider<RateLimitProvider<BearerToken>, BearerToken>();

{{/-first}}
{{/authMethods}}
options.ConfigureJsonOptions(jsonOptions =>
{
// your custom converters if any
});

options.Add{{apiName}}HttpClients(client =>
{
// client configuration
}, clientBuilder =>
{
clientBuilder
.AddRetryPolicy(2)
.AddTimeoutPolicy(TimeSpan.FromSeconds(5))
.AddCircuitBreakerPolicy(10, TimeSpan.FromSeconds(30));
// add whatever middleware you prefer
});
});

IHost host = builder.Build();
{{/net80OrLater}}
{{^net80OrLater}}
var host = CreateHostBuilder(args).Build();
{{/net80OrLater}}
{{#apiInfo}}
{{#apis}}
{{#-first}}
Expand All @@ -72,6 +111,7 @@ namespace YourProject
{{/apis}}
{{/apiInfo}}
}
{{^net80OrLater}}

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.Configure{{apiName}}((context, options) =>
Expand Down Expand Up @@ -106,6 +146,7 @@ namespace YourProject
}
);
});
{{/net80OrLater}}
}
}
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ src/Org.OpenAPITools/Client/RateLimitProvider`1.cs
src/Org.OpenAPITools/Client/TokenBase.cs
src/Org.OpenAPITools/Client/TokenContainer`1.cs
src/Org.OpenAPITools/Client/TokenProvider`1.cs
src/Org.OpenAPITools/Extensions/IHostApplicationBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IHostBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IHttpClientBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IServiceCollectionExtensions.cs
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* Example
*
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
*
* The version of the OpenAPI document: 1.0.0
* Generated by: https://github.com/openapitools/openapi-generator.git
*/

#nullable enable

using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Org.OpenAPITools.Client;

namespace Org.OpenAPITools.Extensions
{
/// <summary>
/// Extension methods for IHostApplicationBuilder
/// </summary>
public static class IHostApplicationBuilderExtensions
{
/// <summary>
/// Add the api to your application builder.
/// </summary>
/// <param name="builder"></param>
public static IHostApplicationBuilder ConfigureApi(this IHostApplicationBuilder builder)
{
HostConfiguration config = new(builder.Services);

IServiceCollectionExtensions.AddApi(builder.Services, config);

return builder;
}

/// <summary>
/// Add the api to your application builder.
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostApplicationBuilder ConfigureApi(this IHostApplicationBuilder builder, Action<HostConfiguration>? options = null)
{
HostConfiguration config = new(builder.Services);

options?.Invoke(config);

IServiceCollectionExtensions.AddApi(builder.Services, config);

return builder;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,33 +53,33 @@ namespace YourProject
{
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.ConfigureApi(options =>
{
options.ConfigureJsonOptions(jsonOptions =>
{
// your custom converters if any
});

options.AddApiHttpClients(client =>
{
// client configuration
}, clientBuilder =>
{
clientBuilder
.AddRetryPolicy(2)
.AddTimeoutPolicy(TimeSpan.FromSeconds(5))
.AddCircuitBreakerPolicy(10, TimeSpan.FromSeconds(30));
// add whatever middleware you prefer
});
});

IHost host = builder.Build();
var api = host.Services.GetRequiredService<IDefaultApi>();
IListApiResponse apiResponse = await api.ListAsync("todo");
string? model = apiResponse.Ok();
}

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.ConfigureApi((context, options) =>
{
options.ConfigureJsonOptions((jsonOptions) =>
{
// your custom converters if any
});

options.AddApiHttpClients(client =>
{
// client configuration
}, builder =>
{
builder
.AddRetryPolicy(2)
.AddTimeoutPolicy(TimeSpan.FromSeconds(5))
.AddCircuitBreakerPolicy(10, TimeSpan.FromSeconds(30));
// add whatever middleware you prefer
}
);
});
}
}
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ src/Org.OpenAPITools/Client/RateLimitProvider`1.cs
src/Org.OpenAPITools/Client/TokenBase.cs
src/Org.OpenAPITools/Client/TokenContainer`1.cs
src/Org.OpenAPITools/Client/TokenProvider`1.cs
src/Org.OpenAPITools/Extensions/IHostApplicationBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IHostBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IHttpClientBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IServiceCollectionExtensions.cs
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
/*
* OpenAPI
*
* OpenAPI
*
* The version of the OpenAPI document: 0.0.1
* Generated by: https://github.com/openapitools/openapi-generator.git
*/

#nullable enable

using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Org.OpenAPITools.Client;

namespace Org.OpenAPITools.Extensions
{
/// <summary>
/// Extension methods for IHostApplicationBuilder
/// </summary>
public static class IHostApplicationBuilderExtensions
{
/// <summary>
/// Add the api to your application builder.
/// </summary>
/// <param name="builder"></param>
public static IHostApplicationBuilder ConfigureApi(this IHostApplicationBuilder builder)
{
HostConfiguration config = new(builder.Services);

IServiceCollectionExtensions.AddApi(builder.Services, config);

return builder;
}

/// <summary>
/// Add the api to your application builder.
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostApplicationBuilder ConfigureApi(this IHostApplicationBuilder builder, Action<HostConfiguration>? options = null)
{
HostConfiguration config = new(builder.Services);

options?.Invoke(config);

IServiceCollectionExtensions.AddApi(builder.Services, config);

return builder;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -53,30 +53,30 @@ namespace YourProject
{
public static async Task Main(string[] args)
{
var host = CreateHostBuilder(args).Build();
HostApplicationBuilder builder = Host.CreateApplicationBuilder(args);

builder.ConfigureApi(options =>
{
options.ConfigureJsonOptions(jsonOptions =>
{
// your custom converters if any
});

options.AddApiHttpClients(client =>
{
// client configuration
}, clientBuilder =>
{
clientBuilder
.AddRetryPolicy(2)
.AddTimeoutPolicy(TimeSpan.FromSeconds(5))
.AddCircuitBreakerPolicy(10, TimeSpan.FromSeconds(30));
// add whatever middleware you prefer
});
});

IHost host = builder.Build();
}

public static IHostBuilder CreateHostBuilder(string[] args) => Host.CreateDefaultBuilder(args)
.ConfigureApi((context, options) =>
{
options.ConfigureJsonOptions((jsonOptions) =>
{
// your custom converters if any
});

options.AddApiHttpClients(client =>
{
// client configuration
}, builder =>
{
builder
.AddRetryPolicy(2)
.AddTimeoutPolicy(TimeSpan.FromSeconds(5))
.AddCircuitBreakerPolicy(10, TimeSpan.FromSeconds(30));
// add whatever middleware you prefer
}
);
});
}
}
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ src/Org.OpenAPITools/Client/RateLimitProvider`1.cs
src/Org.OpenAPITools/Client/TokenBase.cs
src/Org.OpenAPITools/Client/TokenContainer`1.cs
src/Org.OpenAPITools/Client/TokenProvider`1.cs
src/Org.OpenAPITools/Extensions/IHostApplicationBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IHostBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IHttpClientBuilderExtensions.cs
src/Org.OpenAPITools/Extensions/IServiceCollectionExtensions.cs
Expand Down
Loading
Loading