public override bool InitBackup() { parameters.ServerUrl = parameters.ServerUrl.TrimEnd('/'); try //precaution - to show error properly just in case { var serverUri = new Uri(parameters.ServerUrl); var serverHostname = serverUri.Scheme + Uri.SchemeDelimiter + serverUri.Host + ":" + serverUri.Port; store = new FilesStore { Url = serverHostname, DefaultFileSystem = parameters.Filesystem, ApiKey = parameters.ApiKey, Credentials = parameters.Credentials }; store.Initialize(); } catch (Exception exc) { Console.WriteLine(exc); try { store.Dispose(); } // ReSharper disable once EmptyGeneralCatchClause catch (Exception) { } return false; } var backupRequest = new { BackupLocation = parameters.BackupPath.Replace("\\", "\\\\"), }; var json = RavenJObject.FromObject(backupRequest).ToString(); var url = "/admin/backup"; if (parameters.Incremental) url += "?incremental=true"; try { using (var req = CreateRequest("/fs/" + parameters.Filesystem + url, "POST")) { req.WriteAsync(json).Wait(); Console.WriteLine("Sending json {0} to {1}", json, parameters.ServerUrl); var response = req.ReadResponseJson(); Console.WriteLine(response); } } catch (Exception exc) { Console.WriteLine(exc); return false; } return true; }
internal static async Task ValidateThatServerIsUpAndFilesystemExists(FilesConnectionStringOptions server, FilesStore s) { var shouldDispose = false; try { var commands = !string.IsNullOrEmpty(server.DefaultFileSystem) ? s.AsyncFilesCommands.ForFileSystem(server.DefaultFileSystem) : s.AsyncFilesCommands; await commands.GetStatisticsAsync(); // check if file system exist } catch (Exception e) { shouldDispose = true; var responseException = e as ErrorResponseException; if (responseException != null && responseException.StatusCode == HttpStatusCode.ServiceUnavailable && responseException.Message.StartsWith("Could not find a file system named")) throw new SmugglerException( string.Format( "Smuggler does not support file system creation (file system '{0}' on server '{1}' must exist before running Smuggler).", server.DefaultFileSystem, s.Url), e); if (e.InnerException != null) { var webException = e.InnerException as WebException; if (webException != null) { throw new SmugglerException(string.Format("Smuggler encountered a connection problem: '{0}'.", webException.Message), webException); } } throw new SmugglerException(string.Format("Smuggler encountered a connection problem: '{0}'.", e.Message), e); } finally { if (shouldDispose) s.Dispose(); } }