amnezia-client/client/core/models/servers/selfHostedServerConfig.cpp
2025-06-20 22:18:47 +08:00

48 lines
1.9 KiB
C++

#include "selfHostedServerConfig.h"
#include <QJsonArray>
#include <QJsonDocument>
#include "protocols/protocols_defs.h"
using namespace amnezia;
SelfHostedServerConfig::SelfHostedServerConfig(const QJsonObject &serverConfigObject) : ServerConfig(serverConfigObject)
{
name = serverConfigObject.value(config_key::description).toString();
if (name.isEmpty()) {
name = serverConfigObject.value(config_key::hostName).toString();
}
serverCredentials.hostName = serverConfigObject.value(config_key::hostName).toString();
serverCredentials.userName = serverConfigObject.value(config_key::userName).toString();
serverCredentials.secretData = serverConfigObject.value(config_key::password).toString();
serverCredentials.port = serverConfigObject.value(config_key::port).toInt(22);
}
QJsonObject SelfHostedServerConfig::toJson() const
{
// Сначала вызываем родительскую функцию для сериализации базовых полей
QJsonObject json = ServerConfig::toJson();
// Добавляем имя только если оно не пустое
if (!name.isEmpty()) {
json[config_key::description] = name; // Используем description как в конструкторе
}
// Добавляем credentials только если они не пустые
if (!serverCredentials.hostName.isEmpty()) {
json[config_key::hostName] = serverCredentials.hostName;
}
if (!serverCredentials.userName.isEmpty()) {
json[config_key::userName] = serverCredentials.userName;
}
if (!serverCredentials.secretData.isEmpty()) {
json[config_key::password] = serverCredentials.secretData;
}
if (serverCredentials.port != 22) { // Добавляем порт только если не дефолтный
json[config_key::port] = serverCredentials.port;
}
return json;
}