diff options
Diffstat (limited to 'routes/media.py')
| -rw-r--r-- | routes/media.py | 39 |
1 files changed, 16 insertions, 23 deletions
diff --git a/routes/media.py b/routes/media.py index 6c3c831..b9828a8 100644 --- a/routes/media.py +++ b/routes/media.py @@ -19,31 +19,24 @@ from datetime import datetime def get_media(): notAllowed() -@route("/api/media", method="POST") -def post_media(): - try: - entry = database["entries"][request.forms["id"]] - except KeyError as e: - raise HTTPResponse("Invalid id", 400) from e - - for f in request.files: - entry["files"].append({}) - - id = ObjectId() @route("/api/media/<id>") def get_media_id(id): - for entry in database["entries"].values(): - for file in entry["files"]: - if file["_id"] == id: - response.set_header("Content-Type", file["content-type"]) - response.set_header("Content-Length", file["length"]) - response.set_header("Date", datetime.fromisoformat(file["uploadDate"]).strftime("%a, %d %b %Y %H:%M:%S GMT")) - response.set_header("Content-Disposition", f"attachment; filename=\"{file['filename']}\"") - if request.method == "GET": - if "downloadURL" in file["metadata"]: - return HTTPResponse(status=302, headers={"Location" : file["metadata"]["downloadURL"]}) - else: - return static_file(file["filename"], root=f"media/{id}") + session = DBSession() + try: + file = session.query(File).filter_by(id=id).one() + except db.orm.exc.NoResultFound: + raise HTTPResponse(status=404) + + response.set_header("Content-Type", file.content_type) + response.set_header("Content-Length", file.length) + response.set_header("Date", file.date.strftime("%a, %d %b %Y %H:%M:%S GMT")) + response.set_header("Content-Disposition", f"attachment; filename=\"{file.name}\"") + if request.method == "GET": + if file.download_url: + #return requests.request(request.method, file.download_url, allow_redirects=True) + return HTTPResponse(status=302, headers={"Location" : file.download_url}) + else: + return static_file(file.id, os.path.join(os.getcwd(), "media"), file.content_type, file.name) raise HTTPResponse(status=404) |
