slidge 0.2.0a9__py3-none-any.whl → 0.2.0a10__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- slidge/__version__.py +1 -1
- slidge/command/adhoc.py +1 -1
- slidge/command/base.py +4 -4
- slidge/contact/roster.py +7 -0
- slidge/core/dispatcher/__init__.py +3 -0
- slidge/core/{gateway → dispatcher}/caps.py +6 -4
- slidge/core/{gateway → dispatcher}/disco.py +11 -17
- slidge/core/dispatcher/message/__init__.py +10 -0
- slidge/core/dispatcher/message/chat_state.py +40 -0
- slidge/core/dispatcher/message/marker.py +67 -0
- slidge/core/dispatcher/message/message.py +397 -0
- slidge/core/dispatcher/muc/__init__.py +12 -0
- slidge/core/dispatcher/muc/admin.py +98 -0
- slidge/core/{gateway → dispatcher/muc}/mam.py +26 -15
- slidge/core/dispatcher/muc/misc.py +118 -0
- slidge/core/dispatcher/muc/owner.py +96 -0
- slidge/core/{gateway → dispatcher/muc}/ping.py +10 -15
- slidge/core/dispatcher/presence.py +177 -0
- slidge/core/{gateway → dispatcher}/registration.py +23 -2
- slidge/core/{gateway → dispatcher}/search.py +9 -14
- slidge/core/dispatcher/session_dispatcher.py +84 -0
- slidge/core/dispatcher/util.py +174 -0
- slidge/core/{gateway/vcard_temp.py → dispatcher/vcard.py} +26 -12
- slidge/core/{gateway/base.py → gateway.py} +42 -137
- slidge/core/mixins/base.py +2 -2
- slidge/core/mixins/message.py +10 -4
- slidge/core/pubsub.py +2 -1
- slidge/core/session.py +28 -2
- slidge/db/alembic/versions/45c24cc73c91_add_bob.py +42 -0
- slidge/db/models.py +13 -0
- slidge/db/store.py +128 -2
- slidge/{core/gateway → slixfix}/delivery_receipt.py +1 -1
- slidge/util/test.py +5 -1
- slidge/util/types.py +6 -0
- slidge/util/util.py +5 -2
- {slidge-0.2.0a9.dist-info → slidge-0.2.0a10.dist-info}/METADATA +2 -1
- {slidge-0.2.0a9.dist-info → slidge-0.2.0a10.dist-info}/RECORD +40 -31
- slidge/core/gateway/__init__.py +0 -3
- slidge/core/gateway/muc_admin.py +0 -35
- slidge/core/gateway/presence.py +0 -95
- slidge/core/gateway/session_dispatcher.py +0 -895
- {slidge-0.2.0a9.dist-info → slidge-0.2.0a10.dist-info}/LICENSE +0 -0
- {slidge-0.2.0a9.dist-info → slidge-0.2.0a10.dist-info}/WHEEL +0 -0
- {slidge-0.2.0a9.dist-info → slidge-0.2.0a10.dist-info}/entry_points.txt +0 -0
slidge/core/gateway/presence.py
DELETED
@@ -1,95 +0,0 @@
|
|
1
|
-
import logging
|
2
|
-
|
3
|
-
from slixmpp import JID, Presence
|
4
|
-
|
5
|
-
from ..session import BaseSession
|
6
|
-
|
7
|
-
|
8
|
-
class _IsDirectedAtComponent(Exception):
|
9
|
-
def __init__(self, session: BaseSession):
|
10
|
-
self.session = session
|
11
|
-
|
12
|
-
|
13
|
-
class PresenceHandlerMixin:
|
14
|
-
boundjid: JID
|
15
|
-
|
16
|
-
def get_session_from_stanza(self, s) -> BaseSession:
|
17
|
-
raise NotImplementedError
|
18
|
-
|
19
|
-
async def __get_contact(self, pres: Presence):
|
20
|
-
sess = await self.__get_session(pres)
|
21
|
-
pto = pres.get_to()
|
22
|
-
if pto == self.boundjid.bare:
|
23
|
-
raise _IsDirectedAtComponent(sess)
|
24
|
-
await sess.contacts.ready
|
25
|
-
return await sess.contacts.by_jid(pto)
|
26
|
-
|
27
|
-
async def __get_session(self, p: Presence):
|
28
|
-
sess = self.get_session_from_stanza(p)
|
29
|
-
return sess
|
30
|
-
|
31
|
-
async def _handle_subscribe(self, pres: Presence):
|
32
|
-
try:
|
33
|
-
contact = await self.__get_contact(pres)
|
34
|
-
except _IsDirectedAtComponent:
|
35
|
-
pres.reply().send()
|
36
|
-
return
|
37
|
-
|
38
|
-
if contact.is_friend:
|
39
|
-
pres.reply().send()
|
40
|
-
else:
|
41
|
-
await contact.on_friend_request(pres["status"])
|
42
|
-
|
43
|
-
async def _handle_unsubscribe(self, pres: Presence):
|
44
|
-
pres.reply().send()
|
45
|
-
|
46
|
-
try:
|
47
|
-
contact = await self.__get_contact(pres)
|
48
|
-
except _IsDirectedAtComponent as e:
|
49
|
-
e.session.send_gateway_message("Bye bye!")
|
50
|
-
await e.session.kill_by_jid(e.session.user_jid)
|
51
|
-
return
|
52
|
-
|
53
|
-
contact.is_friend = False
|
54
|
-
await contact.on_friend_delete(pres["status"])
|
55
|
-
|
56
|
-
async def _handle_subscribed(self, pres: Presence):
|
57
|
-
try:
|
58
|
-
contact = await self.__get_contact(pres)
|
59
|
-
except _IsDirectedAtComponent:
|
60
|
-
return
|
61
|
-
|
62
|
-
await contact.on_friend_accept()
|
63
|
-
|
64
|
-
async def _handle_unsubscribed(self, pres: Presence):
|
65
|
-
try:
|
66
|
-
contact = await self.__get_contact(pres)
|
67
|
-
except _IsDirectedAtComponent:
|
68
|
-
return
|
69
|
-
|
70
|
-
if contact.is_friend:
|
71
|
-
contact.is_friend = False
|
72
|
-
await contact.on_friend_delete(pres["status"])
|
73
|
-
|
74
|
-
async def _handle_probe(self, pres: Presence):
|
75
|
-
try:
|
76
|
-
contact = await self.__get_contact(pres)
|
77
|
-
except _IsDirectedAtComponent:
|
78
|
-
session = await self.__get_session(pres)
|
79
|
-
session.send_cached_presence(pres.get_from())
|
80
|
-
return
|
81
|
-
if contact.is_friend:
|
82
|
-
contact.send_last_presence(force=True)
|
83
|
-
else:
|
84
|
-
reply = pres.reply()
|
85
|
-
reply["type"] = "unsubscribed"
|
86
|
-
reply.send()
|
87
|
-
|
88
|
-
async def _handle_new_subscription(self, pres: Presence):
|
89
|
-
pass
|
90
|
-
|
91
|
-
async def _handle_removed_subscription(self, pres: Presence):
|
92
|
-
pass
|
93
|
-
|
94
|
-
|
95
|
-
log = logging.getLogger(__name__)
|