slidge_whatsapp.gateway#

Module Contents#

Classes#

Gateway

The gateway component, handling registrations and un-registrations.

Functions#

handle_log(level, msg)

Log given message of specified level in system-wide logger.

Attributes#

slidge_whatsapp.gateway.REGISTRATION_INSTRUCTIONS = 'Continue and scan the resulting QR codes on your main device, or alternatively, use the...'[source]#
slidge_whatsapp.gateway.WELCOME_MESSAGE = 'Thank you for registering! Please scan the following QR code on your main device or use the...'[source]#
class slidge_whatsapp.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 or BaseSession 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()

  • 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() or react() are the same as those of LegacyContact and LegacyParticipant, 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_NAME = 'WhatsApp (slidge)'[source]#
COMPONENT_TYPE = 'whatsapp'[source]#
COMPONENT_AVATAR = 'https://www.whatsapp.com/apple-touch-icon.png'[source]#
REGISTRATION_INSTRUCTIONS[source]#
WELCOME_MESSAGE[source]#
REGISTRATION_FIELDS = [][source]#
SEARCH_FIELDS[source]#
ROSTER_GROUP = 'WhatsApp'[source]#
MARK_ALL_MESSAGES = True[source]#
GROUPS = True[source]#
PROPER_RECEIPTS = True[source]#
async validate(user_jid, registration_form)[source]#

Validate registration form. A no-op for WhatsApp, as actual registration takes place after in-band registration commands complete.

async unregister(user)[source]#

Logout from the active WhatsApp session. This will also force a remote log-out, and thus require pairing on next login. For simply disconnecting the active session, look at the Session.disconnect() function.

Parameters:

user (slidge.GatewayUser) –

slidge_whatsapp.gateway.handle_log(level, msg)[source]#

Log given message of specified level in system-wide logger.

Parameters:

msg (str) –

slidge_whatsapp.gateway.log[source]#