slidge 0.2.0a9__py3-none-any.whl → 0.2.0b0__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. slidge/__main__.py +2 -3
  2. slidge/__version__.py +1 -1
  3. slidge/command/adhoc.py +1 -1
  4. slidge/command/base.py +4 -4
  5. slidge/command/user.py +5 -1
  6. slidge/contact/roster.py +9 -0
  7. slidge/core/config.py +0 -3
  8. slidge/core/dispatcher/__init__.py +3 -0
  9. slidge/core/{gateway → dispatcher}/caps.py +6 -4
  10. slidge/core/{gateway → dispatcher}/disco.py +11 -17
  11. slidge/core/dispatcher/message/__init__.py +10 -0
  12. slidge/core/dispatcher/message/chat_state.py +40 -0
  13. slidge/core/dispatcher/message/marker.py +62 -0
  14. slidge/core/dispatcher/message/message.py +397 -0
  15. slidge/core/dispatcher/muc/__init__.py +12 -0
  16. slidge/core/dispatcher/muc/admin.py +98 -0
  17. slidge/core/{gateway → dispatcher/muc}/mam.py +26 -15
  18. slidge/core/dispatcher/muc/misc.py +121 -0
  19. slidge/core/dispatcher/muc/owner.py +96 -0
  20. slidge/core/{gateway → dispatcher/muc}/ping.py +10 -15
  21. slidge/core/dispatcher/presence.py +177 -0
  22. slidge/core/{gateway → dispatcher}/registration.py +23 -2
  23. slidge/core/{gateway → dispatcher}/search.py +9 -14
  24. slidge/core/dispatcher/session_dispatcher.py +84 -0
  25. slidge/core/dispatcher/util.py +174 -0
  26. slidge/core/{gateway/vcard_temp.py → dispatcher/vcard.py} +26 -12
  27. slidge/core/{gateway/base.py → gateway.py} +42 -137
  28. slidge/core/mixins/attachment.py +24 -8
  29. slidge/core/mixins/base.py +2 -2
  30. slidge/core/mixins/lock.py +10 -8
  31. slidge/core/mixins/message.py +9 -203
  32. slidge/core/mixins/message_text.py +211 -0
  33. slidge/core/pubsub.py +2 -1
  34. slidge/core/session.py +28 -2
  35. slidge/db/alembic/versions/15b0bd83407a_remove_bogus_unique_constraints_on_room_.py +83 -0
  36. slidge/db/alembic/versions/45c24cc73c91_add_bob.py +42 -0
  37. slidge/db/alembic/versions/5bd48bfdffa2_lift_room_legacy_id_constraint.py +12 -1
  38. slidge/db/models.py +16 -1
  39. slidge/db/store.py +144 -11
  40. slidge/group/bookmarks.py +23 -1
  41. slidge/group/participant.py +5 -5
  42. slidge/group/room.py +10 -1
  43. slidge/{core/gateway → slixfix}/delivery_receipt.py +1 -1
  44. slidge/util/test.py +9 -5
  45. slidge/util/types.py +6 -0
  46. slidge/util/util.py +5 -2
  47. {slidge-0.2.0a9.dist-info → slidge-0.2.0b0.dist-info}/METADATA +2 -1
  48. {slidge-0.2.0a9.dist-info → slidge-0.2.0b0.dist-info}/RECORD +51 -40
  49. slidge-0.2.0b0.dist-info/entry_points.txt +3 -0
  50. slidge/core/gateway/__init__.py +0 -3
  51. slidge/core/gateway/muc_admin.py +0 -35
  52. slidge/core/gateway/presence.py +0 -95
  53. slidge/core/gateway/session_dispatcher.py +0 -895
  54. slidge-0.2.0a9.dist-info/entry_points.txt +0 -3
  55. {slidge-0.2.0a9.dist-info → slidge-0.2.0b0.dist-info}/LICENSE +0 -0
  56. {slidge-0.2.0a9.dist-info → slidge-0.2.0b0.dist-info}/WHEEL +0 -0
@@ -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__)