matteridge.gateway¶
Classes¶
The gateway component, handling registrations and un-registrations. |
Module Contents¶
- class matteridge.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_INSTRUCTIONS = "Enter mattermost credentials. Get your MMAUTH_TOKEN on the web interface, using the dev tools...[source]¶
The text presented to a user that wants to register (or modify) their legacy account configuration.
- REGISTRATION_FIELDS[source]¶
Iterable of fields presented to the gateway user when registering using XEP-0077 extended by XEP-0004.
- ROSTER_GROUP = 'Mattermost'[source]¶
Name of the group assigned to a
LegacyContact
automagically added to the User’s roster withLegacyContact.add_to_roster()
.
- COMPONENT_NAME = 'Mattermost (slidge)'[source]¶
Name of the component, as seen in service discovery by XMPP clients
- COMPONENT_TYPE = 'mattermost'[source]¶
Type of the gateway, should follow https://xmpp.org/registrar/disco-categories.html
- COMPONENT_AVATAR = 'https://play-lh.googleusercontent.com/aX7JaAPkmnkeThK4kgb_HHlBnswXF0sPyNI8I8LNmEMMo1vDvMx32tCzgP...[source]¶
Path, bytes or URL used by the component as an avatar.
- 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:
- :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.