Cleanup the new helper
1 files changed, 15 insertions(+), 8 deletions(-)

M little_boxes/activitypub.py
M little_boxes/activitypub.py +15 -8
@@ 196,6 196,20 @@ def _get_actor_id(actor: ObjectOrIDType)
     return actor
 
 
+def _get_id(obj) -> Optional[str]:
+    if obj is None:
+        return None
+    elif isinstance(obj, str):
+        return obj
+    elif isinstance(obj, dict):
+        try:
+            return obj["id"]
+        except KeyError:
+            raise ValueError(f"object is missing ID: {obj!r}")
+    else:
+        raise ValueError(f"unexpected object: {obj!r}")
+
+
 def _has_type(
     obj_type: Union[str, List[str]],
     _types: Union[ActivityType, str, List[Union[ActivityType, str]]],

          
@@ 915,14 929,7 @@ class Note(BaseActivity):
         return False
 
     def get_in_reply_to(self) -> Optional[str]:
-        if self.inReplyTo is None:
-            return None
-        elif isinstance(self.inReplyTo, str):
-            return self.inReplyTo
-        elif isinstance(self.inReplyTo, dict):
-            return self.inReplyTo["id"]
-        else:
-            raise ValueError(f"unexpected inReplyTo: {self.inReplyTo}")
+        return _get_id(self.inReplyTo)
 
 
 class Question(Note):