From eb0a28f293ae6c077d0ca3a089e6e461e280771c Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Tue, 30 Jul 2024 00:00:16 -0400
Subject: [PATCH] Update api_send form to handle header data better and give
 more options

---
 django_rest/test_app/forms.py                     |  4 ++--
 .../test_app/templates/test_app/api_send.html     |  6 +++---
 django_rest/test_app/views.py                     | 15 ++++++++++++---
 django_v2/test_app/forms.py                       |  4 ++--
 .../test_app/templates/test_app/api_send.html     |  6 +++---
 django_v2/test_app/views.py                       | 15 ++++++++++++---
 django_v3/test_app/forms.py                       |  4 ++--
 .../test_app/templates/test_app/api_send.html     |  6 +++---
 django_v3/test_app/views.py                       | 15 ++++++++++++---
 django_v4/test_app/forms.py                       |  4 ++--
 .../test_app/templates/test_app/api_send.html     |  6 +++---
 django_v4/test_app/views.py                       | 15 ++++++++++++---
 django_v5/test_app/forms.py                       |  4 ++--
 .../test_app/templates/test_app/api_send.html     |  6 +++---
 django_v5/test_app/views.py                       | 14 +++++++++++---
 15 files changed, 84 insertions(+), 40 deletions(-)

diff --git a/django_rest/test_app/forms.py b/django_rest/test_app/forms.py
index e82dbfe..f9eef05 100644
--- a/django_rest/test_app/forms.py
+++ b/django_rest/test_app/forms.py
@@ -19,10 +19,10 @@ class ApiSendForm(forms.Form):
         widget=forms.Textarea(attrs={'rows': '6'}),
         help_text='Optional URL get param to append to URL.',
     )
-    header_token = forms.CharField(
+    header_params = forms.CharField(
         required=False,
         widget=forms.Textarea(attrs={'rows': '6'}),
-        help_text='Optional token to put into request header, such as required for API authentication.'
+        help_text='Optional dict of data to put into request header, such as values required for API authentication.'
     )
     payload = forms.CharField(
         required=False,
diff --git a/django_rest/test_app/templates/test_app/api_send.html b/django_rest/test_app/templates/test_app/api_send.html
index f0e098e..21366f7 100644
--- a/django_rest/test_app/templates/test_app/api_send.html
+++ b/django_rest/test_app/templates/test_app/api_send.html
@@ -305,10 +305,10 @@
     <div class="field-group">
       <div class="label">
         <p>
-          Header Token:
+          Header Params:
         </p>
       </div>
-      <pre>MyExampleHeaderAuthToken-112233445566778899ABABCDCD</pre>
+      <pre>{"Testing": "Test"}</pre>
     </div>
     <div class="field-group">
       <div class="label">
@@ -331,7 +331,7 @@
 
 header: {
   "Accept": "application/json",
-  "token": "MyExampleHeaderAuthToken-112233445566778899ABABCDCD"
+  "Testing": "Test"
 }
 
 data: {
diff --git a/django_rest/test_app/views.py b/django_rest/test_app/views.py
index 8533ff4..965a322 100644
--- a/django_rest/test_app/views.py
+++ b/django_rest/test_app/views.py
@@ -359,7 +359,7 @@ def api_send(request):
 
             url = str(form.cleaned_data['url']).strip()
             get_params = str(form.cleaned_data.get('get_params', '')).strip()
-            header_token = str(form.cleaned_data.get('header_token', '')).strip()
+            header_params = str(form.cleaned_data.get('header_params', '')).strip()
             payload = str(form.cleaned_data.get('payload', '{}')).strip()
             if len(payload) > 0:
                 try:
@@ -386,8 +386,17 @@ def api_send(request):
 
             # Determine header values.
             headers = {'Accept': 'application/json'}
-            if header_token:
-                headers['token'] = header_token
+            if len(header_params) > 0:
+                try:
+                    header_params = json.loads(header_params)
+                    headers.update(header_params)
+                except json.decoder.JSONDecodeError:
+                    has_error = True
+                    payload = {}
+                    form.add_error(
+                        'header_params',
+                        'Unrecognized/invalid JSON syntax. Please double check syntax and try again.',
+                    )
 
             # Determine data values.
             if payload:
diff --git a/django_v2/test_app/forms.py b/django_v2/test_app/forms.py
index 5af5038..f5d8861 100644
--- a/django_v2/test_app/forms.py
+++ b/django_v2/test_app/forms.py
@@ -19,10 +19,10 @@ class ApiSendForm(forms.Form):
         widget=forms.Textarea(attrs={'rows': '6'}),
         help_text='Optional URL get param to append to URL.',
     )
-    header_token = forms.CharField(
+    header_params = forms.CharField(
         required=False,
         widget=forms.Textarea(attrs={'rows': '6'}),
-        help_text='Optional token to put into request header, such as required for API authentication.'
+        help_text='Optional dict of data to put into request header, such as values required for API authentication.'
     )
     payload = forms.CharField(
         required=False,
diff --git a/django_v2/test_app/templates/test_app/api_send.html b/django_v2/test_app/templates/test_app/api_send.html
index 25b1811..43ef7aa 100644
--- a/django_v2/test_app/templates/test_app/api_send.html
+++ b/django_v2/test_app/templates/test_app/api_send.html
@@ -305,10 +305,10 @@
     <div class="field-group">
       <div class="label">
         <p>
-          Header Token:
+          Header Params:
         </p>
       </div>
-      <pre>MyExampleHeaderAuthToken-112233445566778899ABABCDCD</pre>
+      <pre>{"Testing": "Test"}</pre>
     </div>
     <div class="field-group">
       <div class="label">
@@ -331,7 +331,7 @@
 
 header: {
   "Accept": "application/json",
-  "token": "MyExampleHeaderAuthToken-112233445566778899ABABCDCD"
+  "Testing": "Test"
 }
 
 data: {
diff --git a/django_v2/test_app/views.py b/django_v2/test_app/views.py
index 34432df..3168a94 100644
--- a/django_v2/test_app/views.py
+++ b/django_v2/test_app/views.py
@@ -352,7 +352,7 @@ def api_send(request):
 
             url = str(form.cleaned_data['url']).strip()
             get_params = str(form.cleaned_data.get('get_params', '')).strip()
-            header_token = str(form.cleaned_data.get('header_token', '')).strip()
+            header_params = str(form.cleaned_data.get('header_params', '')).strip()
             payload = str(form.cleaned_data.get('payload', '{}')).strip()
             if len(payload) > 0:
                 try:
@@ -379,8 +379,17 @@ def api_send(request):
 
             # Determine header values.
             headers = {'Accept': 'application/json'}
-            if header_token:
-                headers['token'] = header_token
+            if len(header_params) > 0:
+                try:
+                    header_params = json.loads(header_params)
+                    headers.update(header_params)
+                except json.decoder.JSONDecodeError:
+                    has_error = True
+                    payload = {}
+                    form.add_error(
+                        'header_params',
+                        'Unrecognized/invalid JSON syntax. Please double check syntax and try again.',
+                    )
 
             # Determine data values.
             if payload:
diff --git a/django_v3/test_app/forms.py b/django_v3/test_app/forms.py
index 85e2b4e..55dba43 100644
--- a/django_v3/test_app/forms.py
+++ b/django_v3/test_app/forms.py
@@ -19,10 +19,10 @@ class ApiSendForm(forms.Form):
         widget=forms.Textarea(attrs={'rows': '6'}),
         help_text='Optional URL get param to append to URL.',
     )
-    header_token = forms.CharField(
+    header_params = forms.CharField(
         required=False,
         widget=forms.Textarea(attrs={'rows': '6'}),
-        help_text='Optional token to put into request header, such as required for API authentication.'
+        help_text='Optional dict of data to put into request header, such as values required for API authentication.'
     )
     payload = forms.CharField(
         required=False,
diff --git a/django_v3/test_app/templates/test_app/api_send.html b/django_v3/test_app/templates/test_app/api_send.html
index 48d1b13..6e4c3cd 100644
--- a/django_v3/test_app/templates/test_app/api_send.html
+++ b/django_v3/test_app/templates/test_app/api_send.html
@@ -305,10 +305,10 @@
     <div class="field-group">
       <div class="label">
         <p>
-          Header Token:
+          Header Params:
         </p>
       </div>
-      <pre>MyExampleHeaderAuthToken-112233445566778899ABABCDCD</pre>
+      <pre>{"Testing": "Test"}</pre>
     </div>
     <div class="field-group">
       <div class="label">
@@ -331,7 +331,7 @@
 
 header: {
   "Accept": "application/json",
-  "token": "MyExampleHeaderAuthToken-112233445566778899ABABCDCD"
+  "Testing": "Test"
 }
 
 data: {
diff --git a/django_v3/test_app/views.py b/django_v3/test_app/views.py
index fecc304..adb94d4 100644
--- a/django_v3/test_app/views.py
+++ b/django_v3/test_app/views.py
@@ -352,7 +352,7 @@ def api_send(request):
 
             url = str(form.cleaned_data['url']).strip()
             get_params = str(form.cleaned_data.get('get_params', '')).strip()
-            header_token = str(form.cleaned_data.get('header_token', '')).strip()
+            header_params = str(form.cleaned_data.get('header_params', '')).strip()
             payload = str(form.cleaned_data.get('payload', '{}')).strip()
             if len(payload) > 0:
                 try:
@@ -379,8 +379,17 @@ def api_send(request):
 
             # Determine header values.
             headers = {'Accept': 'application/json'}
-            if header_token:
-                headers['token'] = header_token
+            if len(header_params) > 0:
+                try:
+                    header_params = json.loads(header_params)
+                    headers.update(header_params)
+                except json.decoder.JSONDecodeError:
+                    has_error = True
+                    payload = {}
+                    form.add_error(
+                        'header_params',
+                        'Unrecognized/invalid JSON syntax. Please double check syntax and try again.',
+                    )
 
             # Determine data values.
             if payload:
diff --git a/django_v4/test_app/forms.py b/django_v4/test_app/forms.py
index 85e2b4e..55dba43 100644
--- a/django_v4/test_app/forms.py
+++ b/django_v4/test_app/forms.py
@@ -19,10 +19,10 @@ class ApiSendForm(forms.Form):
         widget=forms.Textarea(attrs={'rows': '6'}),
         help_text='Optional URL get param to append to URL.',
     )
-    header_token = forms.CharField(
+    header_params = forms.CharField(
         required=False,
         widget=forms.Textarea(attrs={'rows': '6'}),
-        help_text='Optional token to put into request header, such as required for API authentication.'
+        help_text='Optional dict of data to put into request header, such as values required for API authentication.'
     )
     payload = forms.CharField(
         required=False,
diff --git a/django_v4/test_app/templates/test_app/api_send.html b/django_v4/test_app/templates/test_app/api_send.html
index 48d1b13..6e4c3cd 100644
--- a/django_v4/test_app/templates/test_app/api_send.html
+++ b/django_v4/test_app/templates/test_app/api_send.html
@@ -305,10 +305,10 @@
     <div class="field-group">
       <div class="label">
         <p>
-          Header Token:
+          Header Params:
         </p>
       </div>
-      <pre>MyExampleHeaderAuthToken-112233445566778899ABABCDCD</pre>
+      <pre>{"Testing": "Test"}</pre>
     </div>
     <div class="field-group">
       <div class="label">
@@ -331,7 +331,7 @@
 
 header: {
   "Accept": "application/json",
-  "token": "MyExampleHeaderAuthToken-112233445566778899ABABCDCD"
+  "Testing": "Test"
 }
 
 data: {
diff --git a/django_v4/test_app/views.py b/django_v4/test_app/views.py
index 39b125f..81920d0 100644
--- a/django_v4/test_app/views.py
+++ b/django_v4/test_app/views.py
@@ -352,7 +352,7 @@ def api_send(request):
 
             url = str(form.cleaned_data['url']).strip()
             get_params = str(form.cleaned_data.get('get_params', '')).strip()
-            header_token = str(form.cleaned_data.get('header_token', '')).strip()
+            header_params = str(form.cleaned_data.get('header_params', '')).strip()
             payload = str(form.cleaned_data.get('payload', '{}')).strip()
             if len(payload) > 0:
                 try:
@@ -379,8 +379,17 @@ def api_send(request):
 
             # Determine header values.
             headers = {'Accept': 'application/json'}
-            if header_token:
-                headers['token'] = header_token
+            if len(header_params) > 0:
+                try:
+                    header_params = json.loads(header_params)
+                    headers.update(header_params)
+                except json.decoder.JSONDecodeError:
+                    has_error = True
+                    payload = {}
+                    form.add_error(
+                        'header_params',
+                        'Unrecognized/invalid JSON syntax. Please double check syntax and try again.',
+                    )
 
             # Determine data values.
             if payload:
diff --git a/django_v5/test_app/forms.py b/django_v5/test_app/forms.py
index fa7b361..54d8e10 100644
--- a/django_v5/test_app/forms.py
+++ b/django_v5/test_app/forms.py
@@ -19,10 +19,10 @@ class ApiSendForm(forms.Form):
         widget=forms.Textarea(attrs={'rows': '6'}),
         help_text='Optional URL get param to append to URL.',
     )
-    header_token = forms.CharField(
+    header_params = forms.CharField(
         required=False,
         widget=forms.Textarea(attrs={'rows': '6'}),
-        help_text='Optional token to put into request header, such as required for API authentication.'
+        help_text='Optional dict of data to put into request header, such as values required for API authentication.'
     )
     payload = forms.CharField(
         required=False,
diff --git a/django_v5/test_app/templates/test_app/api_send.html b/django_v5/test_app/templates/test_app/api_send.html
index 43bf8ef..8dc577f 100644
--- a/django_v5/test_app/templates/test_app/api_send.html
+++ b/django_v5/test_app/templates/test_app/api_send.html
@@ -305,10 +305,10 @@
     <div class="field-group">
       <div class="label">
         <p>
-          Header Token:
+          Header Params:
         </p>
       </div>
-      <pre>MyExampleHeaderAuthToken-112233445566778899ABABCDCD</pre>
+      <pre>{"Testing": "Test"}</pre>
     </div>
     <div class="field-group">
       <div class="label">
@@ -331,7 +331,7 @@
 
 header: {
   "Accept": "application/json",
-  "token": "MyExampleHeaderAuthToken-112233445566778899ABABCDCD"
+  "Testing": "Test"
 }
 
 data: {
diff --git a/django_v5/test_app/views.py b/django_v5/test_app/views.py
index 2a7d013..d44e6c7 100644
--- a/django_v5/test_app/views.py
+++ b/django_v5/test_app/views.py
@@ -352,7 +352,7 @@ def api_send(request):
 
             url = str(form.cleaned_data['url']).strip()
             get_params = str(form.cleaned_data.get('get_params', '')).strip()
-            header_token = str(form.cleaned_data.get('header_token', '')).strip()
+            header_params = str(form.cleaned_data.get('header_params', '')).strip()
             payload = str(form.cleaned_data.get('payload', '{}')).strip()
             if len(payload) > 0:
                 try:
@@ -379,8 +379,16 @@ def api_send(request):
 
             # Determine header values.
             headers = {'Accept': 'application/json'}
-            if header_token:
-                headers['token'] = header_token
+            if len(payload) > 0:
+                try:
+                    payload = json.loads(payload)
+                except json.decoder.JSONDecodeError:
+                    has_error = True
+                    payload = {}
+                    form.add_error(
+                        'payload',
+                        'Unrecognized/invalid JSON syntax. Please double check syntax and try again.',
+                    )
 
             # Determine data values.
             if payload:
-- 
GitLab