/// <summary>
        /// Get Atomia Billing account data for current reseller.
        /// </summary>
        public AccountData GetResellerAccountData()
        {
            var         resellerIdentifier = resellerIdentifierProvider.GetResellerIdentifier();
            AccountData resellerData       = null;

            if (resellerIdentifier != null && !string.IsNullOrEmpty(resellerIdentifier.AccountHash))
            {
                resellerData = BillingApi.GetAccountDataByHash(resellerIdentifier.AccountHash);
            }
            else if (resellerIdentifier != null && !string.IsNullOrEmpty(resellerIdentifier.BaseUrl))
            {
                resellerData = BillingApi.GetResellerDataByUrl(resellerIdentifier.BaseUrl);
            }

            if (resellerData == null)
            {
                resellerData = BillingApi.GetDefaultResellerData();
            }

            if (resellerData == null)
            {
                throw new InvalidOperationException("Could not determine reseller AccountData.");
            }

            return(resellerData);
        }
        /// <summary>
        /// Get current reseller account data from cache or get and cache data form base provider.
        /// </summary>
        public AccountData GetResellerAccountData()
        {
            AccountData resellerData       = null;
            var         resellerIdentifier = resellerIdentifierProvider.GetResellerIdentifier();
            var         cacheKey           = "default";

            if (resellerIdentifier != null && !string.IsNullOrEmpty(resellerIdentifier.AccountHash))
            {
                cacheKey = resellerIdentifier.AccountHash;
            }
            else if (resellerIdentifier != null && !string.IsNullOrEmpty(resellerIdentifier.BaseUrl))
            {
                cacheKey = resellerIdentifier.BaseUrl;
            }

            if (!TryGetCachedData(cacheKey, out resellerData))
            {
                resellerData = backingProvider.GetResellerAccountData();
                SetCachedData(cacheKey, resellerData);
            }

            return(resellerData);
        }