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));
 }