Beispiel #1
0
 private void EnsureDirectoriesExist()
 {
     if (!Neo4jDir.Exists)
     {
         Neo4jDir.Create();
     }
 }
Beispiel #2
0
        public async Task DownloadNeo4j()
        {
            EnsureDirectoriesExist();

            var downloadFileInfo = new FileInfo($"../target/{Version}.zip");

            if (downloadFileInfo.Directory != null)
            {
                if (!downloadFileInfo.Directory.Exists)
                {
                    downloadFileInfo.Directory.Create();
                }
            }

            bool downloadedNew = false;
            long expectedSize;

            using (var client = new WebClient())
            {
                client.OpenRead(PackageUrl);
                expectedSize = Convert.ToInt64(client.ResponseHeaders["Content-Length"]);
                if (!downloadFileInfo.Exists || downloadFileInfo.Length != expectedSize)
                {
                    client.DownloadProgressChanged += (s, e) => { Console.Write("."); };
                    await client.DownloadFileTaskAsync(PackageUrl, downloadFileInfo.FullName);

                    downloadedNew = true;
                }
            }

            downloadFileInfo.Refresh();
            if (!downloadFileInfo.Exists)
            {
                throw new IOException($"Unable to download the server from {PackageUrl}");
            }
            if (downloadFileInfo.Length != expectedSize)
            {
                throw new IOException($"File at {PackageUrl} was downloaded, but it's size {expectedSize.BytesToMegabytes()}Mb doesn't match the size expected {expectedSize.BytesToMegabytes()}Mb");
            }

            Neo4jDir.Refresh();
            var zipFolder = GetZipFolder(downloadFileInfo.FullName);

            var extractedPath = Path.Combine(Neo4jDir.FullName, zipFolder);

            if (Directory.Exists(extractedPath))
            {
                var dirs = Neo4jDir.GetDirectories(zipFolder);
                if (dirs.Length != 0)
                {
                    var extractedDir = new DirectoryInfo(Path.Combine(Neo4jDir.FullName, zipFolder));
                    if (downloadedNew)
                    {
                        extractedDir.Delete(true);
                        ExtractZip(downloadFileInfo.FullName);
                    }
                }
            }
            else
            {
                ExtractZip(downloadFileInfo.FullName);
            }

            Neo4jHome = new DirectoryInfo(Path.Combine(Neo4jDir.FullName, zipFolder));

            UpdateSettings(new Dictionary <string, string> {
                { "dbms.security.auth_enabled", "false" }
            });                                                                                        // disable auth
            LoadPowershellModule(Neo4jHome.FullName);
        }