Skip to content

Commit

Permalink
feat: add NumberInsights V2 client in services registration
Browse files Browse the repository at this point in the history
  • Loading branch information
Tr00d committed Nov 30, 2023
1 parent 9a27e8f commit abf4af3
Show file tree
Hide file tree
Showing 2 changed files with 117 additions and 113 deletions.
40 changes: 21 additions & 19 deletions Vonage.Test.Unit/Extensions/ServiceCollectionExtensionsTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
using Vonage.Messages;
using Vonage.Messaging;
using Vonage.NumberInsights;
using Vonage.NumberInsightV2;
using Vonage.Numbers;
using Vonage.Pricing;
using Vonage.ProactiveConnect;
Expand Down Expand Up @@ -78,25 +79,26 @@ public void AddVonageClientTransient_ShouldProvideTransientSpecificClientInstanc

public static IEnumerable<object[]> GetSpecificVonageClients()
{
yield return new object[] { typeof(VonageClient) };
yield return new object[] { typeof(IAccountClient) };
yield return new object[] { typeof(IApplicationClient) };
yield return new object[] { typeof(IConversionClient) };
yield return new object[] { typeof(IMeetingsClient) };
yield return new object[] { typeof(IMessagesClient) };
yield return new object[] { typeof(INumberInsightClient) };
yield return new object[] { typeof(INumbersClient) };
yield return new object[] { typeof(IPricingClient) };
yield return new object[] { typeof(IProactiveConnectClient) };
yield return new object[] { typeof(IRedactClient) };
yield return new object[] { typeof(IShortCodesClient) };
yield return new object[] { typeof(ISubAccountsClient) };
yield return new object[] { typeof(ISmsClient) };
yield return new object[] { typeof(IUsersClient) };
yield return new object[] { typeof(IVerifyClient) };
yield return new object[] { typeof(IVerifyV2Client) };
yield return new object[] { typeof(IVoiceClient) };
yield return new object[] { typeof(ITokenGenerator) };
yield return new object[] {typeof(VonageClient)};
yield return new object[] {typeof(IAccountClient)};
yield return new object[] {typeof(IApplicationClient)};
yield return new object[] {typeof(IConversionClient)};
yield return new object[] {typeof(IMeetingsClient)};
yield return new object[] {typeof(IMessagesClient)};
yield return new object[] {typeof(INumberInsightClient)};
yield return new object[] {typeof(INumberInsightV2Client)};
yield return new object[] {typeof(INumbersClient)};
yield return new object[] {typeof(IPricingClient)};
yield return new object[] {typeof(IProactiveConnectClient)};
yield return new object[] {typeof(IRedactClient)};
yield return new object[] {typeof(IShortCodesClient)};
yield return new object[] {typeof(ISubAccountsClient)};
yield return new object[] {typeof(ISmsClient)};
yield return new object[] {typeof(IUsersClient)};
yield return new object[] {typeof(IVerifyClient)};
yield return new object[] {typeof(IVerifyV2Client)};
yield return new object[] {typeof(IVoiceClient)};
yield return new object[] {typeof(ITokenGenerator)};
}

private static ServiceProvider BuildScopedProviderWithConfiguration(IConfiguration configuration) =>
Expand Down
190 changes: 96 additions & 94 deletions Vonage/Extensions/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,107 +9,109 @@ namespace Vonage.Extensions;
/// </summary>
public static class ServiceCollectionExtensions
{
/// <summary>
/// Adds a scoped service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="credentials">Represents credentials for Vonage APIs.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientScoped(this IServiceCollection services, Credentials credentials)
{
services.AddScoped(_ => new VonageClient(credentials));
RegisterScopedServices(services);
return services;
}
/// <summary>
/// Adds a scoped service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="credentials">Represents credentials for Vonage APIs.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientScoped(this IServiceCollection services, Credentials credentials)
{
services.AddScoped(_ => new VonageClient(credentials));
RegisterScopedServices(services);
return services;
}

/// <summary>
/// Adds a scoped service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="configuration">The configuration properties to use.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientScoped(this IServiceCollection services,
IConfiguration configuration)
{
var vonageConfiguration = Configuration.FromConfiguration(configuration);
services.AddScoped(_ => new VonageClient(vonageConfiguration));
RegisterScopedServices(services);
return services;
}
/// <summary>
/// Adds a scoped service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="configuration">The configuration properties to use.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientScoped(this IServiceCollection services,
IConfiguration configuration)
{
var vonageConfiguration = Configuration.FromConfiguration(configuration);
services.AddScoped(_ => new VonageClient(vonageConfiguration));
RegisterScopedServices(services);
return services;
}

/// <summary>
/// Adds a transient service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="credentials">Represents credentials for Vonage APIs.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientTransient(this IServiceCollection services, Credentials credentials)
{
services.AddTransient(_ => new VonageClient(credentials));
RegisterTransientServices(services);
return services;
}
/// <summary>
/// Adds a transient service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="credentials">Represents credentials for Vonage APIs.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientTransient(this IServiceCollection services, Credentials credentials)
{
services.AddTransient(_ => new VonageClient(credentials));
RegisterTransientServices(services);
return services;
}

/// <summary>
/// Adds a transient service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="configuration">The configuration properties to use.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientTransient(this IServiceCollection services,
IConfiguration configuration)
{
var vonageConfiguration = Configuration.FromConfiguration(configuration);
services.AddTransient(_ => new VonageClient(vonageConfiguration));
RegisterTransientServices(services);
return services;
}
/// <summary>
/// Adds a transient service of <see cref="VonageClient" />, and all api-specific clients, to the specified
/// IServiceCollection.
/// </summary>
/// <param name="services">Specifies the contract for a collection of service descriptors.</param>
/// <param name="configuration">The configuration properties to use.</param>
/// <returns>The updated services.</returns>
public static IServiceCollection AddVonageClientTransient(this IServiceCollection services,
IConfiguration configuration)
{
var vonageConfiguration = Configuration.FromConfiguration(configuration);
services.AddTransient(_ => new VonageClient(vonageConfiguration));
RegisterTransientServices(services);
return services;
}

private static void RegisterScopedServices(IServiceCollection services)
{
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().AccountClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ApplicationClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ConversionClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().MeetingsClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().MessagesClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().NumberInsightClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().NumbersClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().PricingClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ProactiveConnectClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().RedactClient);
private static void RegisterScopedServices(IServiceCollection services)
{
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().AccountClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ApplicationClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ConversionClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().MeetingsClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().MessagesClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().NumberInsightClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().NumberInsightV2Client);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().NumbersClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().PricingClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ProactiveConnectClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().RedactClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().ShortCodesClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().SubAccountsClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().SmsClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().UsersClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyV2Client);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().VoiceClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().SubAccountsClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().SmsClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().UsersClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyClient);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyV2Client);
services.AddScoped(serviceProvider => serviceProvider.GetService<VonageClient>().VoiceClient);
services.AddScoped<ITokenGenerator>(_ => new Jwt());
}
}

private static void RegisterTransientServices(IServiceCollection services)
{
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().AccountClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ApplicationClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ConversionClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().MeetingsClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().MessagesClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().NumberInsightClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().NumbersClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().PricingClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ProactiveConnectClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().RedactClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ShortCodesClient);
private static void RegisterTransientServices(IServiceCollection services)
{
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().AccountClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ApplicationClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ConversionClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().MeetingsClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().MessagesClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().NumberInsightClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().NumberInsightV2Client);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().NumbersClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().PricingClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ProactiveConnectClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().RedactClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().ShortCodesClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().SubAccountsClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().SmsClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().UsersClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyV2Client);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().VoiceClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().SmsClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().UsersClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyClient);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().VerifyV2Client);
services.AddTransient(serviceProvider => serviceProvider.GetService<VonageClient>().VoiceClient);
services.AddTransient<ITokenGenerator>(_ => new Jwt());
}
}
}

0 comments on commit abf4af3

Please sign in to comment.