44 |
44 |
logger = logging.getLogger(__name__)
|
45 |
45 |
|
46 |
46 |
|
|
47 |
def urlencode(params):
|
|
48 |
if hasattr(params, 'urlencode') and callable(getattr(params, 'urlencode')):
|
|
49 |
return params.urlencode()
|
|
50 |
return urllib.urlencode(params)
|
|
51 |
|
|
52 |
|
47 |
53 |
def handles_oa2_requests(func):
|
48 |
54 |
def wrapper(self, *args, **kwargs):
|
49 |
55 |
if not self._errors_to_http:
|
... | ... | |
341 |
347 |
return bool(self.get_client_by_id(client_id))
|
342 |
348 |
|
343 |
349 |
def build_site_url(self, prefix='', **params):
|
344 |
|
params = urllib.urlencode(params)
|
|
350 |
params = urlencode(params)
|
345 |
351 |
return "%s%s%s%s" % (self.base_url, self.endpoints_prefix, prefix,
|
346 |
352 |
params)
|
347 |
353 |
|
... | ... | |
352 |
358 |
def build_client_redirect_uri(self, client, uri, **params):
|
353 |
359 |
if not client.redirect_uri_is_valid(uri):
|
354 |
360 |
raise OA2Error("Invalid redirect uri")
|
355 |
|
params = urllib.urlencode(params)
|
|
361 |
params = urlencode(params)
|
356 |
362 |
uri = self._get_uri_base(uri)
|
357 |
363 |
return "%s?%s" % (uri, params)
|
358 |
364 |
|
... | ... | |
396 |
402 |
|
397 |
403 |
def redirect_to_login_response(self, request, params):
|
398 |
404 |
parts = list(urlparse.urlsplit(request.path))
|
399 |
|
parts[3] = urllib.urlencode(params)
|
|
405 |
parts[3] = urlencode(params)
|
400 |
406 |
query = {'next': urlparse.urlunsplit(parts)}
|
401 |
407 |
return Response(302,
|
402 |
408 |
headers={'Location': '%s?%s' %
|
403 |
409 |
(self.get_login_uri(),
|
404 |
|
urllib.urlencode(query))})
|
|
410 |
urlencode(query))})
|
405 |
411 |
|
406 |
412 |
def redirect_to_uri(self, redirect_uri, code, state=None):
|
407 |
413 |
parts = list(urlparse.urlsplit(redirect_uri))
|
... | ... | |
409 |
415 |
params['code'] = code
|
410 |
416 |
if state is not None:
|
411 |
417 |
params['state'] = state
|
412 |
|
parts[3] = urllib.urlencode(params)
|
|
418 |
parts[3] = urlencode(params)
|
413 |
419 |
return Response(302,
|
414 |
420 |
headers={'Location': '%s' %
|
415 |
421 |
urlparse.urlunsplit(parts)})
|