videodownloader/cli/clidownloadinteraction.cpp

86 lines
3.0 KiB
C++

#include "./clidownloadinteraction.h"
#include "../network/download.h"
#include "../network/permissionstatus.h"
#include <c++utilities/application/commandlineutils.h>
#include <iostream>
using namespace std;
using namespace Network;
using namespace CppUtilities;
namespace Cli {
CliDownloadInteraction::CliDownloadInteraction(QObject *parent)
: QObject(parent)
{
}
void CliDownloadInteraction::connectDownload(Download *download)
{
connect(download, &Download::outputDeviceRequired, this,
static_cast<void (CliDownloadInteraction::*)(Download *, size_t)>(&CliDownloadInteraction::downloadRequiresOutputDevice),
Qt::QueuedConnection);
connect(download, &Download::overwriteingPermissionRequired, this, &CliDownloadInteraction::downloadRequriesOverwritePermission,
Qt::QueuedConnection);
connect(
download, &Download::appendingPermissionRequired, this, &CliDownloadInteraction::downloadRequriesAppendingPermission, Qt::QueuedConnection);
connect(download, &Download::redirectionPermissonRequired, this, &CliDownloadInteraction::downloadRequiresRedirectionPermission,
Qt::QueuedConnection);
connect(download, &Download::authenticationRequired, this, &CliDownloadInteraction::downloadRequiresAuthentication, Qt::QueuedConnection);
connect(download, &Download::sslErrors, this, &CliDownloadInteraction::downloadHasSslErrors, Qt::QueuedConnection);
}
void CliDownloadInteraction::disconnectDownload(Download *download)
{
download->disconnect(this);
}
void CliDownloadInteraction::downloadRequiresOutputDevice(Download *download, size_t optionIndex)
{
downloadRequiresOutputDevice(download, optionIndex, false);
}
void CliDownloadInteraction::downloadRequiresOutputDevice(Download *download, size_t optionIndex, bool forceFileDialog)
{
// TODO
}
void CliDownloadInteraction::downloadRequriesOverwritePermission(Download *download, size_t optionIndex, const QString &file)
{
// TODO
}
void CliDownloadInteraction::downloadRequriesAppendingPermission(
Download *download, size_t optionIndex, const QString &file, quint64 offset, quint64 fileSize)
{
// TODO
}
void CliDownloadInteraction::downloadRequiresRedirectionPermission(Download *download, size_t optionIndex)
{
// TODO
}
void CliDownloadInteraction::downloadRequiresAuthentication(Download *download, size_t optionIndex, const QString &realm)
{
// TODO
}
void CliDownloadInteraction::downloadHasSslErrors(Download *download, size_t optionIndex, const QList<QSslError> &sslErrors)
{
// TODO
const string downloadName = (download->downloadUrl().isEmpty() ? download->id() : download->downloadUrl().toString()).toStdString();
cout << "The download \"" << downloadName << "\" has SSL errors:" << endl;
for (const QSslError &error : sslErrors) {
cout << "- " << error.errorString().toStdString() << ":" << endl;
cout << " " << error.certificate().toText().toStdString() << endl;
}
if (confirmPrompt("Do you want to ignore the SSL errors for this download?")) {
// TODO
}
}
} // namespace Cli