Пример #1
0
 public FilteredAssetContainer(IAssetsContainer assetsContainer, AssetFilters assetFilters)
 {
     if (assetsContainer == null)
     {
         throw new ArgumentNullException("assetsContainer");
     }
     this.assetsContainer = assetsContainer;
     this.assetFilters    = assetFilters;
 }
Пример #2
0
        private IDeliveryQuotation QuoteAssetsDelivery(IAssetsContainer assetsContainer, IDestination destination, AssetFilters assetFilters)
        {
            FilteredAssetContainer filteredAssetContainer = new FilteredAssetContainer(assetsContainer, assetFilters);

            return(carrierManager.GetAssetsDeliveryQuotations(filteredAssetContainer, destination));
        }
Пример #3
0
        public async Task <AssetImportReport> ImportAssets(IAssetsContainer assetsContainer, IDestination destination, AssetFilters assetsFilters)
        {
            if (assetsContainer.Assets.Count() == 0)
            {
                return(new AssetImportReport(null, destination));
            }

            logger.LogDebug("Importing {0} assets to {1}", assetsContainer.Assets.Count(), destination);

            IDeliveryQuotation deliveryQuotation = QuoteAssetsDelivery(assetsContainer, destination, assetsFilters);
            AssetImportReport  report            = new AssetImportReport(deliveryQuotation, destination);

            logger.LogDebug("Delivery quotation for {0} assets ({1} exceptions)", deliveryQuotation.AssetsDeliveryQuotes.Count, deliveryQuotation.AssetsExceptions.Count);

            CheckDelivery(deliveryQuotation);

            foreach (var assetDeliveries in deliveryQuotation.AssetsDeliveryQuotes)
            {
                if (assetDeliveries.Value.Count() == 0)
                {
                    report.AssetsExceptions.Add(assetDeliveries.Key, new AssetImportException("No delivery possible"));
                    continue;
                }
                IResource importedResource = null;
                try
                {
                    importedResource = await Import(assetDeliveries.Key, assetDeliveries.Value);

                    if (importedResource == null)
                    {
                        throw new AssetImportException("Imported asset is null");
                    }
                }
                catch (AggregateException ae)
                {
                    report.AssetsExceptions.Add(assetDeliveries.Key, ae);
                }
                // OK
                if (importedResource != null)
                {
                    IAsset importedAsset = MakeAsset(importedResource, (IAsset)assetDeliveries.Value.First().Route);
                    report.ImportedAssets.Add(assetDeliveries.Key, importedAsset);
                }
            }

            return(report);
        }
Пример #4
0
        public async Task <AssetDeleteReport> DeleteAssets(IAssetsContainer assetsContainer, AssetFilters assetsFilters)
        {
            AssetDeleteReport assetDeleteReport = new AssetDeleteReport();

            logger.LogDebug("Deleting {0} assets of {1}", assetsContainer.Assets.Count(), assetsContainer.Uri.ToString());

            foreach (var asset in assetsContainer.Assets)
            {
                try {
                    WebRoute assetRoute = WebRoute.Create(asset.Value.Uri, 0, credentials);
                    await assetRoute.Remove();
                }
                catch (Exception e)
                {
                    logger.LogWarning("Cannot delete asset {0}({2}) : {1}", asset.Key, e.Message, asset.Value.Uri);
                    assetDeleteReport.AssetsExceptions.Add(asset.Key, e);
                }
            }

            return(assetDeleteReport);
        }