niming_backend/app.py

68 lines
2.1 KiB
Python
Raw Normal View History

2024-11-07 16:55:35 +08:00
from flask import Flask, session, request, redirect, Response
import os, requests, time
from hashlib import sha256
2024-11-07 17:33:34 +08:00
from supaclient import supaClient, logger
2024-11-07 16:55:35 +08:00
from dotenv import load_dotenv
2024-11-07 17:33:34 +08:00
from supabase import Client
2024-11-07 16:55:35 +08:00
load_dotenv()
URL = os.getenv("SUPABASE_IP") + "/"
2024-11-07 02:19:53 +08:00
app = Flask(__name__)
app.config["SECRET_KEY"] = os.urandom(64)
app.shared_resource = supaClient()
# blueprints
2024-11-07 16:55:35 +08:00
# main
@app.route("/")
def index(): return "Hello, world!"
# reverse proxy
@app.route('/r/<path:path>',methods=['GET', 'POST'])
def proxy(path):
if request.method=='GET':
headers = request.headers
resp = requests.get(f'{URL}{path}', headers = headers) # forward
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
elif request.method=='POST':
# get items
headers = request.headers
json_ctx = request.get_json()
2024-11-07 17:33:34 +08:00
# flags
logger_args = []
2024-11-07 16:55:35 +08:00
# process
if path == "rest/v1/niming_posts": # niming post
# hash
hash = sha256( (json_ctx["content"] + str(time.time())).encode() ).hexdigest()
# ig posting
igid = None
2024-11-07 17:33:34 +08:00
# set logger
logger_args.append("newpost")
logger_args.append(hash)
2024-11-07 16:55:35 +08:00
# edit payload
json_ctx["hash"] = hash
json_ctx["igid"] = igid
# forward
resp = requests.post(f'{URL}{path}',json=json_ctx, headers = headers) # forward
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)
2024-11-07 17:33:34 +08:00
# logger
logger_res = logger(app.shared_resource.client, logger_args)
2024-11-07 16:55:35 +08:00
return response
2024-11-07 02:19:53 +08:00
# run
if __name__ == "__main__":
app.run(host = "0.0.0.0", port = 8000, debug = False)