public async Task <WamsLocators> CreateLocatorsAsync(IAsset asset, WamsLocatorCategory category) { Logger.Debug("CreateLocatorsAsync() invoked for asset '{0}' with category '{1}'.", asset.Name, category); Task <WamsLocatorInfo> sasLocatorInfoTask = null; Task <WamsLocatorInfo> onDemandLocatorInfoTask = null; var primaryAssetFile = asset.AssetFiles.Where(assetFile => assetFile.IsPrimary).Single(); var isDynamicAsset = Settings.EnableDynamicPackaging && primaryAssetFile.Name.EndsWith(".ism", StringComparison.OrdinalIgnoreCase); try { sasLocatorInfoTask = CreateLocatorAsync(asset, String.Format("{0} {1} On-Demand Policy", asset.Id, category), LocatorType.Sas, Settings.AccessPolicyDuration); if (isDynamicAsset) { onDemandLocatorInfoTask = CreateLocatorAsync(asset, String.Format("{0} {1} On-Demand Policy", asset.Id, category), LocatorType.OnDemandOrigin, Settings.AccessPolicyDuration); } Logger.Information("Locators with category '{0}' were created for asset '{1}'.", category, asset.Name); return(new WamsLocators( await sasLocatorInfoTask.ConfigureAwait(continueOnCapturedContext: false), isDynamicAsset ? await onDemandLocatorInfoTask.ConfigureAwait(continueOnCapturedContext: false) : null, isDynamicAsset ? primaryAssetFile.Name : null)); } catch (Exception ex) { Logger.Error(ex, "Error while creating locators for asset '{0}'. Cleaning up any orphaned locators.", asset.Name); try { var wamsLocators = new WamsLocators( sasLocatorInfoTask != null ? sasLocatorInfoTask.Result : null, onDemandLocatorInfoTask != null ? onDemandLocatorInfoTask.Result : null, isDynamicAsset ? primaryAssetFile.Name : null); DeleteLocatorsAsync(asset, wamsLocators).Wait(); } catch (Exception iex) { Logger.Warning(iex, "Error while cleaning up orphaned locators."); } throw; } }
public async Task<WamsLocators> CreateLocatorsAsync(IAsset asset, WamsLocatorCategory category) { Logger.Debug("CreateLocatorsAsync() invoked for asset '{0}' with category '{1}'.", asset.Name, category); Task<WamsLocatorInfo> sasLocatorInfoTask = null; Task<WamsLocatorInfo> onDemandLocatorInfoTask = null; var primaryAssetFile = asset.AssetFiles.Where(assetFile => assetFile.IsPrimary).Single(); var isDynamicAsset = Settings.EnableDynamicPackaging && primaryAssetFile.Name.EndsWith(".ism", StringComparison.OrdinalIgnoreCase); try { sasLocatorInfoTask = CreateLocatorAsync(asset, String.Format("{0} {1} On-Demand Policy", asset.Id, category), LocatorType.Sas, Settings.AccessPolicyDuration); if (isDynamicAsset) onDemandLocatorInfoTask = CreateLocatorAsync(asset, String.Format("{0} {1} On-Demand Policy", asset.Id, category), LocatorType.OnDemandOrigin, Settings.AccessPolicyDuration); Logger.Information("Locators with category '{0}' were created for asset '{1}'.", category, asset.Name); return new WamsLocators( await sasLocatorInfoTask.ConfigureAwait(continueOnCapturedContext: false), isDynamicAsset ? await onDemandLocatorInfoTask.ConfigureAwait(continueOnCapturedContext: false) : null, isDynamicAsset ? primaryAssetFile.Name : null); } catch (Exception ex) { Logger.Error(ex, "Error while creating locators for asset '{0}'. Cleaning up any orphaned locators.", asset.Name); try { var wamsLocators = new WamsLocators( sasLocatorInfoTask != null ? sasLocatorInfoTask.Result : null, onDemandLocatorInfoTask != null ? onDemandLocatorInfoTask.Result : null, isDynamicAsset ? primaryAssetFile.Name : null); DeleteLocatorsAsync(asset, wamsLocators).Wait(); } catch (Exception iex) { Logger.Warning(iex, "Error while cleaning up orphaned locators."); } throw; } }