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 @@ -22,7 +22,7 @@ namespace {{packageName}}.{{clientPackage}}
/// <summary>
/// Provides hosting configuration for {{packageName}}
/// </summary>
{{>visibility}} class HostConfiguration
{{>visibility}} partial class HostConfiguration
{
private readonly IServiceCollection _services;
private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions();
Expand Down Expand Up @@ -81,6 +81,7 @@ namespace {{packageName}}.{{clientPackage}}
{{/useSourceGeneration}}
_services.AddSingleton<IApiFactory, ApiFactory>();{{#apiInfo}}{{#apis}}
_services.AddSingleton<{{classname}}Events>();{{/apis}}{{/apiInfo}}
OnHostConfigurationCreated();
}

/// <summary>
Expand Down Expand Up @@ -125,17 +126,46 @@ namespace {{packageName}}.{{clientPackage}}

List<IHttpClientBuilder> builders = new List<IHttpClientBuilder>();

{{#apiInfo}}{{#apis}}builders.Add(_services.AddHttpClient<{{interfacePrefix}}{{classname}}, {{classname}}>("{{packageName}}.{{apiPackage}}.{{interfacePrefix}}{{classname}}", client));
{{/apis}}{{/apiInfo}}
if (builder != null)
foreach (IHttpClientBuilder instance in builders)
builder(instance);
{{#apiInfo}}
{{#apis}}
builders.Add(_services.AddHttpClient<{{interfacePrefix}}{{classname}}, {{classname}}>("{{packageName}}.{{apiPackage}}.{{interfacePrefix}}{{classname}}", client));
{{/apis}}
{{/apiInfo}}

foreach (IHttpClientBuilder instance in builders)
{
OnAdd{{apiName}}HttpClientBuilder(instance);
builder?.Invoke(instance);
}

HttpClientsAdded = true;

return this;
}

/// <summary>
/// Applies configuration to each HttpClient after registration.
/// Implement this partial method in a separate file to provide custom defaults;
/// the caller's <c>builder</c> action runs after.
/// </summary>
/// <param name="builder"></param>
partial void OnAdd{{apiName}}HttpClientBuilder(IHttpClientBuilder builder);

/// <summary>
/// Called at the end of the constructor after all JSON converters and services are registered.
/// Implement this partial method to further configure <c>_jsonOptions</c> or register additional singletons via <c>_services</c>.
/// </summary>
partial void OnHostConfigurationCreated();

/// <summary>
/// Called after all services have been registered.
/// Implement this partial method to register additional services.
/// </summary>
/// <param name="services"></param>
partial void OnServicesAdded(IServiceCollection services);

internal void NotifyServicesAdded(IServiceCollection services) => OnServicesAdded(services);

/// <summary>
/// Configures the JsonSerializerSettings
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@ namespace {{packageName}}.Extensions
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostBuilder Configure{{apiName}}(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration> options)
public static IHostBuilder Configure{{apiName}}(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration>{{nrt?}} options = null)
Comment thread
devhl-labs marked this conversation as resolved.
{
builder.ConfigureServices((context, services) =>
{
HostConfiguration config = new HostConfiguration(services);

options(context, config);
options?.Invoke(context, config);

IServiceCollectionExtensions.Add{{apiName}}(services, config);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ namespace {{packageName}}.Extensions
s => s.GetRequiredService(typeof(RateLimitProvider<>).MakeGenericType(tokenType)));
}
}

host.NotifyServicesAdded(services);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ namespace Org.OpenAPITools.Client
/// <summary>
/// Provides hosting configuration for Org.OpenAPITools
/// </summary>
public class HostConfiguration
public partial class HostConfiguration
{
private readonly IServiceCollection _services;
private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions();
Expand Down Expand Up @@ -52,6 +52,7 @@ public HostConfiguration(IServiceCollection services)
JsonSerializerOptionsProvider jsonSerializerOptionsProvider = new(_jsonOptions);
_services.AddSingleton(jsonSerializerOptionsProvider);
_services.AddSingleton<IApiFactory, ApiFactory>();
OnHostConfigurationCreated();
}

/// <summary>
Expand Down Expand Up @@ -96,16 +97,41 @@ public HostConfiguration AddApiHttpClients(

List<IHttpClientBuilder> builders = new List<IHttpClientBuilder>();


if (builder != null)
foreach (IHttpClientBuilder instance in builders)
builder(instance);

foreach (IHttpClientBuilder instance in builders)
Comment thread
devhl-labs marked this conversation as resolved.
{
OnAddApiHttpClientBuilder(instance);
builder?.Invoke(instance);
}

HttpClientsAdded = true;

return this;
}

/// <summary>
/// Applies configuration to each HttpClient after registration.
/// Implement this partial method in a separate file to provide custom defaults;
/// the caller's <c>builder</c> action runs after.
/// </summary>
/// <param name="builder"></param>
partial void OnAddApiHttpClientBuilder(IHttpClientBuilder builder);

/// <summary>
/// Called at the end of the constructor after all JSON converters and services are registered.
/// Implement this partial method to further configure <c>_jsonOptions</c> or register additional singletons via <c>_services</c>.
/// </summary>
partial void OnHostConfigurationCreated();

/// <summary>
/// Called after all services have been registered.
/// Implement this partial method to register additional services.
/// </summary>
/// <param name="services"></param>
partial void OnServicesAdded(IServiceCollection services);

internal void NotifyServicesAdded(IServiceCollection services) => OnServicesAdded(services);

/// <summary>
/// Configures the JsonSerializerSettings
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ public static IHostBuilder ConfigureApi(this IHostBuilder builder)
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostBuilder ConfigureApi(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration> options)
public static IHostBuilder ConfigureApi(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration>? options = null)
{
builder.ConfigureServices((context, services) =>
{
HostConfiguration config = new HostConfiguration(services);

options(context, config);
options?.Invoke(context, config);

IServiceCollectionExtensions.AddApi(services, config);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ internal static void AddApi(IServiceCollection services, HostConfiguration host)
s => s.GetRequiredService(typeof(RateLimitProvider<>).MakeGenericType(tokenType)));
}
}

host.NotifyServicesAdded(services);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ namespace Org.OpenAPITools.Client
/// <summary>
/// Provides hosting configuration for Org.OpenAPITools
/// </summary>
public class HostConfiguration
public partial class HostConfiguration
{
private readonly IServiceCollection _services;
private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions();
Expand All @@ -47,6 +47,7 @@ public HostConfiguration(IServiceCollection services)
JsonSerializerOptionsProvider jsonSerializerOptionsProvider = new(_jsonOptions);
_services.AddSingleton(jsonSerializerOptionsProvider);
_services.AddSingleton<IApiFactory, ApiFactory>();
OnHostConfigurationCreated();
}

/// <summary>
Expand Down Expand Up @@ -91,16 +92,41 @@ public HostConfiguration AddApiHttpClients(

List<IHttpClientBuilder> builders = new List<IHttpClientBuilder>();


if (builder != null)
foreach (IHttpClientBuilder instance in builders)
builder(instance);

foreach (IHttpClientBuilder instance in builders)
Comment thread
devhl-labs marked this conversation as resolved.
{
OnAddApiHttpClientBuilder(instance);
builder?.Invoke(instance);
}

HttpClientsAdded = true;

return this;
}

/// <summary>
/// Applies configuration to each HttpClient after registration.
/// Implement this partial method in a separate file to provide custom defaults;
/// the caller's <c>builder</c> action runs after.
/// </summary>
/// <param name="builder"></param>
partial void OnAddApiHttpClientBuilder(IHttpClientBuilder builder);

/// <summary>
/// Called at the end of the constructor after all JSON converters and services are registered.
/// Implement this partial method to further configure <c>_jsonOptions</c> or register additional singletons via <c>_services</c>.
/// </summary>
partial void OnHostConfigurationCreated();

/// <summary>
/// Called after all services have been registered.
/// Implement this partial method to register additional services.
/// </summary>
/// <param name="services"></param>
partial void OnServicesAdded(IServiceCollection services);

internal void NotifyServicesAdded(IServiceCollection services) => OnServicesAdded(services);

/// <summary>
/// Configures the JsonSerializerSettings
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ public static IHostBuilder ConfigureApi(this IHostBuilder builder)
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostBuilder ConfigureApi(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration> options)
public static IHostBuilder ConfigureApi(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration>? options = null)
{
builder.ConfigureServices((context, services) =>
{
HostConfiguration config = new HostConfiguration(services);

options(context, config);
options?.Invoke(context, config);

IServiceCollectionExtensions.AddApi(services, config);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ internal static void AddApi(IServiceCollection services, HostConfiguration host)
s => s.GetRequiredService(typeof(RateLimitProvider<>).MakeGenericType(tokenType)));
}
}

host.NotifyServicesAdded(services);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ namespace Org.OpenAPITools.Client
/// <summary>
/// Provides hosting configuration for Org.OpenAPITools
/// </summary>
public class HostConfiguration
public partial class HostConfiguration
{
private readonly IServiceCollection _services;
private readonly JsonSerializerOptions _jsonOptions = new JsonSerializerOptions();
Expand Down Expand Up @@ -52,6 +52,7 @@ public HostConfiguration(IServiceCollection services)
_services.AddSingleton(jsonSerializerOptionsProvider);
_services.AddSingleton<IApiFactory, ApiFactory>();
_services.AddSingleton<DefaultApiEvents>();
OnHostConfigurationCreated();
}

/// <summary>
Expand Down Expand Up @@ -97,16 +98,41 @@ public HostConfiguration AddApiHttpClients(
List<IHttpClientBuilder> builders = new List<IHttpClientBuilder>();

builders.Add(_services.AddHttpClient<IDefaultApi, DefaultApi>("Org.OpenAPITools.Api.IDefaultApi", client));

if (builder != null)
foreach (IHttpClientBuilder instance in builders)
builder(instance);

foreach (IHttpClientBuilder instance in builders)
{
OnAddApiHttpClientBuilder(instance);
builder?.Invoke(instance);
}

HttpClientsAdded = true;

return this;
}

/// <summary>
/// Applies configuration to each HttpClient after registration.
/// Implement this partial method in a separate file to provide custom defaults;
/// the caller's <c>builder</c> action runs after.
/// </summary>
/// <param name="builder"></param>
partial void OnAddApiHttpClientBuilder(IHttpClientBuilder builder);

/// <summary>
/// Called at the end of the constructor after all JSON converters and services are registered.
/// Implement this partial method to further configure <c>_jsonOptions</c> or register additional singletons via <c>_services</c>.
/// </summary>
partial void OnHostConfigurationCreated();

/// <summary>
/// Called after all services have been registered.
/// Implement this partial method to register additional services.
/// </summary>
/// <param name="services"></param>
partial void OnServicesAdded(IServiceCollection services);
Comment thread
devhl-labs marked this conversation as resolved.

internal void NotifyServicesAdded(IServiceCollection services) => OnServicesAdded(services);

/// <summary>
/// Configures the JsonSerializerSettings
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,13 +42,13 @@ public static IHostBuilder ConfigureApi(this IHostBuilder builder)
/// </summary>
/// <param name="builder"></param>
/// <param name="options"></param>
public static IHostBuilder ConfigureApi(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration> options)
public static IHostBuilder ConfigureApi(this IHostBuilder builder, Action<HostBuilderContext, HostConfiguration>? options = null)
{
builder.ConfigureServices((context, services) =>
{
HostConfiguration config = new HostConfiguration(services);

options(context, config);
options?.Invoke(context, config);

IServiceCollectionExtensions.AddApi(services, config);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ internal static void AddApi(IServiceCollection services, HostConfiguration host)
s => s.GetRequiredService(typeof(RateLimitProvider<>).MakeGenericType(tokenType)));
}
}

host.NotifyServicesAdded(services);
}
}
}
Loading
Loading