Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPhilipp Hörist <philipp@hoerist.com>2019-11-27 01:07:48 +0300
committerPhilipp Hörist <philipp@hoerist.com>2019-11-27 01:07:48 +0300
commitdc337d8c124047863696057a757f6882cdade6fc (patch)
tree30814404b3cb2041e11a02b8bde1c9ec4e376949 /nbxmpp/modules
parentf28ff1dfa193c458ff9d13f3d743ae971fc05b11 (diff)
Register: Add change_password()
Diffstat (limited to 'nbxmpp/modules')
-rw-r--r--nbxmpp/modules/register.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/nbxmpp/modules/register.py b/nbxmpp/modules/register.py
index 06fb848..35d3ff0 100644
--- a/nbxmpp/modules/register.py
+++ b/nbxmpp/modules/register.py
@@ -24,9 +24,11 @@ from nbxmpp.protocol import Iq
from nbxmpp.protocol import isResultNode
from nbxmpp.structs import CommonResult
from nbxmpp.structs import RegisterData
+from nbxmpp.structs import ChangePasswordResult
from nbxmpp.util import call_on_response
from nbxmpp.util import callback
from nbxmpp.util import raise_error
+from nbxmpp.util import get_form
from nbxmpp.const import REGISTER_FIELDS
from nbxmpp.modules.bits_of_binary import parse_bob_data
from nbxmpp.modules.dataforms import extend_form
@@ -119,3 +121,34 @@ class Register:
fields.append(create_field(typ='hidden', var='fakeform'))
return SimpleDataForm(type_='form', fields=fields)
+
+ @call_on_response('_on_password_change')
+ def change_password(self, password):
+ hostname = self._client.get_bound_jid().getDomain()
+ username = self._client.get_bound_jid().getNode()
+ iq = Iq('set', NS_REGISTER, to=hostname)
+ query = iq.getQuery()
+ query.setTagData('username', username)
+ query.setTagData('password', password)
+ return iq
+
+ @callback
+ def _on_password_change(self, stanza):
+ if isResultNode(stanza):
+ return ChangePasswordResult(successful=True)
+
+ if stanza.getQuery() is None:
+ return raise_error(log.info, stanza)
+
+ form = get_form(stanza.getQuery(),
+ 'jabber:iq:register:changepassword')
+ if form is None:
+ return raise_error(log.info, stanza)
+ return ChangePasswordResult(successful=False, form=form)
+
+ @call_on_response('_default_response')
+ def change_password_with_form(self, form):
+ hostname = self._client.get_bound_jid().getDomain()
+ iq = Iq('set', NS_REGISTER, to=hostname)
+ iq.setQueryPayload(form)
+ return iq