]> git.basschouten.com Git - openhab-addons.git/commitdiff
[freeboxos] Fix media playing (#17244)
authorlolodomo <lg.hc@free.fr>
Tue, 13 Aug 2024 18:23:06 +0000 (20:23 +0200)
committerGitHub <noreply@github.com>
Tue, 13 Aug 2024 18:23:06 +0000 (20:23 +0200)
Fix #17243

Signed-off-by: Laurent Garnier <lg.hc@free.fr>
bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/rest/MediaReceiverManager.java
bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/api/rest/RestManager.java
bundles/org.openhab.binding.freeboxos/src/main/java/org/openhab/binding/freeboxos/internal/handler/ApiConsumerHandler.java

index 7b671baaf7ac780277e5755bdd27cc81583b2832..5141e46743387b6040407bb870588c3e43c8a44c 100644 (file)
@@ -54,8 +54,11 @@ public class MediaReceiverManager extends ListableRest<Receiver, MediaReceiverMa
         UNKNOWN
     }
 
-    private static record Request(String password, Action action, MediaType mediaType, @Nullable String media,
+    private static record Request(String password, String action, String mediaType, @Nullable String media,
             int position) {
+        Request(String password, Action action, MediaType mediaType, @Nullable String media, int position) {
+            this(password, action.name().toLowerCase(), mediaType.name().toLowerCase(), media, position);
+        }
     }
 
     public MediaReceiverManager(FreeboxOsSession session, UriBuilder uriBuilder) throws FreeboxException {
@@ -77,6 +80,6 @@ public class MediaReceiverManager extends ListableRest<Receiver, MediaReceiverMa
     }
 
     private void sendToReceiver(String receiver, Request payload) throws FreeboxException {
-        post(payload, GenericResponse.class, receiver);
+        post(payload, receiver);
     }
 }
index bea01fcef93c4f85bfe4043fffed9f21c287555a..20bfe4a42b2829b03313bd1badba67cbccea2de3 100644 (file)
@@ -20,6 +20,7 @@ import java.util.List;
 import javax.ws.rs.core.UriBuilder;
 
 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.Response;
@@ -83,7 +84,11 @@ public class RestManager {
     }
 
     protected void post(String... pathElements) throws FreeboxException {
-        session.execute(buildUri(pathElements), POST, GenericResponse.class, null);
+        post(null, pathElements);
+    }
+
+    protected <F> void post(@Nullable F payload, String... pathElements) throws FreeboxException {
+        session.execute(buildUri(pathElements), POST, GenericResponse.class, payload);
     }
 
     protected <F, T extends Response<F>> F put(Class<T> clazz, F payload, String... pathElements)
index 0e7d1ef52684d807362dfd3e0bd6aee08adaad0d..9fa6a32dd119022293d63d90cff3a65072b7a5bb 100644 (file)
@@ -118,8 +118,7 @@ public abstract class ApiConsumerHandler extends BaseThingHandler implements Api
     private void startAudioSink(Receiver receiver) {
         FreeboxOsHandler bridgeHandler = checkBridgeHandler();
         // Only video and photo is supported by the API so use VIDEO capability for audio
-        Boolean isAudioReceiver = receiver.capabilities().get(MediaType.VIDEO);
-        if (reg == null && bridgeHandler != null && isAudioReceiver != null && isAudioReceiver.booleanValue()) {
+        if (reg == null && bridgeHandler != null && Boolean.TRUE.equals(receiver.capabilities().get(MediaType.VIDEO))) {
             ApiConsumerConfiguration config = getConfig().as(ApiConsumerConfiguration.class);
             String callbackURL = bridgeHandler.getCallbackURL();
             if (!config.password.isEmpty() || !receiver.passwordProtected()) {