/// <summary> /// Create an Instance of a DragonchainClient. /// </summary> /// <param name="dragonchainId">dragonchainId associated with these credentials</param> /// /// <param name="credentialManager">manager to retrieve Dragonchain credentials from config provider</param> /// <param name="credentialService">service to retrieve Dragonchain credentials for use in API requests</param> /// <param name="httpService">API request service</param> /// <param name="logger">Microsoft.Extensions.Logging implementation</param> public DragonchainClient(string dragonchainId, ICredentialManager credentialManager, ICredentialService credentialService = null, IHttpService httpService = null, ILogger logger = null) { logger = logger ?? NullLogger.Instance; if (string.IsNullOrWhiteSpace(dragonchainId)) { if (credentialManager == null) { throw new FailureByDesignException(FailureCode.PARAM_ERROR, message: "Credential Manager must be provided if dragonchainid is null or empty"); } logger.LogDebug("Dragonchain ID not explicitly provided, will search env/disk"); dragonchainId = credentialManager.GetDragonchainId(); } _credentialService = credentialService ?? new CredentialService(dragonchainId, credentialManager: credentialManager); var endpoint = $"https://{dragonchainId}.api.dragonchain.com"; _httpService = httpService ?? new HttpService(_credentialService, endpoint, logger); }