mirror of
https://github.com/qbittorrent/qBittorrent
synced 2025-07-14 01:03:08 -07:00
parent
42b87963fd
commit
a1af077889
2 changed files with 35 additions and 0 deletions
|
@ -36,6 +36,7 @@
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QDir>
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonDocument>
|
#include <QJsonDocument>
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
|
@ -62,6 +63,7 @@
|
||||||
#include "base/utils/password.h"
|
#include "base/utils/password.h"
|
||||||
#include "base/utils/string.h"
|
#include "base/utils/string.h"
|
||||||
#include "base/version.h"
|
#include "base/version.h"
|
||||||
|
#include "apierror.h"
|
||||||
#include "../webapplication.h"
|
#include "../webapplication.h"
|
||||||
|
|
||||||
using namespace std::chrono_literals;
|
using namespace std::chrono_literals;
|
||||||
|
@ -1129,6 +1131,38 @@ void AppController::sendTestEmailAction()
|
||||||
app()->sendTestEmail();
|
app()->sendTestEmail();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void AppController::getDirectoryContentAction()
|
||||||
|
{
|
||||||
|
requireParams({u"dirPath"_s});
|
||||||
|
|
||||||
|
const QString dirPath = params().value(u"dirPath"_s);
|
||||||
|
if (dirPath.isEmpty() || dirPath.startsWith(u':'))
|
||||||
|
throw APIError(APIErrorType::BadParams, tr("Invalid directory path"));
|
||||||
|
|
||||||
|
const QDir dir {dirPath};
|
||||||
|
if (!dir.isAbsolute())
|
||||||
|
throw APIError(APIErrorType::BadParams, tr("Invalid directory path"));
|
||||||
|
if (!dir.exists())
|
||||||
|
throw APIError(APIErrorType::NotFound, tr("Directory does not exist"));
|
||||||
|
|
||||||
|
const QString visibility = params().value(u"mode"_s, u"all"_s);
|
||||||
|
|
||||||
|
const auto parseDirectoryContentMode = [](const QString &visibility) -> QDir::Filters
|
||||||
|
{
|
||||||
|
if (visibility == u"dirs")
|
||||||
|
return QDir::Dirs;
|
||||||
|
if (visibility == u"files")
|
||||||
|
return QDir::Files;
|
||||||
|
if (visibility == u"all")
|
||||||
|
return (QDir::Dirs | QDir::Files);
|
||||||
|
throw APIError(APIErrorType::BadParams, tr("Invalid mode, allowed values: %1").arg(u"all, dirs, files"_s));
|
||||||
|
};
|
||||||
|
|
||||||
|
const QStringList dirs = dir.entryList(QDir::NoDotAndDotDot | parseDirectoryContentMode(visibility));
|
||||||
|
setResult(QJsonArray::fromStringList(dirs));
|
||||||
|
}
|
||||||
|
|
||||||
void AppController::networkInterfaceListAction()
|
void AppController::networkInterfaceListAction()
|
||||||
{
|
{
|
||||||
QJsonArray ifaceList;
|
QJsonArray ifaceList;
|
||||||
|
|
|
@ -49,6 +49,7 @@ private slots:
|
||||||
void setPreferencesAction();
|
void setPreferencesAction();
|
||||||
void defaultSavePathAction();
|
void defaultSavePathAction();
|
||||||
void sendTestEmailAction();
|
void sendTestEmailAction();
|
||||||
|
void getDirectoryContentAction();
|
||||||
|
|
||||||
void networkInterfaceListAction();
|
void networkInterfaceListAction();
|
||||||
void networkInterfaceAddressListAction();
|
void networkInterfaceAddressListAction();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue