This commit is contained in:
Simon Stürz 2015-09-15 20:16:29 +02:00 committed by Michael Zanetti
parent e2fc198205
commit 1f3350690a
10 changed files with 39 additions and 210 deletions

View File

@ -10,8 +10,8 @@
"deviceClasses": [ "deviceClasses": [
{ {
"deviceClassId": "308ae6e6-38b3-4b3a-a513-3199da2764f8", "deviceClassId": "308ae6e6-38b3-4b3a-a513-3199da2764f8",
"name": "Elro Socket (AB440D)", "name": "Elro Socket",
"idName": "socketAB440D", "idName": "elroSocket",
"createMethods": ["user"], "createMethods": ["user"],
"paramTypes": [ "paramTypes": [
{ {
@ -73,204 +73,6 @@
] ]
} }
] ]
},
{
"deviceClassId": "d29cf309-8a3e-4bcc-90ab-87d1adfb8985",
"name": "Elro Bulb (AB440L)",
"idName": "bulbAB440L",
"createMethods": ["user"],
"paramTypes": [
{
"name": "Name",
"type": "QString",
"inputType": "TextLine"
},
{
"name": "channel 1",
"type": "bool"
},
{
"name": "channel 2",
"type": "bool"
},
{
"name": "channel 3",
"type": "bool"
},
{
"name": "channel 4",
"type": "bool"
},
{
"name": "channel 5",
"type": "bool"
},
{
"name": "A",
"type": "bool"
},
{
"name": "B",
"type": "bool"
},
{
"name": "C",
"type": "bool"
},
{
"name": "D",
"type": "bool"
},
{
"name": "E",
"type": "bool"
}
],
"actionTypes": [
{
"id": "31c9758e-6567-4f89-85bb-29e1a7c55d44",
"idName": "power",
"name": "set power",
"paramTypes": [
{
"name": "power",
"type": "bool"
}
]
}
]
},
{
"deviceClassId": "9516c818-7cbe-4ec2-a961-f29d7b918437",
"name": "Elro Socket (AB440S)",
"idName": "socketAB440S",
"createMethods": ["user"],
"paramTypes": [
{
"name": "Name",
"type": "QString",
"inputType": "TextLine"
},
{
"name": "channel 1",
"type": "bool"
},
{
"name": "channel 2",
"type": "bool"
},
{
"name": "channel 3",
"type": "bool"
},
{
"name": "channel 4",
"type": "bool"
},
{
"name": "channel 5",
"type": "bool"
},
{
"name": "A",
"type": "bool"
},
{
"name": "B",
"type": "bool"
},
{
"name": "C",
"type": "bool"
},
{
"name": "D",
"type": "bool"
},
{
"name": "E",
"type": "bool"
}
],
"actionTypes": [
{
"id": "31c9758e-6567-4f89-85bb-29e1a7c55d44",
"idName": "power",
"name": "set power",
"paramTypes": [
{
"name": "power",
"type": "bool"
}
]
}
]
},
{
"deviceClassId": "e03adc74-b972-451a-afd5-b562a7ab91cd",
"name": "Elro outdoor socket (AB440WD)",
"idName": "socketAB440WD",
"createMethods": ["user"],
"paramTypes": [
{
"name": "Name",
"type": "QString",
"inputType": "TextLine"
},
{
"name": "channel 1",
"type": "bool"
},
{
"name": "channel 2",
"type": "bool"
},
{
"name": "channel 3",
"type": "bool"
},
{
"name": "channel 4",
"type": "bool"
},
{
"name": "channel 5",
"type": "bool"
},
{
"name": "A",
"type": "bool"
},
{
"name": "B",
"type": "bool"
},
{
"name": "C",
"type": "bool"
},
{
"name": "D",
"type": "bool"
},
{
"name": "E",
"type": "bool"
}
],
"actionTypes": [
{
"id": "31c9758e-6567-4f89-85bb-29e1a7c55d44",
"idName": "power",
"name": "set power",
"paramTypes": [
{
"name": "power",
"type": "bool"
}
]
}
]
} }
] ]
} }

View File

@ -134,12 +134,13 @@ HttpReply::HttpReply(QObject *parent) :
m_reasonPhrase = getHttpReasonPhrase(m_statusCode); m_reasonPhrase = getHttpReasonPhrase(m_statusCode);
// set known headers // set known headers
setHeader(HttpReply::ContentTypeHeader, "text/plain; charset=\"utf-8\";");
setHeader(HttpHeaderType::ServerHeader, "guh/" + QByteArray(GUH_VERSION_STRING)); setHeader(HttpHeaderType::ServerHeader, "guh/" + QByteArray(GUH_VERSION_STRING));
setHeader(HttpHeaderType::DateHeader, QDateTime::currentDateTime().toString("ddd, dd MMM yyyy hh:mm:ss").toUtf8() + " GMT"); setHeader(HttpHeaderType::DateHeader, QDateTime::currentDateTime().toString("ddd, dd MMM yyyy hh:mm:ss").toUtf8() + " GMT");
setRawHeader("Access-Control-Allow-Origin","*");
setRawHeader("Keep-Alive", "timeout=6, max=50");
setHeader(HttpHeaderType::CacheControlHeader, "no-cache"); setHeader(HttpHeaderType::CacheControlHeader, "no-cache");
setHeader(HttpHeaderType::ConnectionHeader, "keep-alive"); setHeader(HttpHeaderType::ConnectionHeader, "Keep-Alive");
setRawHeader("Access-Control-Allow-Origin","*");
setRawHeader("Keep-Alive", "timeout=10, max=50");
packReply(); packReply();
} }
@ -156,13 +157,14 @@ HttpReply::HttpReply(const HttpReply::HttpStatusCode &statusCode, const HttpRepl
m_reasonPhrase = getHttpReasonPhrase(m_statusCode); m_reasonPhrase = getHttpReasonPhrase(m_statusCode);
// set known headers // set known / default headers
setHeader(HttpReply::ContentTypeHeader, "text/plain; charset=\"utf-8\";");
setHeader(HttpHeaderType::ServerHeader, "guh/" + QByteArray(GUH_VERSION_STRING)); setHeader(HttpHeaderType::ServerHeader, "guh/" + QByteArray(GUH_VERSION_STRING));
setHeader(HttpHeaderType::DateHeader, QDateTime::currentDateTime().toString("ddd, dd MMM yyyy hh:mm:ss").toUtf8() + " GMT"); setHeader(HttpHeaderType::DateHeader, QDateTime::currentDateTime().toString("ddd, dd MMM yyyy hh:mm:ss").toUtf8() + " GMT");
setRawHeader("Access-Control-Allow-Origin","*");
setRawHeader("Keep-Alive", "timeout=10, max=50");
setHeader(HttpHeaderType::CacheControlHeader, "no-cache"); setHeader(HttpHeaderType::CacheControlHeader, "no-cache");
setHeader(HttpHeaderType::ConnectionHeader, "Keep-Alive"); setHeader(HttpHeaderType::ConnectionHeader, "Keep-Alive");
setRawHeader("Access-Control-Allow-Origin","*");
setRawHeader("Keep-Alive", "timeout=10, max=50");
packReply(); packReply();
} }

View File

@ -156,6 +156,7 @@ HttpReply *DeviceClassesResource::getDeviceClass()
{ {
qCDebug(dcRest) << "Get device class with id " << m_deviceClass.id(); qCDebug(dcRest) << "Get device class with id " << m_deviceClass.id();
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packDeviceClass(m_deviceClass)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packDeviceClass(m_deviceClass)).toJson());
return reply; return reply;
} }
@ -164,6 +165,7 @@ HttpReply *DeviceClassesResource::getActionTypes()
{ {
qCDebug(dcRest) << "Get action types for device class" << m_deviceClass.id(); qCDebug(dcRest) << "Get action types for device class" << m_deviceClass.id();
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packActionTypes(m_deviceClass)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packActionTypes(m_deviceClass)).toJson());
return reply; return reply;
} }
@ -175,6 +177,7 @@ HttpReply *DeviceClassesResource::getActionType(const ActionTypeId &actionTypeId
foreach (const ActionType &actionType, m_deviceClass.actionTypes()) { foreach (const ActionType &actionType, m_deviceClass.actionTypes()) {
if (actionType.id() == actionTypeId) { if (actionType.id() == actionTypeId) {
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packActionType(actionType)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packActionType(actionType)).toJson());
return reply; return reply;
} }
@ -186,6 +189,7 @@ HttpReply *DeviceClassesResource::getStateTypes()
{ {
qCDebug(dcRest) << "Get state types for device class" << m_deviceClass.id(); qCDebug(dcRest) << "Get state types for device class" << m_deviceClass.id();
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packStateTypes(m_deviceClass)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packStateTypes(m_deviceClass)).toJson());
return reply; return reply;
} }
@ -197,6 +201,7 @@ HttpReply *DeviceClassesResource::getStateType(const StateTypeId &stateTypeId)
foreach (const StateType &stateType, m_deviceClass.stateTypes()) { foreach (const StateType &stateType, m_deviceClass.stateTypes()) {
if (stateType.id() == stateTypeId) { if (stateType.id() == stateTypeId) {
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packStateType(stateType)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packStateType(stateType)).toJson());
return reply; return reply;
} }
@ -208,6 +213,7 @@ HttpReply *DeviceClassesResource::getEventTypes()
{ {
qCDebug(dcRest) << "Get event types for device class" << m_deviceClass.id(); qCDebug(dcRest) << "Get event types for device class" << m_deviceClass.id();
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packEventTypes(m_deviceClass)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packEventTypes(m_deviceClass)).toJson());
return reply; return reply;
} }
@ -219,6 +225,7 @@ HttpReply *DeviceClassesResource::getEventType(const EventTypeId &eventTypeId)
foreach (const EventType &eventType, m_deviceClass.eventTypes()) { foreach (const EventType &eventType, m_deviceClass.eventTypes()) {
if (eventType.id() == eventTypeId) { if (eventType.id() == eventTypeId) {
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packEventType(eventType)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packEventType(eventType)).toJson());
return reply; return reply;
} }
@ -253,6 +260,7 @@ void DeviceClassesResource::devicesDiscovered(const DeviceClassId &deviceClassId
qCDebug(dcRest) << "Discovery finished. Found" << deviceDescriptors.count() << "devices."; qCDebug(dcRest) << "Discovery finished. Found" << deviceDescriptors.count() << "devices.";
HttpReply *reply = m_discoverRequests.take(deviceClassId); HttpReply *reply = m_discoverRequests.take(deviceClassId);
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packDeviceDescriptors(deviceDescriptors)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packDeviceDescriptors(deviceDescriptors)).toJson());
reply->finished(); reply->finished();
} }
@ -266,6 +274,7 @@ HttpReply *DeviceClassesResource::getDeviceClasses(const VendorId &vendorId)
} }
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packSupportedDevices(vendorId)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packSupportedDevices(vendorId)).toJson());
return reply; return reply;
} }

View File

@ -215,6 +215,7 @@ HttpReply *DevicesResource::getConfiguredDevices() const
finalDevices.append(deviceMap); finalDevices.append(deviceMap);
} }
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(finalDevices).toJson()); reply->setPayload(QJsonDocument::fromVariant(finalDevices).toJson());
return reply; return reply;
} }
@ -229,6 +230,7 @@ HttpReply *DevicesResource::getConfiguredDevice(Device *device) const
qCDebug(dcRest) << deviceMap; qCDebug(dcRest) << deviceMap;
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(deviceMap).toJson()); reply->setPayload(QJsonDocument::fromVariant(deviceMap).toJson());
return reply; return reply;
} }
@ -237,6 +239,7 @@ HttpReply *DevicesResource::getDeviceStateValues(Device *device) const
{ {
qCDebug(dcRest) << "Get states of device with id:" << device->id().toString(); qCDebug(dcRest) << "Get states of device with id:" << device->id().toString();
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packDeviceStates(device)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packDeviceStates(device)).toJson());
return reply; return reply;
} }
@ -247,6 +250,7 @@ HttpReply *DevicesResource::getDeviceStateValue(Device *device, const StateTypeI
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
QVariantMap stateValueMap; QVariantMap stateValueMap;
stateValueMap.insert("value", device->state(stateTypeId).value()); stateValueMap.insert("value", device->state(stateTypeId).value());
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(stateValueMap).toJson()); reply->setPayload(QJsonDocument::fromVariant(stateValueMap).toJson());
return reply; return reply;
} }
@ -333,6 +337,7 @@ HttpReply *DevicesResource::addConfiguredDevice(const QByteArray &payload) const
QVariantMap result; QVariantMap result;
result.insert("id", newDeviceId); result.insert("id", newDeviceId);
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(result).toJson()); reply->setPayload(QJsonDocument::fromVariant(result).toJson());
return reply; return reply;
} }
@ -373,6 +378,7 @@ HttpReply *DevicesResource::pairDevice(const QByteArray &payload) const
returns.insert("pairingTransactionId", pairingTransactionId.toString()); returns.insert("pairingTransactionId", pairingTransactionId.toString());
returns.insert("setupMethod", JsonTypes::setupMethod().at(deviceClass.setupMethod())); returns.insert("setupMethod", JsonTypes::setupMethod().at(deviceClass.setupMethod()));
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(returns).toJson()); reply->setPayload(QJsonDocument::fromVariant(returns).toJson());
return reply; return reply;
} }
@ -468,6 +474,7 @@ void DevicesResource::deviceSetupFinished(Device *device, DeviceManager::DeviceE
QVariantMap result; QVariantMap result;
result.insert("id", device->id()); result.insert("id", device->id());
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(result).toJson()); reply->setPayload(QJsonDocument::fromVariant(result).toJson());
reply->finished(); reply->finished();
} }
@ -499,6 +506,7 @@ void DevicesResource::pairingFinished(const PairingTransactionId &pairingTransac
qCDebug(dcRest) << "Pairing device finished successfully"; qCDebug(dcRest) << "Pairing device finished successfully";
QVariantMap response; QVariantMap response;
response.insert("id", deviceId.toString()); response.insert("id", deviceId.toString());
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(response).toJson()); reply->setPayload(QJsonDocument::fromVariant(response).toJson());
reply->setHttpStatusCode(HttpReply::Ok); reply->setHttpStatusCode(HttpReply::Ok);
} else { } else {

View File

@ -85,6 +85,7 @@ HttpReply *LogsResource::getLogEntries(const QString &filterString)
entries.append(JsonTypes::packLogEntry(entry)); entries.append(JsonTypes::packLogEntry(entry));
} }
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(entries).toJson()); reply->setPayload(QJsonDocument::fromVariant(entries).toJson());
return reply; return reply;
} }

View File

@ -111,6 +111,7 @@ HttpReply *PluginsResource::getPlugins() const
{ {
qCDebug(dcRest) << "Get plugins"; qCDebug(dcRest) << "Get plugins";
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packPlugins()).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packPlugins()).toJson());
return reply; return reply;
} }
@ -121,6 +122,7 @@ HttpReply *PluginsResource::getPlugin(const PluginId &pluginId) const
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
foreach (DevicePlugin *plugin, GuhCore::instance()->plugins()) { foreach (DevicePlugin *plugin, GuhCore::instance()->plugins()) {
if (plugin->pluginId() == pluginId) { if (plugin->pluginId() == pluginId) {
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packPlugin(plugin)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packPlugin(plugin)).toJson());
return reply; return reply;
} }
@ -143,6 +145,7 @@ HttpReply *PluginsResource::getPluginConfiguration(const PluginId &pluginId) con
} }
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(configurationParamsList).toJson()); reply->setPayload(QJsonDocument::fromVariant(configurationParamsList).toJson());
return reply; return reply;
} }

View File

@ -83,18 +83,15 @@ HttpReply *RestResource::createSuccessReply()
{ {
HttpReply *reply = new HttpReply(HttpReply::Ok, HttpReply::TypeSync); HttpReply *reply = new HttpReply(HttpReply::Ok, HttpReply::TypeSync);
reply->setPayload("200 Ok"); reply->setPayload("200 Ok");
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
return reply; return reply;
} }
HttpReply *RestResource::createCorsSuccessReply() HttpReply *RestResource::createCorsSuccessReply()
{ {
HttpReply *reply = RestResource::createSuccessReply(); HttpReply *reply = RestResource::createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "text/plain");
reply->setRawHeader("Accept","application/json"); reply->setRawHeader("Accept","application/json");
reply->setRawHeader("Allow", "PUT, POST, GET, DELETE, OPTIONS"); reply->setRawHeader("Allow", "PUT, POST, GET, DELETE, OPTIONS");
reply->setRawHeader("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS"); reply->setRawHeader("Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, OPTIONS");
reply->setHeader(HttpReply::ContentLenghtHeader, QByteArray::number(0));
reply->setRawHeader("Access-Control-Allow-Headers", "Origin, Content-Type, Accept"); reply->setRawHeader("Access-Control-Allow-Headers", "Origin, Content-Type, Accept");
reply->setRawHeader("Access-Control-Max-Age", "1728000"); reply->setRawHeader("Access-Control-Max-Age", "1728000");
return reply; return reply;

View File

@ -159,6 +159,7 @@ HttpReply *RulesResource::getRules(const DeviceId &deviceId) const
if (!rule.id().isNull()) if (!rule.id().isNull())
ruleList.append(rule); ruleList.append(rule);
} }
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packRuleDescriptions(ruleList)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packRuleDescriptions(ruleList)).toJson());
} }
return reply; return reply;
@ -172,6 +173,7 @@ HttpReply *RulesResource::getRuleDetails(const RuleId &ruleId) const
qCDebug(dcRest) << "Get rule details"; qCDebug(dcRest) << "Get rule details";
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packRule(rule)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packRule(rule)).toJson());
return reply; return reply;
} }
@ -184,7 +186,6 @@ HttpReply *RulesResource::removeRule(const RuleId &ruleId) const
if (status == RuleEngine::RuleErrorNoError) { if (status == RuleEngine::RuleErrorNoError) {
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentLenghtHeader, "0");
return reply; return reply;
} }
return createErrorReply(HttpReply::InternalServerError); return createErrorReply(HttpReply::InternalServerError);
@ -238,6 +239,7 @@ HttpReply *RulesResource::addRule(const QByteArray &payload) const
QVariantMap returns; QVariantMap returns;
returns.insert("id", newRuleId.toString()); returns.insert("id", newRuleId.toString());
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(returns).toJson()); reply->setPayload(QJsonDocument::fromVariant(returns).toJson());
return reply; return reply;
} }

View File

@ -85,6 +85,7 @@ HttpReply *VendorsResource::getVendors() const
foreach (const Vendor &vendor, GuhCore::instance()->supportedVendors()) { foreach (const Vendor &vendor, GuhCore::instance()->supportedVendors()) {
vendorsList.append(JsonTypes::packVendor(vendor)); vendorsList.append(JsonTypes::packVendor(vendor));
} }
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(vendorsList).toJson()); reply->setPayload(QJsonDocument::fromVariant(vendorsList).toJson());
return reply; return reply;
} }
@ -95,6 +96,7 @@ HttpReply *VendorsResource::getVendor(const VendorId &vendorId) const
foreach (const Vendor &vendor, GuhCore::instance()->supportedVendors()) { foreach (const Vendor &vendor, GuhCore::instance()->supportedVendors()) {
if (vendor.id() == vendorId) { if (vendor.id() == vendorId) {
HttpReply *reply = createSuccessReply(); HttpReply *reply = createSuccessReply();
reply->setHeader(HttpReply::ContentTypeHeader, "application/json; charset=\"utf-8\";");
reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packVendor(vendor)).toJson()); reply->setPayload(QJsonDocument::fromVariant(JsonTypes::packVendor(vendor)).toJson());
return reply; return reply;
} }

View File

@ -358,6 +358,9 @@ void WebServer::readClient()
if (file.fileName().endsWith(".css")) { if (file.fileName().endsWith(".css")) {
reply->setHeader(HttpReply::ContentTypeHeader, "text/css; charset=\"utf-8\";"); reply->setHeader(HttpReply::ContentTypeHeader, "text/css; charset=\"utf-8\";");
} }
if (file.fileName().endsWith(".css")) {
reply->setHeader(HttpReply::ContentTypeHeader, "text/css; charset=\"utf-8\";");
}
reply->setPayload(file.readAll()); reply->setPayload(file.readAll());
reply->setClientId(clientId); reply->setClientId(clientId);
sendHttpReply(reply); sendHttpReply(reply);