summaryrefslogtreecommitdiff
path: root/slixmpp/plugins/google/auth/stanza.py
blob: bc793bd014a1a33ac21dd95e8a28d951abebfb4d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

# Slixmpp: The Slick XMPP Library
# Copyright (C) 2013 Nathanael C. Fritz, Lance J.T. Stout
# This file is part of slixmpp.
# See the file LICENSE for copying permission.
from slixmpp.xmlstream import ElementBase, ET


class GoogleAuth(ElementBase):
    name = 'auth'
    namespace = 'http://www.google.com/talk/protocol/auth'
    plugin_attrib = 'google'
    interfaces = {'client_uses_full_bind_result', 'service'}

    discovery_attr= '{%s}client-uses-full-bind-result' % namespace
    service_attr= '{%s}service' % namespace

    def setup(self, xml):
        """Don't create XML for the plugin."""
        self.xml = ET.Element('')

    def get_client_uses_full_bind_result(self):
        return self.parent()._get_attr(self.discovery_attr) == 'true'

    def set_client_uses_full_bind_result(self, value):
        if value in (True, 'true'):
            self.parent()._set_attr(self.discovery_attr, 'true')
        else:
            self.parent()._del_attr(self.discovery_attr)

    def del_client_uses_full_bind_result(self):
        self.parent()._del_attr(self.discovery_attr)

    def get_service(self):
        return self.parent()._get_attr(self.service_attr, '')

    def set_service(self, value):
        if value:
            self.parent()._set_attr(self.service_attr, value)
        else:
            self.parent()._del_attr(self.service_attr)

    def del_service(self):
        self.parent()._del_attr(self.service_attr)