diff --git a/config.go b/config.go index 1ba49714..ed54060f 100644 --- a/config.go +++ b/config.go @@ -1,6 +1,7 @@ package main import ( + "bytes" "encoding/json" "errors" "fmt" @@ -48,6 +49,9 @@ type SMSGlobal struct { Enabled bool } } +type ConfigPost struct { + Data Config `json:"Data"` +} type Config struct { Name string @@ -198,6 +202,7 @@ func ReadConfig() (Config, error) { } func SaveConfig() error { + log.Println("Saving config") payload, err := json.MarshalIndent(bot.config, "", " ") if err != nil { @@ -209,6 +214,14 @@ func SaveConfig() error { if err != nil { return err } + retrieved, err := ioutil.ReadFile(CONFIG_FILE) + if err != nil { + return err + } + + if !bytes.Equal(retrieved, payload) { + return fmt.Errorf("file %q content doesn't match, read %s expected %s\n", CONFIG_FILE, retrieved, payload) + } return nil } diff --git a/configRoutes.go b/configRoutes.go index c34056b1..1fa3ad91 100644 --- a/configRoutes.go +++ b/configRoutes.go @@ -2,6 +2,7 @@ package main import ( "encoding/json" + "log" "net/http" ) @@ -15,10 +16,44 @@ func getAllSettings(w http.ResponseWriter, r *http.Request) { } func saveAllSettings(w http.ResponseWriter, r *http.Request) { + //Get the data from the request + log.Println(r.Body) + decoder := json.NewDecoder(r.Body) + var responseData ConfigPost + jsonerr := decoder.Decode(&responseData) + if jsonerr != nil { + log.Println(jsonerr) + panic(jsonerr) + } + //Save change the settings + for _, exch := range bot.config.Exchanges { + for i := 0; i < len(responseData.Data.Exchanges); i++ { + if responseData.Data.Exchanges[i].Name == exch.Name { + log.Println("Looking at exchange " + exch.Name) + log.Println("Enabled %s", responseData.Data.Exchanges[i].Enabled) + log.Println("Key " + responseData.Data.Exchanges[i].APIKey) + exch.Enabled = responseData.Data.Exchanges[i].Enabled + exch.APIKey = responseData.Data.Exchanges[i].APIKey + exch.APISecret = responseData.Data.Exchanges[i].APISecret + exch.EnabledPairs = responseData.Data.Exchanges[i].EnabledPairs + } + } + } + //Reload the configuration + err := SaveConfig() + if err != nil { + log.Println("Fatal error checking config values. Error:", err) + return + } + bot.config, err = ReadConfig() + if err != nil { + log.Println("Fatal error checking config values. Error:", err) + return + } + //Return response status w.Header().Set("Content-Type", "application/json; charset=UTF-8") w.WriteHeader(http.StatusOK) - - if err := json.NewEncoder(w).Encode(true); err != nil { + if err := json.NewEncoder(w).Encode(bot.config); err != nil { panic(err) } } diff --git a/web/app/views/settings/settings.js b/web/app/views/settings/settings.js index 23e57052..b6b342f1 100644 --- a/web/app/views/settings/settings.js +++ b/web/app/views/settings/settings.js @@ -62,6 +62,12 @@ $scope.saveAllSettings = function() { }). success(function (data) { Notification.success('Saved settings'); + for(var i=0; i