matridge.gateway¶
Attributes¶
Classes¶
The gateway component, handling registrations and un-registrations. |
Module Contents¶
- class matridge.gateway.Gateway[source]¶
Bases:
slidge.BaseGateway
The gateway component, handling registrations and un-registrations.
On slidge launch, a singleton is instantiated, and it will be made available to public classes such
LegacyContact
orBaseSession
as the.xmpp
attribute.Must be subclassed by a legacy module to set up various aspects of the XMPP component behaviour, such as its display name or welcome message, via class attributes
COMPONENT_NAME
WELCOME_MESSAGE
.Abstract methods related to the registration process must be overriden for a functional Legacy Module:
validate_two_factor_code()
get_qr_text()
confirm_qr()
NB: Not all of these must be overridden, it depends on the
REGISTRATION_TYPE
.The other methods, such as
send_text()
orreact()
are the same as those ofLegacyContact
andLegacyParticipant
, because the component itself is also a “messaging actor”, ie, an XMPP Entity. For these methods, you need to specify the JID of the recipient with the mto parameter.Since it inherits from
slixmpp.componentxmpp.ComponentXMPP
,you also have a hand on low-level XMPP interactions via slixmpp methods, e.g.:self.send_presence( pfrom="somebody@component.example.com", pto="someonwelse@anotherexample.com", )
However, you should not need to do so often since the classes of the plugin API provides higher level abstractions around most commonly needed use-cases, such as sending messages, or displaying a custom status.
- REGISTRATION_FIELDS[source]¶
Iterable of fields presented to the gateway user when registering using XEP-0077 extended by XEP-0004.
- REGISTRATION_INSTRUCTIONS: str = 'Enter your credentials'[source]¶
The text presented to a user that wants to register (or modify) their legacy account configuration.
- COMPONENT_NAME = 'matridge'[source]¶
Name of the component, as seen in service discovery by XMPP clients
- COMPONENT_TYPE = 'matrix'[source]¶
Type of the gateway, should follow https://xmpp.org/registrar/disco-categories.html
- COMPONENT_AVATAR = 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/7c/Matrix_icon.svg/209px-Matrix_icon.svg.png'[source]¶
Path, bytes or URL used by the component as an avatar.
- ROSTER_GROUP: str = 'matrix'[source]¶
Name of the group assigned to a
LegacyContact
automagically added to the User’s roster withLegacyContact.add_to_roster()
.
- MARK_ALL_MESSAGES = False[source]¶
Set this to True for legacy networks that expects read marks for all messages and not just the latest one that was read (as most XMPP clients will only send a read mark for the latest msg).
- PROPER_RECEIPTS = True[source]¶
Set this to True if the legacy service provides a real equivalent of message delivery receipts (XEP-0184), meaning that there is an event thrown when the actual device of a contact receives a message. Make sure to call Contact.received() adequately if this is set to True.
- async validate(user_jid, registration_form)[source]¶
Validate a user’s initial registration form.
Should raise the appropriate
slixmpp.exceptions.XMPPError
if the registration does not allow to continue the registration process.If
REGISTRATION_TYPE
is aRegistrationType.SINGLE_STEP_FORM
, this method should raise something if it wasn’t possible to successfully log in to the legacy service with the registration form content.It is also used for other types of
REGISTRATION_TYPE
too, since the first step is always a form. IfREGISTRATION_FIELDS
is an empty list (ie, it declares noFormField
), the “form” is effectively a confirmation dialog displayingREGISTRATION_INSTRUCTIONS
.- Parameters:
- Return type:
- :returnA dict that will be stored as the persistent “legacy_module_data”
for this user. If you don’t return anything here, the whole registration_form content will be stored.