/// <summary> /// Initializes a new instance of the <see cref="CloudMediaContext"/> class. /// </summary> /// <param name="apiServer">A <see cref="Uri"/> representing a the API endpoint.</param> /// <param name="accountName">The Microsoft WindowsAzure Media Services account name to authenticate with.</param> /// <param name="accountKey">The Microsoft WindowsAzure Media Services account key to authenticate with.</param> /// <param name="scope">The scope of authorization.</param> /// <param name="acsBaseAddress">The access control endpoint to authenticate against.</param> public CloudMediaContext(Uri apiServer, string accountName, string accountKey, string scope, string acsBaseAddress) { this.ParallelTransferThreadCount = 10; this.NumberOfConcurrentTransfers = 2; OAuthDataServiceAdapter dataServiceAdapter = new OAuthDataServiceAdapter(accountName, accountKey, scope, acsBaseAddress, NimbusRestApiCertificateThumbprint, NimbusRestApiCertificateSubject); ServiceVersionAdapter versionAdapter = new ServiceVersionAdapter(KnownApiVersions.Current); this._dataContextFactory = new AzureMediaServicesDataServiceContextFactory(apiServer, dataServiceAdapter, versionAdapter, this); this._jobs = new JobBaseCollection(this); this._jobTemplates = new JobTemplateBaseCollection(this); this._assets = new AssetCollection(this); this._files = new AssetFileCollection(this); this._accessPolicies = new AccessPolicyBaseCollection(this); this._contentKeys = new ContentKeyCollection(this); this._notificationEndPoints = new NotificationEndPointCollection(this); this._mediaProcessors = new MediaProcessorBaseCollection(this); this._locators = new LocatorBaseCollection(this); this._ingestManifests = new IngestManifestCollection(this); this._ingestManifestAssets = new IngestManifestAssetCollection(this, null); this._ingestManifestFiles = new IngestManifestFileCollection(this, null); this._storageAccounts = new StorageAccountBaseCollection(this); }
/// <summary> /// Asynchronously deletes this asset instance. /// </summary> /// <returns>A function delegate that returns the future result to be available through the Task.</returns> public Task DeleteAsync() { AssetCollection.VerifyAsset(this); DataServiceContext dataContext = this._cloudMediaContext.DataContextFactory.CreateDataServiceContext(); dataContext.AttachTo(AssetCollection.AssetSet, this); this.InvalidateContentKeysCollection(); dataContext.DeleteObject(this); return(dataContext.SaveChangesAsync(this)); }
/// <summary> /// Asynchronously deletes this asset instance. /// </summary> /// <returns>A function delegate that returns the future result to be available through the Task.</returns> public Task DeleteAsync() { AssetCollection.VerifyAsset(this); IMediaDataServiceContext dataContext = this._mediaContextBase.MediaServicesClassFactory.CreateDataServiceContext(); dataContext.AttachTo(AssetCollection.AssetSet, this); this.InvalidateContentKeysCollection(); dataContext.DeleteObject(this); MediaRetryPolicy retryPolicy = this._mediaContextBase.MediaServicesClassFactory.GetSaveChangesRetryPolicy(); return(retryPolicy.ExecuteAsync <IMediaDataServiceResponse>(() => dataContext.SaveChangesAsync(this))); }
/// <summary> /// Asynchronously deletes this asset instance. /// </summary> /// <param name="keepAzureStorageContainer">if set to <c>true</c> underlying storage asset container is preserved during the delete operation.</param> /// <returns>Task of type <see cref="IMediaDataServiceResponse"/></returns> public Task <IMediaDataServiceResponse> DeleteAsync(bool keepAzureStorageContainer) { AssetCollection.VerifyAsset(this); AssetDeleteOptionsRequestAdapter deleteRequestAdapter = new AssetDeleteOptionsRequestAdapter(keepAzureStorageContainer); IMediaDataServiceContext dataContext = this._mediaContextBase.MediaServicesClassFactory.CreateDataServiceContext(new[] { deleteRequestAdapter }); dataContext.AttachTo(AssetCollection.AssetSet, this); this.InvalidateContentKeysCollection(); this.InvalidateDeliveryPoliciesCollection(); dataContext.DeleteObject(this); MediaRetryPolicy retryPolicy = this._mediaContextBase.MediaServicesClassFactory.GetSaveChangesRetryPolicy(dataContext as IRetryPolicyAdapter); return(retryPolicy.ExecuteAsync <IMediaDataServiceResponse>(() => dataContext.SaveChangesAsync(this))); }
/// <summary> /// Asynchronously updates this asset instance. /// </summary> /// <returns>A function delegate that returns the future result to be available through the Task.</returns> public Task UpdateAsync() { AssetCollection.VerifyAsset(this); DataServiceContext dataContext = this._cloudMediaContext.DataContextFactory.CreateDataServiceContext(); dataContext.AttachTo(AssetCollection.AssetSet, this); dataContext.UpdateObject(this); return(dataContext.SaveChangesAsync(this).ContinueWith <IAsset>( t => { t.ThrowIfFaulted(); AssetData data = (AssetData)t.AsyncState; return data; })); }
/// <summary> /// Creates the locator async. /// </summary> /// <param name="locatorId">The locator Id.</param> /// <param name="locatorType">Type of the locator.</param> /// <param name="asset">The asset.</param> /// <param name="accessPolicy">The access policy.</param> /// <param name="startTime">The start time.</param> /// <param name="name">The name.</param> /// <returns>A function delegate that returns the future result to be available through the Task<ILocator>.</returns> public Task <ILocator> CreateLocatorAsync(string locatorId, LocatorType locatorType, IAsset asset, IAccessPolicy accessPolicy, DateTime?startTime, string name = null) { AccessPolicyBaseCollection.VerifyAccessPolicy(accessPolicy); AssetCollection.VerifyAsset(asset); AssetData assetData = (AssetData)asset; LocatorData locator = new LocatorData { AccessPolicy = (AccessPolicyData)accessPolicy, Asset = assetData, Type = (int)locatorType, StartTime = startTime, Name = name }; if (locatorId != null) { locator.Id = LocatorData.NormalizeLocatorId(locatorId); } locator.SetMediaContext(this.MediaContext); IMediaDataServiceContext dataContext = this.MediaContext.MediaServicesClassFactory.CreateDataServiceContext(); dataContext.AttachTo(AssetCollection.AssetSet, asset); dataContext.AttachTo(AccessPolicyBaseCollection.AccessPolicySet, accessPolicy); dataContext.AddObject(LocatorSet, locator); dataContext.SetLink(locator, AccessPolicyPropertyName, accessPolicy); dataContext.SetLink(locator, AssetPropertyName, asset); MediaRetryPolicy retryPolicy = this.MediaContext.MediaServicesClassFactory.GetSaveChangesRetryPolicy(dataContext as IRetryPolicyAdapter); return(retryPolicy.ExecuteAsync <IMediaDataServiceResponse>(() => dataContext.SaveChangesAsync(locator)) .ContinueWith <ILocator>( t => { t.ThrowIfFaulted(); assetData.InvalidateLocatorsCollection(); return (LocatorData)t.Result.AsyncState; }, TaskContinuationOptions.ExecuteSynchronously)); }
/// <summary> /// Asynchronously updates this asset instance. /// </summary> /// <returns>A function delegate that returns the future result to be available through the Task.</returns> public Task UpdateAsync() { AssetCollection.VerifyAsset(this); IMediaDataServiceContext dataContext = this._mediaContextBase.MediaServicesClassFactory.CreateDataServiceContext(); dataContext.AttachTo(AssetCollection.AssetSet, this); dataContext.UpdateObject(this); MediaRetryPolicy retryPolicy = this._mediaContextBase.MediaServicesClassFactory.GetSaveChangesRetryPolicy(); return(retryPolicy.ExecuteAsync <IMediaDataServiceResponse>(() => dataContext.SaveChangesAsync(this)) .ContinueWith <IAsset>( t => { t.ThrowIfFaulted(); AssetData data = (AssetData)t.Result.AsyncState; return data; })); }
/// <summary> /// Creates the locator async. /// </summary> /// <param name="locatorType">Type of the locator.</param> /// <param name="asset">The asset.</param> /// <param name="accessPolicy">The access policy.</param> /// <param name="startTime">The start time.</param> /// <returns>A function delegate that returns the future result to be available through the Task<ILocator>.</returns> public Task <ILocator> CreateLocatorAsync(LocatorType locatorType, IAsset asset, IAccessPolicy accessPolicy, DateTime?startTime) { AccessPolicyBaseCollection.VerifyAccessPolicy(accessPolicy); AssetCollection.VerifyAsset(asset); AssetData assetData = (AssetData)asset; LocatorData locator = new LocatorData { AccessPolicy = (AccessPolicyData)accessPolicy, Asset = assetData, Type = (int)locatorType, StartTime = startTime, }; locator.InitCloudMediaContext(this._cloudMediaContext); DataServiceContext dataContext = this.DataContextFactory.CreateDataServiceContext(); dataContext.AttachTo(AssetCollection.AssetSet, asset); dataContext.AttachTo(AccessPolicyBaseCollection.AccessPolicySet, accessPolicy); dataContext.AddObject(LocatorSet, locator); dataContext.SetLink(locator, AccessPolicyPropertyName, accessPolicy); dataContext.SetLink(locator, AssetPropertyName, asset); return(dataContext .SaveChangesAsync(locator) .ContinueWith <ILocator>( t => { t.ThrowIfFaulted(); assetData.InvalidateLocatorsCollection(); return (LocatorData)t.AsyncState; }, TaskContinuationOptions.ExecuteSynchronously)); }
/// <summary> /// Initializes a new instance of the <see cref="CloudMediaContext"/> class. /// </summary> /// <param name="apiServer">A <see cref="Uri"/> representing a the API endpoint.</param> /// <param name="accountName">The Microsoft WindowsAzure Media Services account name to authenticate with.</param> /// <param name="accountKey">The Microsoft WindowsAzure Media Services account key to authenticate with.</param> /// <param name="scope">The scope of authorization.</param> /// <param name="acsBaseAddress">The access control endpoint to authenticate against.</param> public CloudMediaContext(Uri apiServer, string accountName, string accountKey, string scope, string acsBaseAddress) { this.ParallelTransferThreadCount = 10; this.NumberOfConcurrentTransfers = 2; OAuthDataServiceAdapter dataServiceAdapter = new OAuthDataServiceAdapter(accountName, accountKey, scope, acsBaseAddress, NimbusRestApiCertificateThumbprint, NimbusRestApiCertificateSubject); ServiceVersionAdapter versionAdapter = new ServiceVersionAdapter(KnownApiVersions.Current); this._dataContextFactory = new AzureMediaServicesDataServiceContextFactory(apiServer, dataServiceAdapter, versionAdapter, this); this._jobs = new JobBaseCollection(this); this._jobTemplates = new JobTemplateBaseCollection(this); this._assets = new AssetCollection(this); this._files = new AssetFileCollection(this); this._accessPolicies = new AccessPolicyBaseCollection(this); this._contentKeys = new ContentKeyCollection(this); this._notificationEndPoints = new NotificationEndPointCollection(this); this._mediaProcessors = new MediaProcessorBaseCollection(this); this._locators = new LocatorBaseCollection(this); this._ingestManifests = new IngestManifestCollection(this); this._ingestManifestAssets = new IngestManifestAssetCollection(this,null); this._ingestManifestFiles = new IngestManifestFileCollection(this, null); }