private string GetContainerNameByUploadType(DiscussionPostAttachmentType DocumentTypeToRemove) { string result = string.Empty; switch (DocumentTypeToRemove) { case DiscussionPostAttachmentType.Template: result = "templates"; break; case DiscussionPostAttachmentType.Document: result = "documents"; break; case DiscussionPostAttachmentType.External: result = "discourseexternaldocuments"; break; case DiscussionPostAttachmentType.Form: result = "templates"; break; default: break; } return(result); }
public bool RemoveFile(TenantUserSession tenantUserSession, long id, DiscussionPostAttachmentType DocumentTypeToRemove, CancellationToken cancellationToken, out Exception exception) { var result = false; exception = null; try { if (id <= 0) { throw (new Exception("Unable to find the following request")); } string containerName = GetContainerNameByUploadType(DocumentTypeToRemove); if (!string.IsNullOrEmpty(containerName)) { var connectionString = tenantUserSession.Tenant.StorageConnectionStringPrimary; var account = CloudStorageAccount.Parse(connectionString); var client = account.CreateCloudBlobClient(); var container = client.GetContainerReference(containerName); container.CreateIfNotExists(); container.SetPermissions(new BlobContainerPermissions { PublicAccess = BlobContainerPublicAccessType.Off, }); var Blob = container.GetBlockBlobReference(id.ToString() + "." + GlobalConstants.FileExtensionCloud); var running = true; var watch = System.Diagnostics.Stopwatch.StartNew(); var task = Blob.DeleteIfExistsAsync(cancellationToken); do { switch (task.Status) { case TaskStatus.Canceled: case TaskStatus.Faulted: case TaskStatus.RanToCompletion: { running = false; break; } } Thread.Sleep(TimeSpan.FromSeconds(1)); cancellationToken.ThrowIfCancellationRequested(); }while (running); switch (task.Status) { case TaskStatus.Faulted: case TaskStatus.Canceled: { running = false; throw (task.Exception ?? new Exception("The delete task encountered an unknown exception.")); } } result = true; } } catch (Exception e) { exception = e; } return(result); }