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