first commit
This commit is contained in:
69
pytorrent/routes/backup.py
Normal file
69
pytorrent/routes/backup.py
Normal file
@@ -0,0 +1,69 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from ._shared import *
|
||||
|
||||
@bp.get("/backup")
|
||||
def backup_list():
|
||||
return ok({"backups": backup_service.list_backups(default_user_id()), "auto": backup_service.get_auto_backup_settings(default_user_id())})
|
||||
|
||||
|
||||
|
||||
@bp.post("/backup")
|
||||
def backup_create():
|
||||
data = request.get_json(silent=True) or {}
|
||||
return ok({"backup": backup_service.create_backup(str(data.get("name") or "Manual backup"), default_user_id()), "backups": backup_service.list_backups(default_user_id())})
|
||||
|
||||
|
||||
@bp.get("/backup/settings")
|
||||
def backup_settings_get():
|
||||
return ok({"settings": backup_service.get_auto_backup_settings(default_user_id())})
|
||||
|
||||
|
||||
@bp.post("/backup/settings")
|
||||
def backup_settings_save():
|
||||
data = request.get_json(silent=True) or {}
|
||||
try:
|
||||
return ok({"settings": backup_service.save_auto_backup_settings(data, default_user_id())})
|
||||
except Exception as exc:
|
||||
return jsonify({"ok": False, "error": str(exc)}), 400
|
||||
|
||||
|
||||
@bp.get("/backup/<int:backup_id>/preview")
|
||||
def backup_preview(backup_id: int):
|
||||
try:
|
||||
return ok({"preview": backup_service.preview_backup(backup_id, default_user_id())})
|
||||
except Exception as exc:
|
||||
return jsonify({"ok": False, "error": str(exc)}), 400
|
||||
|
||||
|
||||
|
||||
@bp.post("/backup/<int:backup_id>/restore")
|
||||
def backup_restore(backup_id: int):
|
||||
try:
|
||||
return ok({"result": backup_service.restore_backup(backup_id, default_user_id())})
|
||||
except Exception as exc:
|
||||
return jsonify({"ok": False, "error": str(exc)}), 400
|
||||
|
||||
|
||||
|
||||
@bp.delete("/backup/<int:backup_id>")
|
||||
def backup_delete(backup_id: int):
|
||||
try:
|
||||
return ok({"result": backup_service.delete_backup(backup_id, default_user_id())})
|
||||
except Exception as exc:
|
||||
return jsonify({"ok": False, "error": str(exc)}), 400
|
||||
|
||||
|
||||
|
||||
@bp.get("/backup/<int:backup_id>/download")
|
||||
def backup_download(backup_id: int):
|
||||
try:
|
||||
payload = backup_service.payload_for_backup(backup_id, default_user_id())
|
||||
tmp = tempfile.NamedTemporaryFile(prefix="pytorrent-backup-", suffix=".json", delete=False, mode="w", encoding="utf-8")
|
||||
json.dump(payload, tmp, ensure_ascii=False, indent=2)
|
||||
tmp.close()
|
||||
return send_file(tmp.name, as_attachment=True, download_name=f"pytorrent-backup-{backup_id}.json")
|
||||
except Exception as exc:
|
||||
return jsonify({"ok": False, "error": str(exc)}), 400
|
||||
|
||||
|
||||
Reference in New Issue
Block a user