comparison sat/plugins/plugin_xep_0313.py @ 3447:c3f07c0cb2de

plugin XEP-0431: Fulltext Search for MAM implementation
author Goffi <goffi@goffi.org>
date Thu, 10 Dec 2020 10:32:54 +0100
parents 000b6722bd35
children be6d91572633
comparison
equal deleted inserted replaced
3446:d2298ed6de7f 3447:c3f07c0cb2de
41 41
42 PLUGIN_INFO = { 42 PLUGIN_INFO = {
43 C.PI_NAME: "Message Archive Management", 43 C.PI_NAME: "Message Archive Management",
44 C.PI_IMPORT_NAME: "XEP-0313", 44 C.PI_IMPORT_NAME: "XEP-0313",
45 C.PI_TYPE: "XEP", 45 C.PI_TYPE: "XEP",
46 C.PI_PROTOCOLS: ["XEP-0313"], 46 # XEP-0431 only defines a namespace, so we register it here
47 C.PI_PROTOCOLS: ["XEP-0313", "XEP-0431"],
47 C.PI_DEPENDENCIES: ["XEP-0059", "XEP-0359"], 48 C.PI_DEPENDENCIES: ["XEP-0059", "XEP-0359"],
48 C.PI_MAIN: "XEP_0313", 49 C.PI_MAIN: "XEP_0313",
49 C.PI_HANDLER: "yes", 50 C.PI_HANDLER: "yes",
50 C.PI_DESCRIPTION: _("""Implementation of Message Archive Management"""), 51 C.PI_DESCRIPTION: _("""Implementation of Message Archive Management"""),
51 } 52 }
53 MAM_PREFIX = "mam_" 54 MAM_PREFIX = "mam_"
54 FILTER_PREFIX = MAM_PREFIX + "filter_" 55 FILTER_PREFIX = MAM_PREFIX + "filter_"
55 KEY_LAST_STANZA_ID = "last_stanza_id" 56 KEY_LAST_STANZA_ID = "last_stanza_id"
56 MESSAGE_RESULT = "/message/result[@xmlns='{mam_ns}' and @queryid='{query_id}']" 57 MESSAGE_RESULT = "/message/result[@xmlns='{mam_ns}' and @queryid='{query_id}']"
57 MESSAGE_STANZA_ID = '/message/stanza-id[@xmlns="{ns_stanza_id}"]' 58 MESSAGE_STANZA_ID = '/message/stanza-id[@xmlns="{ns_stanza_id}"]'
59 NS_FTS = "urn:xmpp:fulltext:0"
58 60
59 61
60 class XEP_0313(object): 62 class XEP_0313(object):
61 def __init__(self, host): 63 def __init__(self, host):
62 log.info(_("Message Archive Management plugin initialization")) 64 log.info(_("Message Archive Management plugin initialization"))
63 self.host = host 65 self.host = host
64 self.host.registerNamespace("mam", mam.NS_MAM) 66 self.host.registerNamespace("mam", mam.NS_MAM)
67 host.registerNamespace("fulltextmam", NS_FTS)
65 self._rsm = host.plugins["XEP-0059"] 68 self._rsm = host.plugins["XEP-0059"]
66 self._sid = host.plugins["XEP-0359"] 69 self._sid = host.plugins["XEP-0359"]
67 # Deferred used to store last stanza id in order of reception 70 # Deferred used to store last stanza id in order of reception
68 self._last_stanza_id_d = defer.Deferred() 71 self._last_stanza_id_d = defer.Deferred()
69 self._last_stanza_id_d.callback(None) 72 self._last_stanza_id_d.callback(None)