feat(http-api): cabler la route POST /torrents/delete_all

Le commit precedent ajoutait api_torrents_delete_all et la commande
Tauri, mais aucune route HTTP ne l'exposait : la WebUI servie en mode
navigateur appelait POST /torrents/delete_all et recevait un 404. Seul
le chemin desktop, qui passe par invokeAPI, fonctionnait.

Ajoute h_torrents_delete_all, avec remove_files lu en query param et
defaut a false, puis enregistre la route dans le bloc !read_only aux
cotes de /torrents/{id}/delete. Segment statique, donc prioritaire sur
/torrents/{id} — meme schema que /torrents/resolve_magnet.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Lionel DARNIS 2026-08-07 19:25:48 +02:00
parent 5d68aaf352
commit fbd052bc04
2 changed files with 22 additions and 0 deletions

View file

@ -112,6 +112,9 @@ pub fn make_api_router(state: ApiState) -> Router {
"/torrents/{id}/delete",
post(torrents::h_torrent_action_delete),
)
// Segment statique, donc prioritaire sur /torrents/{id} — meme
// schema que /torrents/resolve_magnet juste au-dessus.
.route("/torrents/delete_all", post(torrents::h_torrents_delete_all))
.route(
"/torrents/{id}/update_only_files",
post(torrents::h_torrent_action_update_only_files),

View file

@ -146,6 +146,25 @@ pub async fn h_torrent_action_delete(
.map(axum::Json)
}
#[derive(Deserialize, Default)]
pub struct DeleteAllQueryParams {
/// Supprime aussi les donnees telechargees. Absent = false, on ne garde
/// que la suppression des torrents.
#[serde(default)]
pub remove_files: bool,
}
pub async fn h_torrents_delete_all(
State(state): State<ApiState>,
Query(params): Query<DeleteAllQueryParams>,
) -> Result<impl IntoResponse> {
state
.api
.api_torrents_delete_all(params.remove_files)
.await
.map(axum::Json)
}
#[derive(Deserialize)]
pub struct UpdateOnlyFilesRequest {
only_files: Vec<usize>,