|
2 | 2 | import json |
3 | 3 |
|
4 | 4 | from django.conf import settings |
5 | | -from django.shortcuts import redirect, render |
| 5 | +from django.shortcuts import render |
6 | 6 | import requests |
7 | 7 |
|
8 | 8 |
|
9 | | -__version__ = "0.3.0" |
| 9 | +__version__ = "0.4.0" |
10 | 10 |
|
11 | 11 |
|
12 | 12 | @settings.AUTH.login_required |
13 | | -def index(request): |
14 | | - user = settings.AUTH.get_user(request) |
15 | | - assert user # User would not be None since we decorated this view with @login_required |
| 13 | +def index(request, *, context): |
16 | 14 | return render(request, 'index.html', dict( |
17 | | - user=user, |
| 15 | + user=context['user'], |
18 | 16 | version=__version__, |
19 | | - edit_profile_url=settings.AUTH.get_edit_profile_url(request), |
| 17 | + edit_profile_url=settings.AUTH.get_edit_profile_url(), |
20 | 18 | downstream_api=os.getenv("ENDPOINT"), |
21 | 19 | )) |
22 | 20 |
|
23 | | -# Instead of using the login_required decorator, |
24 | | -# here we demonstrate how to handle the error explicitly. |
25 | | -def call_downstream_api(request): |
26 | | - token = settings.AUTH.get_token_for_user(request, os.getenv("SCOPE", "").split()) |
27 | | - if "error" in token: |
28 | | - return redirect(settings.AUTH.login) |
29 | | - api_result = requests.get( # Use access token to call downstream api |
| 21 | +@settings.AUTH.login_required(scopes=os.getenv("SCOPE", "").split()) |
| 22 | +def call_downstream_api(request, *, context): |
| 23 | + api_result = requests.get( # Use access token to call a web api |
30 | 24 | os.getenv("ENDPOINT"), |
31 | | - headers={'Authorization': 'Bearer ' + token['access_token']}, |
| 25 | + headers={'Authorization': 'Bearer ' + context['access_token']}, |
32 | 26 | timeout=30, |
33 | | - ).json() # Here we assume the response format is json |
| 27 | + ).json() if context.get('access_token') else "Did you forget to set the SCOPE environment variable?" |
34 | 28 | return render(request, 'display.html', { |
35 | 29 | "title": "Result of downstream API call", |
36 | 30 | "content": json.dumps(api_result, indent=4), |
|
0 commit comments