]> git.basschouten.com Git - openhab-addons.git/commitdiff
[homekit] implement List-Pairings method (#13982)
authorCody Cutrer <cody@cutrer.us>
Thu, 22 Dec 2022 23:16:55 +0000 (16:16 -0700)
committerGitHub <noreply@github.com>
Thu, 22 Dec 2022 23:16:55 +0000 (00:16 +0100)
* [homekit] implement List-Pairings method
* [homekit] fix listUsers() method
* [homekit] bump HAP-java to 2.0.5

refs #13949

Signed-off-by: Cody Cutrer <cody@cutrer.us>
bundles/org.openhab.io.homekit/pom.xml
bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitAuthInfoImpl.java

index 516609c66da4a32fb6402dd1d4decbb7807186aa..12a0c39fde3d593392265f62b5379f0fed81919c 100644 (file)
@@ -22,7 +22,7 @@
     <dependency>
       <groupId>io.github.hap-java</groupId>
       <artifactId>hap</artifactId>
-      <version>2.0.4</version>
+      <version>2.0.5</version>
       <scope>compile</scope>
     </dependency>
     <dependency>
index 941081150f147015555b4a7dc646ab330d6be784..57904c2737232ff45a6fe3b240eae1c1263fb7fe 100644 (file)
@@ -17,6 +17,7 @@ import java.security.InvalidAlgorithmParameterException;
 import java.util.Base64;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.stream.Collectors;
 
 import org.eclipse.jdt.annotation.Nullable;
 import org.openhab.core.storage.Storage;
@@ -62,7 +63,7 @@ public class HomekitAuthInfoImpl implements HomekitAuthInfo {
     }
 
     @Override
-    public void createUser(String username, byte[] publicKey) {
+    public void createUser(String username, byte[] publicKey, boolean isAdmin) {
         logger.trace("create user {}", username);
         final String userKey = createUserKey(username);
         final String encodedPublicKey = Base64.getEncoder().encodeToString(publicKey);
@@ -133,6 +134,18 @@ public class HomekitAuthInfoImpl implements HomekitAuthInfo {
         return keys.stream().anyMatch(this::isUserKey);
     }
 
+    @Override
+    public Collection<String> listUsers() {
+        Collection<String> keys = storage.getKeys();
+        // don't forget to strip user_ prefix
+        return keys.stream().filter(this::isUserKey).map(u -> u.substring(5)).collect(Collectors.toList());
+    }
+
+    @Override
+    public boolean userIsAdmin(String username) {
+        return true;
+    }
+
     public void clear() {
         logger.trace("clear all users");
         if (!this.blockUserDeletion) {