diff options
author | Lance Stout <lancestout@gmail.com> | 2012-01-06 23:31:58 -0500 |
---|---|---|
committer | Lance Stout <lancestout@gmail.com> | 2012-01-06 23:31:58 -0500 |
commit | c578ddeb1aae6fb0a9f60092b53831c1e952058d (patch) | |
tree | 362f03d62e8481a1939e6c2e5882212cac6689f4 /sleekxmpp/features | |
parent | 8ef7188dae21f9ddde40365cdff8e046d7b4678a (diff) | |
download | slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.tar.gz slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.tar.bz2 slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.tar.xz slixmpp-c578ddeb1aae6fb0a9f60092b53831c1e952058d.zip |
Add support for MSN with X-MESSENGER-OAUTH2 SASL support.
NOTE: This requires already having the access token. It does NOT
perform any OAuth requests.
Diffstat (limited to 'sleekxmpp/features')
-rw-r--r-- | sleekxmpp/features/feature_mechanisms/mechanisms.py | 2 | ||||
-rw-r--r-- | sleekxmpp/features/feature_mechanisms/stanza/auth.py | 14 |
2 files changed, 14 insertions, 2 deletions
diff --git a/sleekxmpp/features/feature_mechanisms/mechanisms.py b/sleekxmpp/features/feature_mechanisms/mechanisms.py index 2b8321c2..deff5d30 100644 --- a/sleekxmpp/features/feature_mechanisms/mechanisms.py +++ b/sleekxmpp/features/feature_mechanisms/mechanisms.py @@ -39,6 +39,8 @@ class feature_mechanisms(base_plugin): values['username'] = self.xmpp.boundjid.user if 'password' in values: values['password'] = self.xmpp.password + if 'access_token' in values: + values['access_token'] = self.xmpp.password mech.fulfill(values) sasl_callback = self.config.get('sasl_callback', None) diff --git a/sleekxmpp/features/feature_mechanisms/stanza/auth.py b/sleekxmpp/features/feature_mechanisms/stanza/auth.py index e069b57f..9155adf6 100644 --- a/sleekxmpp/features/feature_mechanisms/stanza/auth.py +++ b/sleekxmpp/features/feature_mechanisms/stanza/auth.py @@ -25,15 +25,25 @@ class Auth(StanzaBase): interfaces = set(('mechanism', 'value')) plugin_attrib = name + #: Some SASL mechs require sending values as is, + #: without converting base64. + plain_mechs = set(['X-MESSENGER-OAUTH2']) + def setup(self, xml): StanzaBase.setup(self, xml) self.xml.tag = self.tag_name() def get_value(self): - return base64.b64decode(bytes(self.xml.text)) + if not self['mechanism'] in self.plain_mechs: + return base64.b64decode(bytes(self.xml.text)) + else: + return self.xml.text def set_value(self, values): - self.xml.text = bytes(base64.b64encode(values)).decode('utf-8') + if not self['mechanism'] in self.plain_mechs: + self.xml.text = bytes(base64.b64encode(values)).decode('utf-8') + else: + self.xml.text = values def del_value(self): self.xml.text = '' |