from flask import Flask, render_template, request, redirect, url_for, flash, session import requests import json from flask import send_from_directory import os ################################################## ################################################## # # ⚠️ CAUTION: This is an HTTP-only server! # # If you don't know what you're doing, don't run # ################################################## ################################################## def send_request(prompt, endpoint): """ Send a request to the specified endpoint of an HTTP-only server. Args: prompt (str): The input prompt for the request. endpoint (str): The endpoint to which the request will be sent. Returns: str: The response from the server. Raises: KeyError: If the response JSON does not contain the expected "response" key. """ base_url = "http://127.0.0.1:13337" url = f"{base_url}{endpoint}" headers = { "Content-Type": "application/json", "Authorization": f"Bearer {session['token']}", } data = json.dumps({"input": prompt}) response = requests.post(url, headers=headers, data=data, verify=False) try: response = requests.post(url, headers=headers, data=data) response.raise_for_status() # raises HTTPError if the response status isn't 200 except requests.ConnectionError: return "Error: Unable to connect to the server." except requests.HTTPError as e: return f"Error: An HTTP error occurred: {str(e)}" app = Flask(__name__) app.secret_key = os.getenv("FLASK_SECRET_KEY") @app.route("/favicon.ico") def favicon(): """ Send the favicon.ico file from the static directory. Returns: Response object with the favicon.ico file Raises: - """ return send_from_directory( os.path.join(app.root_path, "static"), "favicon.ico", mimetype="image/vnd.microsoft.icon", ) @app.route("/", methods=["GET", "POST"]) def index(): """ Process the POST request and send a request to the specified API endpoint. Returns: str: The rendered HTML template with the response data. """ if request.method == "POST": prompt = request.form.get("prompt") endpoint = request.form.get("api") response = send_request(prompt=prompt, endpoint=endpoint) return render_template("index.html", response=response) return render_template("index.html", response=None) if __name__ == "__main__": app.run(host="127.0.0.1", port=13338, debug=True)