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;