messlidger.gateway
¶
Module Contents¶
Classes¶
The gateway component, handling registrations and un-registrations. |
- class messlidger.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:
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.
- COMPONENT_AVATAR = 'https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Facebook_Messenger_logo_2020.svg/640px-...'[source]¶
- SEARCH_INSTRUCTIONS = 'Enter something that can be used to search for one of your friends, eg, a first name'[source]¶
- 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
.
- async validate_two_factor_code(user, code)[source]¶
Called when the user enters their 2FA code.
Should raise the appropriate
slixmpp.exceptions.XMPPError
if the login fails, and return successfully otherwise.Only used when
REGISTRATION_TYPE
isRegistrationType.TWO_FACTOR_CODE
.- Parameters:
user (slidge.GatewayUser) – The
GatewayUser
whose registration is pending Use theirGatewayUser.bare_jid
and/orregistration_form
attributes to get what you need.code – The code they entered, either via “chatbot” message or adhoc command