/// <summary> /// Asynchronously creates an <see cref="IAccessPolicy"/> with the provided name and permissions, valid for the provided duration. /// </summary> /// <param name="name">Specifies a friendly name for the AccessPolicy.</param> /// <param name="duration">Specifies the duration that locators created from this AccessPolicy will be valid for.</param> /// <param name="permissions">Specifies permissions for the created AccessPolicy.</param> /// <returns>A function delegate that returns the future result to be available through the Task<IAccessPolicy>.</returns> public Task <IAccessPolicy> CreateAsync(string name, TimeSpan duration, AccessPermissions permissions) { DataServiceContext dataContext = this.DataContextFactory.CreateDataServiceContext(); AccessPolicyData accessPolicy = new AccessPolicyData { Name = name, DurationInMinutes = AccessPolicyData.GetInternalDuration(duration), Permissions = AccessPolicyData.GetInternalPermissions(permissions) }; accessPolicy.InitCloudMediaContext(this._cloudMediaContext); dataContext.AddObject(AccessPolicySet, accessPolicy); return(dataContext .SaveChangesAsync(accessPolicy) .ContinueWith <IAccessPolicy>( t => { t.ThrowIfFaulted(); return (AccessPolicyData)t.AsyncState; }, TaskContinuationOptions.ExecuteSynchronously)); }
/// <summary> /// Asynchronously creates an <see cref="IAccessPolicy"/> with the provided name and permissions, valid for the provided duration. /// </summary> /// <param name="name">Specifies a friendly name for the AccessPolicy.</param> /// <param name="duration">Specifies the duration that locators created from this AccessPolicy will be valid for.</param> /// <param name="permissions">Specifies permissions for the created AccessPolicy.</param> /// <returns>A function delegate that returns the future result to be available through the Task<IAccessPolicy>.</returns> public Task <IAccessPolicy> CreateAsync(string name, TimeSpan duration, AccessPermissions permissions) { IMediaDataServiceContext dataContext = this.MediaContext.MediaServicesClassFactory.CreateDataServiceContext(); AccessPolicyData accessPolicy = new AccessPolicyData { Name = name, DurationInMinutes = AccessPolicyData.GetInternalDuration(duration), Permissions = AccessPolicyData.GetInternalPermissions(permissions) }; dataContext.AddObject(AccessPolicySet, accessPolicy); MediaRetryPolicy retryPolicy = this.MediaContext.MediaServicesClassFactory.GetSaveChangesRetryPolicy(dataContext as IRetryPolicyAdapter); return(retryPolicy.ExecuteAsync <IMediaDataServiceResponse>(() => dataContext.SaveChangesAsync(accessPolicy)) .ContinueWith <IAccessPolicy>( t => { t.ThrowIfFaulted(); return (AccessPolicyData)t.Result.AsyncState; }, TaskContinuationOptions.ExecuteSynchronously)); }