From: lolodomo Date: Tue, 13 Aug 2024 20:10:14 +0000 (+0200) Subject: [freeboxos] Enhance log warning when handling channel command fails (#17201) X-Git-Url: https://git.basschouten.com/?a=commitdiff_plain;h=8dfb10e8e9b32af2ad6daa75c0342b9ef586deb7;p=openhab-addons.git [freeboxos] Enhance log warning when handling channel command fails (#17201) * Throw PermissionException based on error code Signed-off-by: Laurent Garnier --- diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/ApiHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/ApiHandler.java index f981bafe77..6f760e52cb 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/ApiHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/ApiHandler.java @@ -121,7 +121,11 @@ public class ApiHandler { } else if (statusCode == Code.FORBIDDEN) { logger.debug("Fobidden, serviceReponse was {}, ", content); if (result instanceof Response errorResponse) { - throw new FreeboxException(errorResponse.getErrorCode(), errorResponse.getMsg()); + if (errorResponse.getErrorCode() == Response.ErrorCode.INSUFFICIENT_RIGHTS) { + throw new PermissionException(errorResponse.getMissingRight(), errorResponse.getMsg()); + } else { + throw new FreeboxException(errorResponse.getErrorCode(), errorResponse.getMsg()); + } } } diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/PermissionException.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/PermissionException.java index 2ca6f2b1b8..0c512ec1d1 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/PermissionException.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/PermissionException.java @@ -13,6 +13,7 @@ package org.openhab.binding.freeboxos.internal.api; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.openhab.binding.freeboxos.internal.api.Response.ErrorCode; import org.openhab.binding.freeboxos.internal.api.rest.LoginManager; /** @@ -26,6 +27,11 @@ public class PermissionException extends FreeboxException { private final LoginManager.Permission permission; + public PermissionException(LoginManager.Permission permission, String message) { + super(ErrorCode.INSUFFICIENT_RIGHTS, message); + this.permission = permission; + } + public PermissionException(LoginManager.Permission permission, String format, Object... args) { super(format, args); this.permission = permission; diff --git a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java index 9fa6a32dd1..e3a4034249 100644 --- a/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java +++ b/bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java @@ -26,6 +26,7 @@ import javax.measure.Unit; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.openhab.binding.freeboxos.internal.api.FreeboxException; +import org.openhab.binding.freeboxos.internal.api.PermissionException; import org.openhab.binding.freeboxos.internal.api.rest.LanBrowserManager.Source; import org.openhab.binding.freeboxos.internal.api.rest.MediaReceiverManager; import org.openhab.binding.freeboxos.internal.api.rest.MediaReceiverManager.MediaType; @@ -176,8 +177,11 @@ public abstract class ApiConsumerHandler extends BaseThingHandler implements Api logger.debug("Unexpected command {} on channel {}", command, channelUID.getId()); } } + } catch (PermissionException e) { + logger.warn("Missing permission {} for handling command {} on channel {}: {}", e.getPermission(), command, + channelUID.getId(), e.getMessage()); } catch (FreeboxException e) { - logger.warn("Error handling command: {}", e.getMessage()); + logger.warn("Error handling command {} on channel {}: {}", command, channelUID.getId(), e.getMessage()); } }