public async Task <PublishResult> PublishAsync()
        {
            if (!_feedsValid)
            {
                return(new PublishResult {
                    Success = false, Error = "Feeds not yet successfully validated"
                });
            }

            var publishManager = new PublishManager(_accessKey, _secretKey, _region);
            var publishResult  = new PublishResult();

            if (!_productsPushed && _productCollection.GetCollectionState().ItemCount != 0)
            {
                publishResult.PublishProductFeedResult = await publishManager.PublishProductFeed(_productCollection.GetItems(), _accountPriceCollection.GetItems());

                _productsPushed = true;
            }

            if (_categoryCollection.GetCollectionState().ItemCount != 0)
            {
                publishResult.PublishCategoryFeedResult = await publishManager.PublishCategoryFeed(_categoryCollection.GetItems());
            }

            if (_userCollection.GetCollectionState().ItemCount != 0)
            {
                publishResult.PublishUserFeedResult = await publishManager.PublishUserFeed(_userCollection.GetItems());
            }

            publishResult.Success = (publishResult.PublishProductFeedResult?.Success ?? true) &&
                                    (publishResult.PublishCategoryFeedResult?.Success ?? true) &&
                                    (publishResult.PublishUserFeedResult?.Success ?? true);

            return(publishResult);
        }
        public async Task <PublishDeltaResult> PublishDeltasAsync()
        {
            if (!_feedsValid)
            {
                return(new PublishDeltaResult {
                    Success = false, Error = "Feeds not yet successfully validated"
                });
            }

            var publishManager = new PublishManager(_accessKey, _secretKey, _region);
            var publishResult  = new PublishDeltaResult();

            if (!_productsPushed)
            {
                publishResult = await publishManager.PublishProductDeltas(_productCollection.GetItems(), _deletedProductCollection.GetItems(), _accountPriceCollection.GetItems(), _deletedAccountPriceCollection.GetItems(), _accessKey);

                _productsPushed = true;
            }

            return(publishResult);
        }