Skip to content
This repository has been archived by the owner on Jan 19, 2022. It is now read-only.

Commit

Permalink
Merge branch 'develop' of github.com:mozilla/f1 into develop
Browse files Browse the repository at this point in the history
  • Loading branch information
billrest committed May 4, 2011
2 parents a178c73 + 1917206 commit 987e133
Show file tree
Hide file tree
Showing 33 changed files with 332 additions and 743 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -2,6 +2,7 @@
*.egg-info
*~
.coverage
.ropeproject
/lib
coverage.xml
nosetests.xml
Expand Down
3 changes: 3 additions & 0 deletions linkdrop/__init__.py
@@ -0,0 +1,3 @@
import logging

log = logging.getLogger('share')
Empty file removed linkdrop/config/__init__.py
Empty file.
81 changes: 0 additions & 81 deletions linkdrop/config/environment.py

This file was deleted.

99 changes: 0 additions & 99 deletions linkdrop/config/middleware.py

This file was deleted.

56 changes: 0 additions & 56 deletions linkdrop/config/routing.py

This file was deleted.

3 changes: 1 addition & 2 deletions linkdrop/controllers/__init__.py
Expand Up @@ -25,12 +25,11 @@
# object once Pylons gets removed

from linkoauth import Services
from pylons import config

services = None


def get_services():
def get_services(config):
global services
if services is None:
enabled = int(config.get('sstatus.ttl', '0'))
Expand Down
41 changes: 21 additions & 20 deletions linkdrop/controllers/account.py
Expand Up @@ -22,25 +22,22 @@
# Rob Miller (rmiller@mozilla.com)
#

import logging
import urllib
import json
from datetime import datetime
from uuid import uuid1
import hashlib

from pylons import config, request, session, url
from pylons.controllers.util import redirect
from pylons.controllers.core import HTTPException
from webob.exc import HTTPException
from webob.exc import HTTPFound

from linkoauth.errors import AccessException
from linkdrop import log
from linkdrop.controllers import get_services
from linkdrop.lib.base import BaseController
from linkdrop.lib.helpers import get_redirect_response
from linkdrop.lib.metrics import metrics

log = logging.getLogger(__name__)


class AccountController(BaseController):
"""
Expand All @@ -52,7 +49,7 @@ class AccountController(BaseController):
"""
__api_controller__ = True # for docs

def _create_account(self, domain, userid, username):
def _create_account(self, request, domain, userid, username):
acct_hash = hashlib.sha1(
"%s#%s" % ((username or '').encode('utf-8'),
(userid or '').encode('utf-8'))).hexdigest()
Expand All @@ -63,28 +60,32 @@ def _create_account(self, domain, userid, username):
return acct

# this is not a rest api
def authorize(self, *args, **kw):
def authorize(self, request, *args, **kw):
provider = request.POST['domain']
log.info("authorize request for %r", provider)
services = get_services()
return services.request_access(provider, request, url, session)
services = get_services(self.app.config)
session = request.environ.get('beaker.session', {})
return services.request_access(provider, request, request.urlgen,
session)

# this is not a rest api
def verify(self, *args, **kw):
def verify(self, request, *args, **kw):
provider = request.params.get('provider')
log.info("verify request for %r", provider)

acct = dict()
try:
services = get_services()
user = services.verify(provider, request, url, session)
services = get_services(self.app.config)
session = request.environ.get('beaker.session', {})
user = services.verify(provider, request, request.urlgen, session)

account = user['profile']['accounts'][0]
if (not user.get('oauth_token')
and not user.get('oauth_token_secret')):
raise Exception('Unable to get OAUTH access')

acct = self._create_account(provider,
acct = self._create_account(request,
provider,
str(account['userid']),
account['username'])
acct['profile'] = user['profile']
Expand All @@ -93,7 +94,7 @@ def verify(self, *args, **kw):
acct['oauth_token_secret'] = user['oauth_token_secret']
acct['updated'] = datetime.now().isoformat()
except AccessException, e:
self._redirectException(e)
self._redirectException(request, e)
# lib/oauth/*.py throws redirect exceptions in a number of
# places and we don't want those "exceptions" to be logged as
# errors.
Expand All @@ -103,12 +104,12 @@ def verify(self, *args, **kw):
raise
except Exception, e:
log.exception('failed to verify the %s account', provider)
self._redirectException(e)
resp = get_redirect_response(config.get('oauth_success'))
self._redirectException(request, e)
resp = get_redirect_response(request.config.get('oauth_success'))
resp.set_cookie('account_tokens', urllib.quote(json.dumps(acct)))
raise resp.exception

def _redirectException(self, e):
def _redirectException(self, request, e):
err = urllib.urlencode([('error', str(e))])
url = config.get('oauth_failure').split('#')
return redirect('%s?%s#%s' % (url[0], err, url[1]))
url = request.config.get('oauth_failure').split('#')
raise HTTPFound(location='%s?%s#%s' % (url[0], err, url[1]))

0 comments on commit 987e133

Please sign in to comment.