plugin XEP-0059: Use Pydantic models for RSM.
This commit is contained in:
parent
0d40feedc5
commit
174bf8de1a
1 changed files with 238 additions and 59 deletions
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
import time
|
||||
from datetime import datetime
|
||||
from typing import Optional, List, Tuple, Dict, Any
|
||||
from typing import Optional, List, Tuple, Dict, Any, cast
|
||||
from twisted.words.protocols.jabber import jid, error
|
||||
from twisted.words.xish import domish
|
||||
from twisted.internet import defer
|
||||
|
|
@ -28,6 +28,7 @@ from libervia.backend.core.constants import Const as C
|
|||
from libervia.backend.core import exceptions
|
||||
from libervia.backend.core.log import getLogger
|
||||
from libervia.backend.core.core_types import SatXMPPEntity
|
||||
from libervia.backend.plugins.plugin_xep_0059 import XEP_0059, RSMRequest
|
||||
from libervia.backend.tools import xml_tools, utils
|
||||
from libervia.backend.tools.common import data_format
|
||||
from libervia.backend.memory.sqla import PubsubNode, PubsubItem, SyncState, IntegrityError
|
||||
|
|
@ -285,8 +286,8 @@ class PubsubCache:
|
|||
)
|
||||
await self.cache_items(client, pubsub_node, items)
|
||||
else:
|
||||
rsm_p = self.host.plugins["XEP-0059"]
|
||||
rsm_request = rsm.RSMRequest()
|
||||
rsm_p = cast(XEP_0059, self.host.plugins["XEP-0059"])
|
||||
rsm_request = RSMRequest()
|
||||
cached_ids = set()
|
||||
while True:
|
||||
items, rsm_response = await client.pubsub_client.items(
|
||||
|
|
@ -314,9 +315,9 @@ class PubsubCache:
|
|||
)
|
||||
rsm_request = None
|
||||
break
|
||||
rsm_request = rsm_p.get_next_request(rsm_request, rsm_response)
|
||||
if rsm_request is None:
|
||||
break
|
||||
rsm_request = rsm_p.get_next_request(rsm_request, rsm_response)
|
||||
|
||||
await self.host.memory.storage.update_pubsub_node_sync_state(
|
||||
pubsub_node, SyncState.COMPLETED
|
||||
|
|
@ -656,7 +657,7 @@ class PubsubCache:
|
|||
f"({pubsub_node.sync_state_updated//60} minutes), "
|
||||
"cancelling it and retrying."
|
||||
)
|
||||
self.in_progress.pop[(service, node)].cancel()
|
||||
self.in_progress.pop((service, node)).cancel()
|
||||
pubsub_node.sync_state = None
|
||||
await self.host.memory.storage.delete_pubsub_items(pubsub_node)
|
||||
else:
|
||||
|
|
|
|||
Loading…
Reference in a new issue