private void uploadAppBits(string name, DirectoryInfo path) { /* * Before creating the app, ensure we can build resource list */ string uploadFile = Path.GetTempFileName(); DirectoryInfo explodeDir = Utility.GetTempDirectory(); Utility.CopyDirectory(path, explodeDir); try { var resources = new List <Resource>(); ulong totalSize = addDirectoryToResources(resources, explodeDir, explodeDir.FullName); if (false == resources.IsNullOrEmpty()) { Resource[] appcloudResources = null; if (totalSize > (64 * 1024)) { appcloudResources = checkResources(resources.ToArray()); } if (appcloudResources.IsNullOrEmpty()) { appcloudResources = resources.ToArrayOrNull(); } else { foreach (Resource r in appcloudResources) { string localPath = Path.Combine(explodeDir.FullName, r.FN); var localFileInfo = new FileInfo(localPath); localFileInfo.Delete(); resources.Remove(r); } } if (resources.IsNullOrEmpty()) { /* * If no resource needs to be sent, add an empty file to ensure we have * a multi-part request that is expected by nginx fronting the CC. */ File.WriteAllText(Path.Combine(explodeDir.FullName, ".__empty__"), String.Empty); } var zipper = new FastZip(); zipper.CreateZip(uploadFile, explodeDir.FullName, true, String.Empty); var request = new VcapJsonRequest(credMgr, Method.PUT, Constants.APPS_PATH, name, "application"); request.AddFile("application", uploadFile); request.AddParameter("resources", JsonConvert.SerializeObject(appcloudResources.ToArrayOrNull())); RestResponse response = request.Execute(); } } finally { Directory.Delete(explodeDir.FullName, true); File.Delete(uploadFile); } }