2012-01-20 09:24:05 +00:00
|
|
|
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 = {}
|
2012-01-20 10:27:30 +00:00
|
|
|
for kv in challenge.split(b'&'):
|
|
|
|
key, value = kv.split(b'=')
|
2012-01-20 09:24:05 +00:00
|
|
|
values[key] = value
|
|
|
|
|
|
|
|
resp_data = {
|
2012-05-25 18:04:46 +00:00
|
|
|
'method': values[b'method'],
|
|
|
|
'v': '1.0',
|
|
|
|
'call_id': '1.0',
|
|
|
|
'nonce': values[b'nonce'],
|
|
|
|
'access_token': self.values['access_token'],
|
|
|
|
'api_key': self.values['api_key']
|
2012-01-20 09:24:05 +00:00
|
|
|
}
|
2012-05-25 18:04:46 +00:00
|
|
|
|
|
|
|
for k, v in resp_data.items():
|
|
|
|
resp_data[k] = bytes(v).decode('utf-8')
|
|
|
|
|
2012-01-20 09:24:05 +00:00
|
|
|
resp = '&'.join(['%s=%s' % (k, v) for k, v in resp_data.items()])
|
|
|
|
return bytes(resp)
|
2012-01-20 10:27:30 +00:00
|
|
|
return b''
|
2012-01-20 09:24:05 +00:00
|
|
|
|
|
|
|
def okay(self):
|
|
|
|
return True
|
|
|
|
|
|
|
|
register_mechanism('X-FACEBOOK-PLATFORM', 40, X_FACEBOOK_PLATFORM, use_hashes=False)
|