somfytahoma: Fix removing the token
Fix removing the token from the cloud account when the gateway thing gets removed.master
parent
86442ac742
commit
8955a84f26
|
|
@ -89,7 +89,7 @@ void IntegrationPluginSomfyTahoma::confirmPairing(ThingPairingInfo *info, const
|
||||||
connect(request, &SomfyTahomaRequest::finished, info, [this, info, username, password](const QVariant &result){
|
connect(request, &SomfyTahomaRequest::finished, info, [this, info, username, password](const QVariant &result){
|
||||||
QString token = result.toMap()["token"].toString();
|
QString token = result.toMap()["token"].toString();
|
||||||
QJsonDocument jsonRequest{QJsonObject{
|
QJsonDocument jsonRequest{QJsonObject{
|
||||||
{"label", "nymea"},
|
{"label", "nymea_" + info->thingId().toString()},
|
||||||
{"token", token},
|
{"token", token},
|
||||||
{"scope", "devmode"},
|
{"scope", "devmode"},
|
||||||
}};
|
}};
|
||||||
|
|
@ -97,15 +97,11 @@ void IntegrationPluginSomfyTahoma::confirmPairing(ThingPairingInfo *info, const
|
||||||
connect(request, &SomfyTahomaRequest::error, info, [info](){
|
connect(request, &SomfyTahomaRequest::error, info, [info](){
|
||||||
info->finish(Thing::ThingErrorAuthenticationFailure, QT_TR_NOOP("Failed to activate token."));
|
info->finish(Thing::ThingErrorAuthenticationFailure, QT_TR_NOOP("Failed to activate token."));
|
||||||
});
|
});
|
||||||
connect(request, &SomfyTahomaRequest::finished, info, [this, info, username, password, token](const QVariant &result){
|
connect(request, &SomfyTahomaRequest::finished, info, [this, info, username, password, token](const QVariant &/*result*/){
|
||||||
QString requestId = result.toMap()["requestId"].toString();
|
|
||||||
qCDebug(dcSomfyTahoma()) << "Got token requestId" << requestId;
|
|
||||||
|
|
||||||
pluginStorage()->beginGroup(info->thingId().toString());
|
pluginStorage()->beginGroup(info->thingId().toString());
|
||||||
pluginStorage()->setValue("username", username);
|
pluginStorage()->setValue("username", username);
|
||||||
pluginStorage()->setValue("password", password);
|
pluginStorage()->setValue("password", password);
|
||||||
pluginStorage()->setValue("token", token);
|
pluginStorage()->setValue("token", token);
|
||||||
pluginStorage()->setValue("tokenRequestId", requestId);
|
|
||||||
pluginStorage()->endGroup();
|
pluginStorage()->endGroup();
|
||||||
|
|
||||||
info->finish(Thing::ThingErrorNoError);
|
info->finish(Thing::ThingErrorNoError);
|
||||||
|
|
@ -266,18 +262,31 @@ void IntegrationPluginSomfyTahoma::thingRemoved(Thing *thing)
|
||||||
pluginStorage()->beginGroup(thing->id().toString());
|
pluginStorage()->beginGroup(thing->id().toString());
|
||||||
QString username = pluginStorage()->value("username").toString();
|
QString username = pluginStorage()->value("username").toString();
|
||||||
QString password = pluginStorage()->value("password").toString();
|
QString password = pluginStorage()->value("password").toString();
|
||||||
QString requestId = pluginStorage()->value("tokenRequestId").toString();
|
|
||||||
QString gatewayPin = thing->paramValue(gatewayThingGatewayPinParamTypeId).toString();
|
QString gatewayPin = thing->paramValue(gatewayThingGatewayPinParamTypeId).toString();
|
||||||
|
QString tokenName = "nymea_" + thing->id().toString();
|
||||||
pluginStorage()->endGroup();
|
pluginStorage()->endGroup();
|
||||||
|
|
||||||
SomfyTahomaRequest *request = createCloudSomfyTahomaLoginRequest(hardwareManager()->networkManager(), username, password, this);
|
SomfyTahomaRequest *request = createCloudSomfyTahomaLoginRequest(hardwareManager()->networkManager(), username, password, this);
|
||||||
connect(request, &SomfyTahomaRequest::error, this, [](){
|
connect(request, &SomfyTahomaRequest::error, this, [](){
|
||||||
qCWarning(dcSomfyTahoma()) << "Failed to login to Somfy Tahoma cloud for deleting the Token.";
|
qCWarning(dcSomfyTahoma()) << "Failed to login to Somfy TaHoma.";
|
||||||
});
|
});
|
||||||
connect(request, &SomfyTahomaRequest::finished, this, [this, gatewayPin, requestId](const QVariant &/*result*/){
|
connect(request, &SomfyTahomaRequest::finished, this, [this, gatewayPin, tokenName](const QVariant &/*result*/){
|
||||||
SomfyTahomaRequest *request = createCloudSomfyTahomaDeleteRequest(hardwareManager()->networkManager(), "/config/" + gatewayPin + "/local/tokens/" + requestId, this);
|
SomfyTahomaRequest *request = createCloudSomfyTahomaGetRequest(hardwareManager()->networkManager(), "/config/" + gatewayPin + "/local/tokens/devmode", this);
|
||||||
connect(request, &SomfyTahomaRequest::finished, this, [](const QVariant &/*result*/){
|
connect(request, &SomfyTahomaRequest::error, this, [](){
|
||||||
qCInfo(dcSomfyTahoma()) << "Deleted Token from Somfy Tahoma cloud.";
|
qCWarning(dcSomfyTahoma()) << "Failed to get list of tokens.";
|
||||||
|
});
|
||||||
|
connect(request, &SomfyTahomaRequest::finished, this, [this, gatewayPin, tokenName](const QVariant &result){
|
||||||
|
foreach (const QVariant &tokenVariant, result.toList()) {
|
||||||
|
QVariantMap tokenMap = tokenVariant.toMap();
|
||||||
|
QString label = tokenMap["label"].toString();
|
||||||
|
QString uuid = tokenMap["uuid"].toString();
|
||||||
|
if (label == tokenName) {
|
||||||
|
SomfyTahomaRequest *request = createCloudSomfyTahomaDeleteRequest(hardwareManager()->networkManager(), "/config/" + gatewayPin + "/local/tokens/" + uuid, this);
|
||||||
|
connect(request, &SomfyTahomaRequest::error, this, [](){
|
||||||
|
qCWarning(dcSomfyTahoma()) << "Failed to remove token.";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue