summaryrefslogtreecommitdiffstats
path: root/g4f/gui/server/website.py
diff options
context:
space:
mode:
Diffstat (limited to 'g4f/gui/server/website.py')
-rw-r--r--g4f/gui/server/website.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/g4f/gui/server/website.py b/g4f/gui/server/website.py
new file mode 100644
index 00000000..d0c56c20
--- /dev/null
+++ b/g4f/gui/server/website.py
@@ -0,0 +1,40 @@
+from flask import render_template, send_file, redirect
+from time import time
+from os import urandom
+
+class Website:
+ def __init__(self, app) -> None:
+ self.app = app
+ self.routes = {
+ '/': {
+ 'function': lambda: redirect('/chat'),
+ 'methods': ['GET', 'POST']
+ },
+ '/chat/': {
+ 'function': self._index,
+ 'methods': ['GET', 'POST']
+ },
+ '/chat/<conversation_id>': {
+ 'function': self._chat,
+ 'methods': ['GET', 'POST']
+ },
+ '/assets/<folder>/<file>': {
+ 'function': self._assets,
+ 'methods': ['GET', 'POST']
+ }
+ }
+
+ def _chat(self, conversation_id):
+ if not '-' in conversation_id:
+ return redirect(f'/chat')
+
+ return render_template('index.html', chat_id = conversation_id)
+
+ def _index(self):
+ return render_template('index.html', chat_id = f'{urandom(4).hex()}-{urandom(2).hex()}-{urandom(2).hex()}-{urandom(2).hex()}-{hex(int(time() * 1000))[2:]}')
+
+ def _assets(self, folder: str, file: str):
+ try:
+ return send_file(f"./../client/{folder}/{file}", as_attachment=False)
+ except:
+ return "File not found", 404 \ No newline at end of file