diff options
Diffstat (limited to 'sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py')
-rw-r--r-- | sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py b/sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py new file mode 100644 index 00000000..cb0f09d5 --- /dev/null +++ b/sleekxmpp/thirdparty/suelta/mechanisms/facebook_platform.py @@ -0,0 +1,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(b'&'): + key, value = kv.split(b'=') + values[key] = value + + resp_data = { + b'method': values[b'method'], + b'v': b'1.0', + b'call_id': b'1.0', + b'nonce': values[b'nonce'], + b'access_token': self.values['access_token'], + b'api_key': self.values['api_key'] + } + resp = '&'.join(['%s=%s' % (k, v) for k, v in resp_data.items()]) + return bytes(resp) + return b'' + + def okay(self): + return True + +register_mechanism('X-FACEBOOK-PLATFORM', 40, X_FACEBOOK_PLATFORM, use_hashes=False) |