mirror of https://github.com/xtekky/gpt4free
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.3 KiB
Python
40 lines
1.3 KiB
Python
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 |