Пример #1
0
 public HttpResponseMessage RedeployWorldDatabase(RedeployRequest request)
 {
     // Download the database from Github:
     // RemoteContentSync.RetreiveGithubFolder(ConfigManager.Config.ContentServer.DatabaseUrl);
     // Download the latest ACE-World release archive, extract contents into database dir, remove downloaded zip
     // Run all scripts, in the correct sequences.
     return(Request.CreateResponse(HttpStatusCode.OK, "You win!"));
 }
Пример #2
0
        public HttpResponseMessage RedeployDatabase(RedeployRequest request)
        {
            // Only allow one request at a time:
            if (Database.Redeploy.RedeploymentActive)
            {
                return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, "A Redeployment already in progress!"));
            }
            //TODO: Fix this hack, make the redeploy request object work properly:
            bool forceDeploy = false; //Request.RequestUri.Query.ToLowerInvariant().Contains("request.force=true") ? true : false;
            SourceSelectionOption   dataSource   = Request.RequestUri.Query.ToLowerInvariant().Contains("request.dataSource=") ? SourceSelectionOption.LocalDisk : SourceSelectionOption.Github;
            DatabaseSelectionOption databaseName = DatabaseSelectionOption.None;

            foreach (KeyValuePair <string, string> query in Request.GetQueryNameValuePairs())
            {
                if (query.Key.ToLowerInvariant() == "request.sourceselection")
                {
                    Enum.TryParse <SourceSelectionOption>(query.Value, out dataSource);
                }
                if (query.Key.ToLowerInvariant() == "request.databaseselection")
                {
                    // try to parse selection enum
                    Enum.TryParse <DatabaseSelectionOption>(query.Value, out databaseName);
                }
                if (query.Key.ToLowerInvariant() == "request.force")
                {
                    // try to parse selection enum
                    if (Convert.ToBoolean(query.Value))
                    {
                        forceDeploy = true;
                    }
                }
            }

            // Check to determine if a userModified flag has been set in the database
            var modifiedFlagPresent = WorldDb.UserModifiedFlagPresent();

            if (!modifiedFlagPresent || forceDeploy)
            {
                string errorResult = Database.Redeploy.RedeployDatabaseFromSource(databaseName, dataSource);

                if (errorResult == null)
                {
                    return(Request.CreateResponse(HttpStatusCode.OK, "Database(s) have been redeployed and should now be completely reset. Please remember to recreate your user accounts if you reset the authentication database!"));
                }
                else
                {
                    return(Request.CreateResponse(HttpStatusCode.InternalServerError, $"There was an error durring your request. {errorResult}"));
                }
            }
            return(Request.CreateResponse(HttpStatusCode.MethodNotAllowed, "You have unexported changes in your database.  Please specify 'force = true' in your request."));
        }
Пример #3
0
 public HttpResponseMessage RedeployWorldDatabase(RedeployRequest request)
 {
     return(Request.CreateResponse(HttpStatusCode.NotImplemented));
 }