Spaces:
Sleeping
Sleeping
Upload app.py
Browse files- metadata_search/app.py +11 -11
metadata_search/app.py
CHANGED
|
@@ -91,6 +91,7 @@ from metadata_search.paper_figures import (
|
|
| 91 |
figure_paper_count,
|
| 92 |
figures_payload_for_paper,
|
| 93 |
figures_dir,
|
|
|
|
| 94 |
)
|
| 95 |
from metadata_search.mcp_retrieval import (
|
| 96 |
list_saved_papers,
|
|
@@ -274,18 +275,17 @@ def paper_pdf_file(filename: str):
|
|
| 274 |
|
| 275 |
@app.get("/figures/<path:paper_key>/<path:filename>")
|
| 276 |
def paper_figure_file(paper_key: str, filename: str):
|
| 277 |
-
|
| 278 |
-
|
| 279 |
-
|
| 280 |
-
|
| 281 |
-
if
|
| 282 |
-
return jsonify({"error": "Paper figures not found."}), 404
|
| 283 |
-
target = (paper_dir / filename).resolve()
|
| 284 |
-
if not str(target).startswith(str(paper_dir.resolve())):
|
| 285 |
-
return jsonify({"error": "Invalid figure path."}), 400
|
| 286 |
-
if not target.is_file():
|
| 287 |
return jsonify({"error": "Figure file not found."}), 404
|
| 288 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 289 |
|
| 290 |
|
| 291 |
@app.get("/api/papers/figures")
|
|
|
|
| 91 |
figure_paper_count,
|
| 92 |
figures_payload_for_paper,
|
| 93 |
figures_dir,
|
| 94 |
+
resolve_figure_asset,
|
| 95 |
)
|
| 96 |
from metadata_search.mcp_retrieval import (
|
| 97 |
list_saved_papers,
|
|
|
|
| 275 |
|
| 276 |
@app.get("/figures/<path:paper_key>/<path:filename>")
|
| 277 |
def paper_figure_file(paper_key: str, filename: str):
|
| 278 |
+
safe_paper_key = Path(paper_key).name
|
| 279 |
+
safe_name = Path(filename).name
|
| 280 |
+
|
| 281 |
+
target = resolve_figure_asset(safe_paper_key, safe_name)
|
| 282 |
+
if target is None:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 283 |
return jsonify({"error": "Figure file not found."}), 404
|
| 284 |
+
|
| 285 |
+
return send_from_directory(
|
| 286 |
+
target.parent,
|
| 287 |
+
target.name,
|
| 288 |
+
)
|
| 289 |
|
| 290 |
|
| 291 |
@app.get("/api/papers/figures")
|