From 7d97905716cb016315df8e95bbd55f1771bc8583 Mon Sep 17 00:00:00 2001 From: Vladimir Golovnev Date: Sat, 18 Jun 2022 06:12:43 +0300 Subject: [PATCH] WebAPI: Add endpoint to set speed limit mode --- src/webui/api/transfercontroller.cpp | 12 ++++++++++++ src/webui/api/transfercontroller.h | 1 + src/webui/webapplication.h | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/webui/api/transfercontroller.cpp b/src/webui/api/transfercontroller.cpp index 59933b1f5..207b0787b 100644 --- a/src/webui/api/transfercontroller.cpp +++ b/src/webui/api/transfercontroller.cpp @@ -117,6 +117,18 @@ void TransferController::speedLimitsModeAction() setResult(QString::number(BitTorrent::Session::instance()->isAltGlobalSpeedLimitEnabled())); } +void TransferController::setSpeedLimitsModeAction() +{ + requireParams({u"mode"_qs}); + + const std::optional mode = Utils::String::parseInt(params().value(u"mode"_qs)); + if (!mode) + throw APIError(APIErrorType::BadParams, tr("'mode': invalid argument")); + + // Any non-zero values are considered as alternative mode + BitTorrent::Session::instance()->setAltGlobalSpeedLimitEnabled(mode != 0); +} + void TransferController::banPeersAction() { requireParams({u"peers"_qs}); diff --git a/src/webui/api/transfercontroller.h b/src/webui/api/transfercontroller.h index 3c8891b12..fe7a01695 100644 --- a/src/webui/api/transfercontroller.h +++ b/src/webui/api/transfercontroller.h @@ -41,6 +41,7 @@ public: private slots: void infoAction(); void speedLimitsModeAction(); + void setSpeedLimitsModeAction(); void toggleSpeedLimitsModeAction(); void uploadLimitAction(); void downloadLimitAction(); diff --git a/src/webui/webapplication.h b/src/webui/webapplication.h index d92269b2f..a1b3d4cfa 100644 --- a/src/webui/webapplication.h +++ b/src/webui/webapplication.h @@ -48,7 +48,7 @@ #include "base/utils/version.h" #include "api/isessionmanager.h" -inline const Utils::Version API_VERSION {2, 8, 13}; +inline const Utils::Version API_VERSION {2, 8, 14}; class APIController; class AuthController;