private byte[] GetFileFromStorage(AppManifestBase manifest, FileCreator fileCreator) { byte[] file; if (manifest.StorageType == StorageTypes.FileSystem) { file = Utility.GetFile(fileCreator.RelativeFilePath, fileCreator.IsBinary, manifest.BaseFilePath); } else { var pfc = fileCreator as ProvisioningFileCreator; if (pfc == null) { var storageInfo = manifest.GetAzureStorageInfo(); var blobStorage = new BlobStorage(storageInfo.Account, storageInfo.AccountKey, storageInfo.Container); file = blobStorage.DownloadToByteArray(fileCreator.Url); } else { var storageInfo = pfc.GetAzureStorageInfo(); var blobStorage = new BlobStorage(storageInfo.Account, storageInfo.AccountKey, storageInfo.Container); file = blobStorage.DownloadToByteArray(fileCreator.Url); } } return(file); }
private bool FileExists(FileCreator fileCreator, ClientContext ctx, Web web, bool deleteIfFound) { var exists = true; try { var url = fileCreator.Url; if (web.ServerRelativeUrl != "/") { url = web.ServerRelativeUrl + url; } var file = web.GetFileByServerRelativeUrl(url); ctx.Load(file, f => f.Exists); ctx.ExecuteQueryRetry(); if (file.Exists) { if (deleteIfFound) { OnNotify(ProvisioningNotificationLevels.Verbose, "Deleting file for overwrite " + fileCreator.Url); file.DeleteObject(); try { ctx.ExecuteQueryRetry(); exists = false; } catch (Exception ex) { OnNotify(ProvisioningNotificationLevels.Normal, $"Unable to delete {fileCreator.Url}. Error was {ex.Message}"); } } else { OnNotify(ProvisioningNotificationLevels.Verbose, "File exists and not set to overwrite " + fileCreator.Url); fileCreator.File = file; } } else { exists = false; } } catch { //Workaround for CSOM regression defect //wherein the check to see if the file exists throws an error if the file doesn't exist! exists = false; } return(exists); }
public bool FileExists(FileCreator creator, ClientContext ctx, bool deleteIfFound) { return(FileExists(creator, ctx, ctx.Web, deleteIfFound)); }