AtomicClient requests named instance from HttpClientFactory, so configure that named instance:
services.AddHttpClient(new AtomicClientOptions().HttpClientName).ConfigureHttpClient(...)
WAX network is used by default. To switch to EOS network change AtomicClientOptions.Endpoint
:
services.Configure<AtomicClientOptions>(o => o.Endpoint = new Uri("https://eos.api.atomicassets.io"));
You need two different instances of AtomicClient
, initialized with different Endpoint
values in AtomicOptions
.
If you use advanced DI libraries which supports multiple registrations - use it, I guess you don't need help.
If you use default .NET DI, you may need additional classes:
public interface IWaxAtomicClient : IAtomicClient { /* Nothing inside */ }
public interface IEosAtomicClient : IAtomicClient { /* Nothing inside */ }
public class WaxAtomicClient : AtomicClient, IWaxAtomicClient
{
public WaxAtomicClient(ILogger<AtomicClient> logger, IOptions<AtomicClientOptions> options, HttpClientFactory httpClientFactory)
: base(logger, options, httpClientFactory)
{
// Nothing inside
}
}
public class EosAtomicClient : AtomicClient, IEosAtomicClient
{
public EosAtomicClient(ILogger<AtomicClient> logger, IOptions<AtomicClientOptions> options, HttpClientFactory httpClientFactory)
: base(logger, options, httpClientFactory)
{
options.Value.Endpoint = new Uri("https://eos.api.atomicassets.io");
}
}
Then register them both:
services.AddHttpClient();
services.Configure<AtomicClientOptions>(Configuration.GetSection("AtomicClientOptions"));
services.AddSingleton<IWaxAtomicClient, WaxAtomicClient>();
services.AddSingleton<IEosAtomicClient, EosAtomicClient>();
And consume IWaxAtomicClient
or IEosAtomicClient
as needed.