public void AccessPolicyCRUD() { IAccessPolicy policy = _mediaContext.AccessPolicies.Create("AccessPolicyCRUD", TimeSpan.FromDays(1), AccessPermissions.Read); Assert.AreEqual(AccessPermissions.Read, policy.Permissions); Assert.AreEqual(TimeSpan.FromDays(1), policy.Duration); Assert.AreEqual("AccessPolicyCRUD", policy.Name); policy.Delete(); policy = _mediaContext.AccessPolicies.Create("AccessPolicyCRUD", TimeSpan.FromDays(1), AccessPermissions.Read); policy.DeleteAsync(); policy = _mediaContext.AccessPolicies.Create("AccessPolicyCRUD", TimeSpan.FromDays(-1), AccessPermissions.Read); policy.DeleteAsync(); }
public async Task <IAsset> UploadAssetAsync(string localFilePath, UpdateProgressAction updateProgress, Guid assetProgressMoniker, CancellationToken cancellationToken) { Logger.Debug("UploadAssetAsync() invoked with localFilePath value '{0}'.", localFilePath); IAsset asset = null; IAccessPolicy uploadAccessPolicy = null; try { var assetName = Guid.NewGuid().ToString(); asset = await Context.Assets.CreateAsync(assetName, AssetCreationOptions.None, cancellationToken).ConfigureAwait(continueOnCapturedContext: false); var assetFile = await asset.AssetFiles.CreateAsync(Path.GetFileName(localFilePath), cancellationToken).ConfigureAwait(continueOnCapturedContext: false); assetFile.IsPrimary = true; uploadAccessPolicy = await Context.AccessPolicies.CreateAsync("Upload Policy", TimeSpan.FromDays(1), AccessPermissions.Write | AccessPermissions.List).ConfigureAwait(continueOnCapturedContext: false); var uploadLocator = await Context.Locators.CreateLocatorAsync(LocatorType.Sas, asset, uploadAccessPolicy).ConfigureAwait(continueOnCapturedContext: false); var uploadClient = new BlobTransferClient(); uploadClient.TransferProgressChanged += (sender, e) => updateProgress(new WamsUploadProgressInfo(assetProgressMoniker, e)); await assetFile.UploadAsync(localFilePath, uploadClient, uploadLocator, cancellationToken).ConfigureAwait(continueOnCapturedContext: false); await uploadLocator.DeleteAsync().ConfigureAwait(continueOnCapturedContext: false); await uploadAccessPolicy.DeleteAsync().ConfigureAwait(continueOnCapturedContext: false); Logger.Information("New asset with ID '{0}' was uploaded from temp file with name '{1}'.", asset.Id, localFilePath); return(asset); } catch (Exception ex) { if (ex is OperationCanceledException) { Logger.Information("Upload of asset with ID '{0}' from temp file with name '{1}' was canceled.", asset.Id, localFilePath); } else { Logger.Error(ex, "Error while uploading asset from temp file with name '{0}'. Cleaning up asset and any locators and access policy created for upload.", localFilePath); } try { if (asset != null) { asset.Delete(); // Deletes any locators also. } if (uploadAccessPolicy != null) { uploadAccessPolicy.Delete(); } } catch (Exception iex) { Logger.Warning(iex, "Error while cleaning up asset and any locators and access policy created for upload."); } throw; } }
public void ShouldDeleteAccessPolicyAsyncWhenDeleteAsyncCalled() { // Arrange string name = "TestPolicy " + Guid.NewGuid().ToString("N"); var duration = new TimeSpan(1, 0, 0); AccessPermissions permissions = AccessPermissions.List | AccessPermissions.Read; _mediaContext.AccessPolicies.Create(name, duration, permissions); CloudMediaContext context2 = WindowsAzureMediaServicesTestConfiguration.CreateCloudMediaContext(); IAccessPolicy accessPolicy = context2.AccessPolicies.Where(x => x.Name == name).FirstOrDefault(); // Act Task task = accessPolicy.DeleteAsync(); task.Wait(); CloudMediaContext context3 = WindowsAzureMediaServicesTestConfiguration.CreateCloudMediaContext(); IAccessPolicy actual = context2.AccessPolicies.Where(x => x.Name == name).FirstOrDefault(); // Assert Assert.IsNull(actual); }