[Python-modules-commits] [python-social-auth] 58/322: Added backend for professionali.ru

Wolfgang Borgert debacle at moszumanska.debian.org
Sat Dec 24 15:12:49 UTC 2016


This is an automated email from the git hooks/post-receive script.

debacle pushed a commit to tag v0.2.10
in repository python-social-auth.

commit 22ea009c917342fe24ca5581558f27f823c398e1
Author: Sasha Golubev <erwerthg at gmail.com>
Date:   Wed Nov 26 04:06:55 2014 +0300

    Added backend for professionali.ru
---
 social/backends/professionali.py | 51 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 51 insertions(+)

diff --git a/social/backends/professionali.py b/social/backends/professionali.py
new file mode 100644
index 0000000..7f0ca27
--- /dev/null
+++ b/social/backends/professionali.py
@@ -0,0 +1,51 @@
+# -*- coding: utf-8 -*-
+"""
+professionaly OAuth 2.0 support.
+
+This contribution adds support for professionaly.ru OAuth 2.0.
+Username is retrieved from the identity returned by server.
+"""
+from time import time
+
+from social.backends.oauth import BaseOAuth2
+from social.utils import parse_qs
+
+
+class ProfessionaliOAuth2(BaseOAuth2):
+    name = 'professionali'
+    ID_KEY = 'user_id'
+    EXTRA_DATA = [('avatar_big', 'avatar_big'),
+                  ('link', 'link')]
+    AUTHORIZATION_URL = 'https://api.professionali.ru/oauth/authorize.html'
+    ACCESS_TOKEN_URL = 'https://api.professionali.ru/oauth/getToken.json'
+    ACCESS_TOKEN_METHOD = 'POST'
+
+    def get_user_details(self, response):
+        first_name, last_name = map(response.get, ('firstname', 'lastname'))
+        email = (self.setting('FAKE_EMAIL')
+                 and '%s at professionali.ru' % time()
+                 or '')
+        return {'username': '%s_%s' % (last_name, first_name),
+                'first_name': first_name,
+                'last_name': last_name,
+                'email': email}
+
+    def user_data(self, access_token, response, *args, **kwargs):
+        url = 'https://api.professionali.ru/v6/users/get.json'
+        default_fields = list(set(['firstname', 'lastname',
+                                   'avatar_big', 'link']
+                                  + self.setting('EXTRA_DATA', [])))
+        fields = ','.join(default_fields)
+        params = {'fields': fields,
+                  'access_token': access_token,
+                  'ids[]': response['user_id']}
+        try:
+            return self.get_json(url, params)[0]
+        except (TypeError, KeyError, IOError, ValueError, IndexError):
+            return None
+
+    def get_json(self, url, *args, **kwargs):
+        return self.request(url, verify=False, *args, **kwargs).json()
+
+    def get_querystring(self, url, *args, **kwargs):
+        return parse_qs(self.request(url, verify=False, *args, **kwargs).text)

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/python-modules/packages/python-social-auth.git



More information about the Python-modules-commits mailing list