From d82c652235c2a13687210fc2f055140fa969f303 Mon Sep 17 00:00:00 2001 From: Jonathan Seguin <jo@jonathanseguin.com> Date: Tue, 24 Aug 2021 16:38:48 -0400 Subject: [PATCH] Add graphql example to /api. Simplify auth code --- portal/auth_backends.py | 3 +-- portal/templates/portal/secure/user/api.html | 24 +++++++++++++++++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/portal/auth_backends.py b/portal/auth_backends.py index 8ee0486..e4b1e81 100644 --- a/portal/auth_backends.py +++ b/portal/auth_backends.py @@ -4,9 +4,8 @@ from django.contrib.auth.models import User class TokenAuthBackend(ModelBackend): def authenticate(self, request, token=None): - if not token and 'headers' in request: + if not token: token = request.headers.get('Iric-Auth-Token') - try: return User.objects.get(profile__api_token=token) except User.DoesNotExist: diff --git a/portal/templates/portal/secure/user/api.html b/portal/templates/portal/secure/user/api.html index 0044f03..8b89707 100644 --- a/portal/templates/portal/secure/user/api.html +++ b/portal/templates/portal/secure/user/api.html @@ -16,8 +16,12 @@ </div> <p> {% trans 'Use this token to authenticate your API calls by inserting it in the request header under "Iric-Auth-Token".' %} - Ex. </p> + <p> + {% trans 'Two APIs exists to query IRIC Data :' %} + </p> + + <h3> {% trans 'IRIC Data API v1 (python requests example)' %} </h3> <div class="col-10 alert alert-secondary"> <pre class='mb-0'><code>import requests url = '{{ request.scheme }}://{{ request.get_host }}/api/v1/my-datasets/list/json/' @@ -25,6 +29,24 @@ headers = {'Iric-Auth-Token': '{{user.profile.api_token}}'} r = requests.get(url, headers=headers) r.json()</code></pre> </div> + <h3> {% trans 'GraphQL API (python requests example)' %} </h3> + <p> + <i>{% trans 'NOTE: A GraphQL sandbox is also available online' %} : <a href="{{ request.scheme }}://{{ request.get_host }}/graphql/">{{ request.scheme }}://{{ request.get_host }}/graphql/<a></i> + </p> + <div class="col-10 alert alert-secondary"> + <pre class='mb-0'><code>import requests +url = '{{ request.scheme }}://{{ request.get_host }}/graphql/' +headers = {'Iric-Auth-Token': '{{user.profile.api_token}}'} +query = """{ + datafiles { + filename + } +} +""" +r = requests.post(url, headers=headers, json={'query': query}) +r.json()</code></pre> + </div> + </div> </div> -- GitLab