Merge pull request #4015 from naikel/cookies

[WebUI] Add save path, cookies and labels when adding torrents
This commit is contained in:
sledgehammer999 2015-11-29 18:12:10 -06:00
commit 6f2eccd62f
7 changed files with 142 additions and 83 deletions

View file

@ -44,6 +44,7 @@
#include "core/bittorrent/trackerentry.h"
#include "core/bittorrent/torrentinfo.h"
#include "core/bittorrent/torrenthandle.h"
#include "core/net/downloadmanager.h"
#include "websessiondata.h"
#include "webapplication.h"
@ -112,6 +113,7 @@ QMap<QString, QMap<QString, WebApplication::Action> > WebApplication::initialize
ADD_ACTION(command, bottomPrio);
ADD_ACTION(command, recheck);
ADD_ACTION(command, setLabel);
ADD_ACTION(command, getSavePath);
ADD_ACTION(version, api);
ADD_ACTION(version, api_min);
ADD_ACTION(version, qbittorrent);
@ -306,9 +308,33 @@ void WebApplication::action_command_shutdown()
void WebApplication::action_command_download()
{
CHECK_URI(0);
CHECK_PARAMETERS("urls");
QString urls = request().posts["urls"];
QStringList list = urls.split('\n');
QString savepath = request().posts["savepath"];
QString label = request().posts["label"];
QString cookie = request().posts["cookie"];
QList<QNetworkCookie> cookies;
if (!cookie.isEmpty()) {
QStringList cookiesStr = cookie.split("; ");
foreach (QString cookieStr, cookiesStr) {
cookieStr = cookieStr.trimmed();
int index = cookieStr.indexOf('=');
if (index > 1) {
QByteArray name = cookieStr.left(index).toLatin1();
QByteArray value = cookieStr.right(cookieStr.length() - index - 1).toLatin1();
QNetworkCookie c(name, value);
cookies << c;
}
}
}
savepath = savepath.trimmed();
label = label.trimmed();
BitTorrent::AddTorrentParams params;
params.savePath = savepath;
params.label = label;
foreach (QString url, list) {
url = url.trimmed();
@ -320,7 +346,9 @@ void WebApplication::action_command_download()
if ((url.size() == 40 && !url.contains(QRegExp("[^0-9A-Fa-f]")))
|| (url.size() == 32 && !url.contains(QRegExp("[^2-7A-Za-z]"))))
url = "magnet:?xt=urn:btih:" + url;
BitTorrent::Session::instance()->addTorrent(url);
Net::DownloadManager::instance()->setCookiesFromUrl(cookies, QUrl::fromEncoded(url.toUtf8()));
BitTorrent::Session::instance()->addTorrent(url, params);
}
}
}
@ -329,6 +357,11 @@ void WebApplication::action_command_upload()
{
qDebug() << Q_FUNC_INFO;
CHECK_URI(0);
QString savepath = request().posts["savepath"];
QString label = request().posts["label"];
savepath = savepath.trimmed();
label = label.trimmed();
foreach(const Http::UploadedFile& torrent, request().files) {
QString filePath = saveTmpFile(torrent.data);
@ -340,7 +373,10 @@ void WebApplication::action_command_upload()
print(QObject::tr("Error: '%1' is not a valid torrent file.\n").arg(torrent.filename), Http::CONTENT_TYPE_TXT);
}
else {
if (!BitTorrent::Session::instance()->addTorrent(torrentInfo)) {
BitTorrent::AddTorrentParams params;
params.savePath = savepath;
params.label = label;
if (!BitTorrent::Session::instance()->addTorrent(torrentInfo, params)) {
status(500, "Internal Server Error");
print(QObject::tr("Error: Could not add torrent to session."), Http::CONTENT_TYPE_TXT);
}
@ -685,6 +721,12 @@ void WebApplication::action_command_setLabel()
}
}
void WebApplication::action_command_getSavePath()
{
CHECK_URI(0);
print(Preferences::instance()->getSavePath());
}
bool WebApplication::isPublicScope()
{
return (scope_ == DEFAULT_SCOPE || scope_ == VERSION_INFO);