Mercurial > libervia-backend
diff src/core/xmpp.py @ 2136:cc3a6aea9508
core (client): added feedback and sendMessage methods:
- feedback method is a helper method to quickly display an info message to user
- sendMessage is the method used to send a message in the stream, using message data dictionary.
It inclure a trigger point which can't be cancelled, it is intended for e2e encryption method which don't do full stanza encryption.
- "send" trigger point is disabled as it is not used at the moment
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 05 Feb 2017 14:55:54 +0100 |
parents | c0577837680a |
children | f8401024ab28 |
line wrap: on
line diff
--- a/src/core/xmpp.py Sun Feb 05 14:55:21 2017 +0100 +++ b/src/core/xmpp.py Sun Feb 05 14:55:54 2017 +0100 @@ -104,10 +104,44 @@ # (out of band transmission for instance). # e2e should have a priority of 0 here, and out of band transmission # a lower priority - if not self.host_app.trigger.point("send", self, obj): - return - return super(SatXMPPClient, self).send(obj) + # FIXME: trigger not used yet, can be uncommented when e2e full stanza encryption is implemented + # if not self.host_app.trigger.point("send", self, obj): + # return + super(SatXMPPClient, self).send(obj) + + def sendMessage(self, mess_data): + """Convenient method to send message data to stream + This method will send mess_data[u'xml'] to stream, but a trigger is there + The trigger can't be cancelled, it's a good place for e2e encryption which + don't handle full stanza encryption + @param mess_data(dict): message data as constructed by onMessage workflow + @return (dict): mess_data (so it can be used in a deferred chain) + """ + # XXX: This is the last trigger before u"send" (last but one globally) for sending message. + # This is intented for e2e encryption which doesn't do full stanza encryption (e.g. OTR) + # This trigger point can't cancel the method + self.host_app.trigger.point("sendMessageFinish", self, mess_data) + self.send(mess_data[u'xml']) + return mess_data + + def feedback(self, to_jid, message): + """Send message to frontends + + This message will be an info message, not recorded in history. + It can be used to give feedback of a command + @param to_jid(jid.Jid): destinee jid + @param message(unicode): message to send to frontends + """ + self.host_app.bridge.messageNew(uid=unicode(uuid.uuid4()), + timestamp=time.time(), + from_jid=self.jid.full(), + to_jid=to_jid.full(), + message={u'': message}, + subject={}, + mess_type=C.MESS_TYPE_INFO, + extra={}, + profile=self.profile) def _authd(self, xmlstream): if not self.host_app.trigger.point("XML Initialized", xmlstream, self.profile):