mirror of
https://github.com/openhab/openhab-addons.git
synced 2025-01-25 14:55:55 +01:00
[ecovacs] Fix expired token handling for XML-over-MQTT models (#17333)
At least the Deebot 900 sends an unusual error response in case of expired token. Fixes #15961 Signed-off-by: Danny Baumann <dannybaumann@web.de>
This commit is contained in:
parent
65f1a9698d
commit
16e1c64bec
@ -24,14 +24,12 @@ public class AbstractPortalIotCommandResponse {
|
||||
@SerializedName("errno")
|
||||
private final int errorCode;
|
||||
@SerializedName("error")
|
||||
private final String errorMessage;
|
||||
private final Object errorObject; // might be a string or a JSON object
|
||||
|
||||
// unused field: 'id' (string)
|
||||
|
||||
public AbstractPortalIotCommandResponse(String result, int errorCode, String errorMessage) {
|
||||
public AbstractPortalIotCommandResponse(String result, int errorCode, Object errorObject) {
|
||||
this.result = result;
|
||||
this.errorCode = errorCode;
|
||||
this.errorMessage = errorMessage;
|
||||
this.errorObject = errorObject;
|
||||
}
|
||||
|
||||
public boolean wasSuccessful() {
|
||||
@ -39,13 +37,22 @@ public class AbstractPortalIotCommandResponse {
|
||||
}
|
||||
|
||||
public boolean failedDueToAuthProblem() {
|
||||
return "fail".equals(result) && errorMessage != null && errorMessage.toLowerCase().contains("auth error");
|
||||
if (!"fail".equals(result)) {
|
||||
return false;
|
||||
}
|
||||
if (errorCode == 3) {
|
||||
// Error 3 is 'OAuth error'
|
||||
return true;
|
||||
}
|
||||
String errorMessage = errorObject != null ? errorObject.toString().toLowerCase() : "";
|
||||
return errorMessage.contains("auth error") || errorMessage.contains("token error");
|
||||
}
|
||||
|
||||
public String getErrorMessage() {
|
||||
if (wasSuccessful()) {
|
||||
return null;
|
||||
}
|
||||
String errorMessage = errorObject != null ? errorObject.toString() : null;
|
||||
return "result=" + result + ", errno=" + errorCode + ", error=" + errorMessage;
|
||||
}
|
||||
}
|
||||
|
@ -27,8 +27,8 @@ public class PortalIotCommandJsonResponse extends AbstractPortalIotCommandRespon
|
||||
@SerializedName("resp")
|
||||
public final JsonElement response;
|
||||
|
||||
public PortalIotCommandJsonResponse(String result, JsonElement response, int errorCode, String errorMessage) {
|
||||
super(result, errorCode, errorMessage);
|
||||
public PortalIotCommandJsonResponse(String result, JsonElement response, int errorCode, Object errorObject) {
|
||||
super(result, errorCode, errorObject);
|
||||
this.response = response;
|
||||
}
|
||||
|
||||
|
@ -21,8 +21,8 @@ public class PortalIotCommandXmlResponse extends AbstractPortalIotCommandRespons
|
||||
@SerializedName("resp")
|
||||
private final String responseXml;
|
||||
|
||||
public PortalIotCommandXmlResponse(String result, String responseXml, int errorCode, String errorMessage) {
|
||||
super(result, errorCode, errorMessage);
|
||||
public PortalIotCommandXmlResponse(String result, String responseXml, int errorCode, Object errorObject) {
|
||||
super(result, errorCode, errorObject);
|
||||
this.responseXml = responseXml;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user