Inheritance: IAccessPolicy
        /// <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&lt;IAccessPolicy&gt;.</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));
        }
Esempio n. 2
0
        /// <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&lt;IAccessPolicy&gt;.</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));
        }