kangas-demo / app.py
CalebCometML's picture
Update app.py
9c70e78
raw
history blame
2.81 kB
import requests
from flask import Flask, Response, request
import socket
from pathlib import Path
import streamlit.web.bootstrap
from streamlit import config as _config
import kangas as kg
proj_dir = Path(__file__).parent
filename = proj_dir / "app.py"
_config.set_option("server.headless", True)
_config.set_option("server.port", 7840)
args = []
hostname = socket.gethostname()
#ip_address = socket.gethostbyname(hostname)
ip_address = 'calebcometml-kangas-demo.hf.space'
application = Flask(__name__)
@application.route('/kangas', strict_slashes=False)
@application.route('/kangas/<path:path>')
def kangas_proxy(path=None):
query_string = request.query_string.decode('utf-8')
if path is None and len(query_string) < 1:
resp = requests.get(f'http://{ip_address}:7640/')
else:
if path is None:
path = ''
resp = requests.get(f'http://{ip_address}:7640/{str(path)}?{query_string}')
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
return response
@application.route('/api/<path:path>')
def api_proxy(path):
query_string = request.query_string.decode('utf-8')
resp = requests.get(f'http://{ip_address}:7640/api/{path}?{query_string}')
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
return response
@application.route('/_next/<path:path>')
def next_proxy(path=None):
application.logger.info("PATH: %s" % path)
resp = requests.get(f'http://{ip_address}:7640/_next/%s' % path)
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
return response
@application.route('/<path>.png')
@application.route('/<path>.ico')
def image_proxy(path=None):
application.logger.info(path)
resp = requests.get(f'http://{ip_address}:7640/%s.png' % path)
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
application.logger.info(response)
return response
if __name__ == "__main__":
application.run(debug=True)