/// <summary> /// Creates a filter which includes all the tracks in the list. /// </summary> /// <param name="assetName">The asset name.</param> /// <param name="filterName">The desired filter name.</param> /// <param name="tracksToKeep">The list of tracks to keep.</param> private async Task CreateTrackFilterAsync(string assetName, string filterName, List <TrackInfo> tracksToKeep) { List <FilterTrackSelection> includedTracks = new List <FilterTrackSelection>(); foreach (TrackInfo track in tracksToKeep) { var conditions = new List <FilterTrackPropertyCondition>() { new FilterTrackPropertyCondition(FilterTrackPropertyType.Type, track.TrackType, FilterTrackPropertyCompareOperation.Equal), new FilterTrackPropertyCondition(FilterTrackPropertyType.Name, track.TrackName, FilterTrackPropertyCompareOperation.Equal) }; includedTracks.Add(new FilterTrackSelection(conditions)); } AssetFilter assetFilterParams = new AssetFilter(tracks: includedTracks); try { AssetFilter newAssetFilter = await this.MediaServicesV3SdkWrapper.AssetFiltersCreateOrUpdateAsync( assetName, filterName, assetFilterParams) .ConfigureAwait(false); } catch (Exception ex) { var msg = "AMS v3 Publish. Error when creating asset filter."; var exceptionToThrow = new GridwichPublicationAssetFilterCreateException( assetName, msg, ex); // Providing additional specific details: exceptionToThrow.SafeAddToData("filterName", filterName); throw exceptionToThrow; } }