README.md
Rendering markdown...
import argparse
import json
from pathlib import Path
from flask import Flask, Response, jsonify, request
app = Flask(__name__)
HITS = []
DEFAULT_FILENAME = "../../app/test.py"
DEFAULT_CONTENT = "print('stage1 demo hit')\n"
PROBE_MODEL = Path(__file__).resolve().parent / "trained_probe_model.tar.gz"
@app.get("/stage1")
def stage1():
filename = request.args.get("filename", DEFAULT_FILENAME)
content = request.args.get("content", DEFAULT_CONTENT)
HITS.append(
{
"remote_addr": request.headers.get("X-Forwarded-For", request.remote_addr),
"path": "/stage1",
"filename": filename,
"content_len": len(content),
}
)
resp = Response(content.encode("utf-8"), mimetype="text/plain; charset=utf-8")
resp.headers["filename"] = filename
return resp
@app.get("/stage2-probe-model")
def stage2_probe_model():
if not PROBE_MODEL.exists():
return jsonify({"error": f"missing probe model: {PROBE_MODEL.name}"}), 500
body = PROBE_MODEL.read_bytes()
HITS.append(
{
"remote_addr": request.headers.get("X-Forwarded-For", request.remote_addr),
"path": "/stage2-probe-model",
"filename": PROBE_MODEL.name,
"content_len": len(body),
}
)
resp = Response(body, mimetype="application/x-tar")
resp.headers["filename"] = PROBE_MODEL.name
resp.headers["ETag"] = "trained-probe-model"
return resp
@app.get("/hits")
def hits():
return jsonify(HITS)
def main() -> None:
parser = argparse.ArgumentParser(description="Minimal Flask server for filename write testing")
parser.add_argument("--host", default="0.0.0.0")
parser.add_argument("--port", type=int, default=5000)
args = parser.parse_args()
print(
json.dumps(
{
"listen": f"http://{args.host}:{args.port}",
"stage1_url": f"http://127.0.0.1:{args.port}/stage1",
"stage2_probe_model_url": f"http://127.0.0.1:{args.port}/stage2-probe-model",
"default_filename": DEFAULT_FILENAME,
},
ensure_ascii=False,
),
flush=True,
)
app.run(host=args.host, port=args.port, debug=False)
if __name__ == "__main__":
main()