summaryrefslogtreecommitdiff
path: root/sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py
blob: 5b80c9f51d21a8f60c875320c133028d137c4f9a (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
from sleekxmpp.thirdparty.suelta.util import bytes
from sleekxmpp.thirdparty.suelta.sasl import Mechanism, register_mechanism

try:
    import urlparse
except ImportError:
    import urllib.parse as urlparse



class X_FACEBOOK_PLATFORM(Mechanism):

    def __init__(self, sasl, name):
        super(X_FACEBOOK_PLATFORM, self).__init__(sasl, name)
        self.check_values(['access_token', 'api_key'])

    def process(self, challenge=None):
        if challenge is not None:
            values = {}
            for kv in challenge.split('&'):
                key, value = kv.split('=')
                values[key] = value

            resp_data = {
                'method': values['method'],
                'v': '1.0',
                'call_id': '1.0',
                'nonce': values['nonce'],
                'access_token': self.values['access_token'],
                'api_key': self.values['api_key']
            }
            resp = '&'.join(['%s=%s' % (k, v) for k, v in resp_data.items()])
            return bytes(resp)
        return bytes('')

    def okay(self):
        return True

register_mechanism('X-FACEBOOK-PLATFORM', 40, X_FACEBOOK_PLATFORM, use_hashes=False)