mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-08-20 05:13:30 -07:00
refact: Instead of looping, use the applyToTorrents function.
This commit is contained in:
parent
c487c42c8c
commit
3c78a57d7b
1 changed files with 6 additions and 51 deletions
|
@ -158,7 +158,7 @@ namespace
|
||||||
void applyToTorrents(const QStringList &idList, Func func)
|
void applyToTorrents(const QStringList &idList, Func func)
|
||||||
requires std::invocable<Func, BitTorrent::Torrent *>
|
requires std::invocable<Func, BitTorrent::Torrent *>
|
||||||
{
|
{
|
||||||
if ((idList.size() == 1) && (idList[0] == u"all"))
|
if ((idList.size() == 1) && (idList[0] == u"all" || idList[0] == u"*"))
|
||||||
{
|
{
|
||||||
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
for (BitTorrent::Torrent *const torrent : asConst(BitTorrent::Session::instance()->torrents()))
|
||||||
func(torrent);
|
func(torrent);
|
||||||
|
@ -1116,31 +1116,10 @@ void TorrentsController::addAction()
|
||||||
void TorrentsController::addTrackersAction()
|
void TorrentsController::addTrackersAction()
|
||||||
{
|
{
|
||||||
requireParams({u"hash"_s, u"urls"_s});
|
requireParams({u"hash"_s, u"urls"_s});
|
||||||
const QString hashParam = params()[u"hash"_s];
|
const QList<BitTorrent::TrackerEntry> trackers = BitTorrent::parseTrackerEntries(params()[u"urls"_s]);
|
||||||
QList<BitTorrent::Torrent *> torrents;
|
const QStringList idStrings = params()[u"hash"_s].split(u'|');
|
||||||
const QList<BitTorrent::TrackerEntry> entries = BitTorrent::parseTrackerEntries(params()[u"urls"_s]);
|
|
||||||
|
|
||||||
const QStringList idStrings = hashParam.split(u'|', Qt::SkipEmptyParts);
|
applyToTorrents(idStrings, [&trackers](BitTorrent::Torrent *const torrent) { torrent->addTrackers(trackers); });
|
||||||
for (const QString &hash : idStrings)
|
|
||||||
{
|
|
||||||
if (hash == u"*"_s)
|
|
||||||
continue;
|
|
||||||
const auto id = BitTorrent::TorrentID::fromString(hash);
|
|
||||||
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id);
|
|
||||||
if (!torrent)
|
|
||||||
throw APIError(APIErrorType::NotFound);
|
|
||||||
|
|
||||||
torrents.append(torrent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hashParam == u"*"_s)
|
|
||||||
{
|
|
||||||
// add this tracker to all torrents
|
|
||||||
torrents = BitTorrent::Session::instance()->torrents();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (BitTorrent::Torrent *const torrent : asConst(torrents))
|
|
||||||
torrent->addTrackers(entries);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::editTrackerAction()
|
void TorrentsController::editTrackerAction()
|
||||||
|
@ -1202,7 +1181,7 @@ void TorrentsController::removeTrackersAction()
|
||||||
{
|
{
|
||||||
requireParams({u"hash"_s, u"urls"_s});
|
requireParams({u"hash"_s, u"urls"_s});
|
||||||
|
|
||||||
const QString hashParam = params()[u"hash"_s];
|
const QStringList idStrings = params()[u"hash"_s].split(u'|', Qt::SkipEmptyParts);
|
||||||
const QStringList urlsParam = params()[u"urls"_s].split(u'|', Qt::SkipEmptyParts);
|
const QStringList urlsParam = params()[u"urls"_s].split(u'|', Qt::SkipEmptyParts);
|
||||||
|
|
||||||
QStringList urls;
|
QStringList urls;
|
||||||
|
@ -1210,31 +1189,7 @@ void TorrentsController::removeTrackersAction()
|
||||||
for (const QString &urlStr : urlsParam)
|
for (const QString &urlStr : urlsParam)
|
||||||
urls << QUrl::fromPercentEncoding(urlStr.toLatin1());
|
urls << QUrl::fromPercentEncoding(urlStr.toLatin1());
|
||||||
|
|
||||||
QList<BitTorrent::Torrent *> torrents;
|
applyToTorrents(idStrings, [&urls](BitTorrent::Torrent *const torrent) { torrent->removeTrackers(urls); });
|
||||||
|
|
||||||
const QStringList idStrings = hashParam.split(u'|', Qt::SkipEmptyParts);
|
|
||||||
for (const QString &hash : idStrings)
|
|
||||||
{
|
|
||||||
if (hash == u"*"_s)
|
|
||||||
continue;
|
|
||||||
const auto id = BitTorrent::TorrentID::fromString(hash);
|
|
||||||
BitTorrent::Torrent *const torrent = BitTorrent::Session::instance()->getTorrent(id);
|
|
||||||
if (!torrent)
|
|
||||||
throw APIError(APIErrorType::NotFound);
|
|
||||||
|
|
||||||
torrents.append(torrent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hashParam == u"*"_s)
|
|
||||||
{
|
|
||||||
// remove trackers from all torrents
|
|
||||||
torrents = BitTorrent::Session::instance()->torrents();
|
|
||||||
}
|
|
||||||
|
|
||||||
for (BitTorrent::Torrent *const torrent : asConst(torrents))
|
|
||||||
torrent->removeTrackers(urls);
|
|
||||||
|
|
||||||
setResult(QString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TorrentsController::addPeersAction()
|
void TorrentsController::addPeersAction()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue