diff --git a/src/app.py b/src/app.py index b0ccb74..a13fe63 100644 --- a/src/app.py +++ b/src/app.py @@ -4,7 +4,7 @@ from flask import Flask, request, jsonify, send_from_directory from werkzeug.utils import secure_filename import requests import utils.mLogger as log -from controllers.file_controller import upload_file, download_file +from controllers.file_controller import upload_file, download_file, delete_file from views import views app = Flask(__name__) @@ -19,6 +19,9 @@ app.route('/upload', methods=['POST'])(upload_file) # Route for downloading the file app.route('/download/', methods=['GET'])(download_file) +# Route for deleting the file +app.route('/delete/', methods=['DELETE'])(delete_file) + app.register_blueprint(views) if __name__ == '__main__': diff --git a/src/controllers/file_controller.py b/src/controllers/file_controller.py index f17bc44..27416e8 100644 --- a/src/controllers/file_controller.py +++ b/src/controllers/file_controller.py @@ -123,6 +123,39 @@ def download_file(code): download_name=file_info['filename'] ) +def delete_file(code): + metadata = load_metadata() + + if code not in metadata: + return jsonify({'error': 'Invalid code'}), 404 + + file_info = metadata[code] + file_path = file_info['path'] + expiry_time = datetime.fromisoformat(file_info['expiry_time']) + + # Check expiry + if datetime.now() > expiry_time: + del metadata[code] + save_metadata(metadata) + return jsonify({'error': 'File already expired'}), 404 + + # Check if still downloadable + if file_info['downloads'] > file_info['max_downloads']: + del metadata[code] + save_metadata(metadata) + return jsonify({'error': 'File no longer available'}), 404 + + # Delete the file + if os.path.exists(file_path): + os.remove(file_path) + + # Remove from metadata + del metadata[code] + save_metadata(metadata) + log.i(f"File deleted: {code}") + + return jsonify({'message': 'File deleted successfully'}), 200 + def cleanup_expired_files(): metadata = load_metadata() updated_metadata = {} diff --git a/src/templates/index.html b/src/templates/index.html index 77eb2d5..207cf23 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -4,6 +4,7 @@ Download File +