Files
shadowrun-server/source/json_settings.cpp
2026-02-16 23:24:31 +01:00

44 lines
1.2 KiB
C++

#include <fstream>
#include "json.hpp"
#include "json_settings.h"
#include "crow/logging.h"
#include "utils.hpp"
using namespace std;
using json = nlohmann::json;
using namespace::AppSettings;
Settings AppSettings::deafult(){
return Settings {
.http_port = 3010,
.db_path = "/var/lib/shadowrun-server/shadowrun.db",
.url = "*"
};
}
Settings AppSettings::load() {
ifstream file(settingsFile);
if (!file.is_open()) {
CROW_LOG_ERROR << "Failed to load settings file" << settingsFile << " Loading default settings";
return AppSettings::deafult();
}
std::stringstream buffer;
buffer << file.rdbuf(); // Read the whole file into the stringstream
std::string fileContents = buffer.str(); // Convert to std::string
auto result = utils::parseJson(fileContents);
if(!result){
CROW_LOG_ERROR << "failed to parse settings file, Loading default settings";
return AppSettings::deafult();
}
try {
return result.value().get<Settings>();
} catch (...) {
CROW_LOG_ERROR << "failed to parse settings file, Loading default settings";
return AppSettings::deafult();
}
}