Rename to slixmpp
[slixmpp.git] / slixmpp / features / feature_mechanisms / stanza / auth.py
blobc32069ec7d6f4f904ed4551c23474dd7e9196ec5
1 """
2 Slixmpp: The Slick XMPP Library
3 Copyright (C) 2011 Nathanael C. Fritz
4 This file is part of Slixmpp.
6 See the file LICENSE for copying permission.
7 """
9 import base64
11 from slixmpp.util import bytes
12 from slixmpp.xmlstream import StanzaBase
15 class Auth(StanzaBase):
17 """
18 """
20 name = 'auth'
21 namespace = 'urn:ietf:params:xml:ns:xmpp-sasl'
22 interfaces = set(('mechanism', 'value'))
23 plugin_attrib = name
25 #: Some SASL mechs require sending values as is,
26 #: without converting base64.
27 plain_mechs = set(['X-MESSENGER-OAUTH2'])
29 def setup(self, xml):
30 StanzaBase.setup(self, xml)
31 self.xml.tag = self.tag_name()
33 def get_value(self):
34 if not self['mechanism'] in self.plain_mechs:
35 return base64.b64decode(bytes(self.xml.text))
36 else:
37 return self.xml.text
39 def set_value(self, values):
40 if not self['mechanism'] in self.plain_mechs:
41 if values:
42 self.xml.text = bytes(base64.b64encode(values)).decode('utf-8')
43 elif values == b'':
44 self.xml.text = '='
45 else:
46 self.xml.text = bytes(values).decode('utf-8')
48 def del_value(self):
49 self.xml.text = ''