Philipp Hörist pushed to branch master at gajim / python-nbxmpp


Commits:
0d2ba73b by Philipp Hörist at 2026-06-20T08:50:28+02:00
feat: Add helper method parse_account_invite()

- - - - -


2 changed files:

- + nbxmpp/modules/account_invite.py
- nbxmpp/structs.py


Changes:

=====================================
nbxmpp/modules/account_invite.py
=====================================
@@ -0,0 +1,52 @@
+# Copyright (C) 2026 Philipp Hörist <philipp AT hoerist.com>
+#
+# This file is part of nbxmpp.
+#
+# SPDX-License-Identifier: GPL-3.0-or-later
+
+from __future__ import annotations
+
+import datetime as dt
+
+from nbxmpp.modules.dataforms import SimpleDataForm
+from nbxmpp.modules.date_and_time import parse_datetime
+from nbxmpp.protocol import Node
+from nbxmpp.structs import AccountInviteResult
+
+
+def parse_account_invite(form: Node) -> AccountInviteResult:
+    form = SimpleDataForm(extend=form)
+    assert isinstance(form, SimpleDataForm)
+    # TODO: Check form type once its standardized
+    # field = form.vars.get("FORM_TYPE")
+    # if field is None:
+    #     return None
+
+    try:
+        uri = form["uri"].value
+    except Exception:
+        raise ValueError("uri field is missing")
+
+    assert isinstance(uri, str)
+    if not uri:
+        raise ValueError("empty uri value")
+
+    try:
+        landing_url = form["landing-url"].value or None
+    except Exception:
+        landing_url = None
+
+    assert isinstance(landing_url, str | None)
+
+    try:
+        expire = parse_datetime(form["expire"].value)
+    except Exception:
+        expire = None
+
+    assert isinstance(expire, dt.datetime | None)
+
+    return AccountInviteResult(
+        uri=uri,
+        landing_url=landing_url,
+        expire=expire,
+    )


=====================================
nbxmpp/structs.py
=====================================
@@ -1532,3 +1532,10 @@ class BodyData:
         except exceptions.FallbackLanguageError:
             log.warning("Missing fallback for language: %s", lang)
             return text
+
+
+@dataclass
+class AccountInviteResult:
+    uri: str
+    landing_url: str | None
+    expire: datetime | None



View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/commit/0d2ba73b3ce59eb386ae2cbcfcadf962220b5e36

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/python-nbxmpp/-/commit/0d2ba73b3ce59eb386ae2cbcfcadf962220b5e36
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to