From dc7bf4420d379d19617cf93ad4e0f73660474be6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Mat=C3=ADas=20Aguirre?= Date: Tue, 17 Apr 2012 16:58:46 -0300 Subject: [PATCH] Code cleanup, move methods to superclass --- social_auth/backends/__init__.py | 40 +++++++++++--------------- social_auth/backends/contrib/github.py | 4 +-- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/social_auth/backends/__init__.py b/social_auth/backends/__init__.py index d258b3d..0f71154 100644 --- a/social_auth/backends/__init__.py +++ b/social_auth/backends/__init__.py @@ -526,11 +526,27 @@ class OpenIdAuth(BaseAuth): class BaseOAuth(BaseAuth): """OAuth base class""" + SETTINGS_KEY_NAME = '' + SETTINGS_SECRET_NAME = '' + def __init__(self, request, redirect): """Init method""" super(BaseOAuth, self).__init__(request, redirect) self.redirect_uri = self.build_absolute_uri(self.redirect) + def get_key_and_secret(self): + """Return tuple with Consumer Key and Consumer Secret for current + service provider. Must return (key, secret), order *must* be respected. + """ + return setting(self.SETTINGS_KEY_NAME), \ + setting(self.SETTINGS_SECRET_NAME) + + @classmethod + def enabled(cls): + """Return backend enabled status by checking basic settings""" + return setting(cls.SETTINGS_KEY_NAME) and \ + setting(cls.SETTINGS_SECRET_NAME) + class ConsumerBasedOAuth(BaseOAuth): """Consumer based mechanism OAuth authentication, fill the needed @@ -545,8 +561,6 @@ class ConsumerBasedOAuth(BaseOAuth): REQUEST_TOKEN_URL = '' ACCESS_TOKEN_URL = '' SERVER_URL = '' - SETTINGS_KEY_NAME = '' - SETTINGS_SECRET_NAME = '' def auth_url(self): """Return redirect url""" @@ -633,19 +647,6 @@ class ConsumerBasedOAuth(BaseOAuth): """Setups consumer""" return OAuthConsumer(*self.get_key_and_secret()) - def get_key_and_secret(self): - """Return tuple with Consumer Key and Consumer Secret for current - service provider. Must return (key, secret), order *must* be respected. - """ - return setting(self.SETTINGS_KEY_NAME), \ - setting(self.SETTINGS_SECRET_NAME) - - @classmethod - def enabled(cls): - """Return backend enabled status by checking basic settings""" - return setting(cls.SETTINGS_KEY_NAME) and \ - setting(cls.SETTINGS_SECRET_NAME) - class BaseOAuth2(BaseOAuth): """Base class for OAuth2 providers. @@ -692,7 +693,7 @@ class BaseOAuth2(BaseOAuth): 'Accept': 'application/json'} request = Request(self.ACCESS_TOKEN_URL, data=urlencode(params), headers=headers) - + try: response = simplejson.loads(urlopen(request).read()) except HTTPError, e: @@ -720,13 +721,6 @@ class BaseOAuth2(BaseOAuth): """Return list with needed access scope""" return [] - def get_key_and_secret(self): - """Return tuple with Consumer Key and Consumer Secret for current - service provider. Must return (key, secret), order *must* be respected. - """ - return setting(self.SETTINGS_KEY_NAME), \ - setting(self.SETTINGS_SECRET_NAME) - # Backend loading was previously performed via the # SOCIAL_AUTH_IMPORT_BACKENDS setting - as it's no longer used, diff --git a/social_auth/backends/contrib/github.py b/social_auth/backends/contrib/github.py index 75d5c9d..8ccb2d1 100644 --- a/social_auth/backends/contrib/github.py +++ b/social_auth/backends/contrib/github.py @@ -11,11 +11,9 @@ setting, it must be a list of values to request. By default account id and token expiration time are stored in extra_data field, check OAuthBackend class for details on how to extend it. """ -import cgi from urllib import urlencode, urlopen from django.utils import simplejson -from django.contrib.auth import authenticate from social_auth.utils import setting from social_auth.backends import BaseOAuth2, OAuthBackend, USERNAME @@ -58,7 +56,7 @@ class GithubAuth(BaseOAuth2): """Return list with needed access scope""" # Look at http://developer.github.com/v3/oauth/ return setting('GITHUB_EXTENDED_PERMISSIONS', []) - + def user_data(self, access_token, *args, **kwargs): """Loads user data from service""" url = GITHUB_USER_DATA_URL + '?' + urlencode({ -- 2.39.5