/// <summary> /// Adds the required services for access to Trinsic's API's including Credentials and Wallet services. /// </summary> /// <param name="services">The services.</param> /// <param name="configure">The configure.</param> /// <returns></returns> public static IServiceCollection AddTrinsicClient(this IServiceCollection services, Action <ServiceClientOptions> configure) { services.Configure(configure); services.AddSingleton <TrinsicClientCredentials>(); services.AddSingleton <TrinsicProviderCredentials>(); services.AddSingleton <ICredentialsServiceClient, CredentialsServiceClient>(provider => { var options = provider.GetRequiredService <IOptions <ServiceClientOptions> >().Value; var credentialsClient = new CredentialsServiceClient(provider.GetRequiredService <TrinsicClientCredentials>()); credentialsClient.BaseUri = options.CredentialsBaseUri == null ? credentialsClient.BaseUri : new Uri(options.CredentialsBaseUri); return(credentialsClient); }); services.AddSingleton <IWalletServiceClient, WalletServiceClient>(provider => { var options = provider.GetRequiredService <IOptions <ServiceClientOptions> >().Value; var walletClient = new WalletServiceClient(provider.GetRequiredService <TrinsicClientCredentials>()); walletClient.BaseUri = options.WalletBaseUri == null ? walletClient.BaseUri : new Uri(options.WalletBaseUri); return(walletClient); }); services.AddSingleton <IProviderServiceClient, ProviderServiceClient>(provider => { var options = provider.GetRequiredService <IOptions <ServiceClientOptions> >().Value; var providerClient = new ProviderServiceClient(provider.GetRequiredService <TrinsicProviderCredentials>()); providerClient.BaseUri = options.ProviderBaseUri == null ? providerClient.BaseUri : new Uri(options.ProviderBaseUri); return(providerClient); }); return(services); }