/** * @RDE_HEADER@ * Download a PDF file from the server * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, NLE, 2019-04-29 */ #include "pdf_download.h" #include "main_handler.h" #include namespace FileManagement { CBI_PdfDownload::CBI_PdfDownload(unsigned short port) : CommandInterface(port, "PDF_DOWNLOAD") , m_logger(getLogger("PdfDownload")) {} void CBI_PdfDownload::handleCommandInternal(const QVector &args) { setAutoWriteEOL(false); DEBUG_LOG(m_logger) << "Got command for PDF download"; if (args.count() != 1) { ERROR_LOG(m_logger) << "Invalid arg count"; return; } DEBUG_LOG(m_logger) << "Argument count ok"; bool bOk; int documentId = args.at(0).toInt(&bOk); if (!bOk) { const QString err(QStringLiteral("Invalid file id: '%1'").arg(QString::fromUtf8(args.at(0)))); writeError(err); ERROR_LOG(m_logger) << err; return; } DEBUG_LOG(m_logger) << "Argument ok"; MainHandler *mainHandler = static_cast(TcpServer::instance(port())->userData()); Database::FlmFileContent fileContent; mainHandler->db()->selectFlmFileContent(documentId, fileContent); if (fileContent.id < 1) { const QString err(QStringLiteral("File with ID '%1' does not exist").arg(QString::fromUtf8(args.at(0)))); writeError(err); ERROR_LOG(m_logger) << err; return; } DEBUG_LOG(m_logger) << "File ID valid"; if (fileContent.fileTypeId != FileManagement::FileType::Pdf) { const QString err(QStringLiteral("File with ID '%1' is not of type Pdf").arg(QString::fromUtf8(args.at(0)))); writeError(err); ERROR_LOG(m_logger) << err; return; } DEBUG_LOG(m_logger) << "FileType valid"; // success DEBUG_LOG(m_logger) << "File ok, sending file \"" << fileContent.name << "\" with ID " << fileContent.id; writeData(fileContent.content); } QString CBI_PdfDownload::help() const { return QLatin1String("PDF_DOWNLOAD "); } } // namespace FileManagement