Use a more meaningful client name for scan reports

This commit is contained in:
emeric
2025-03-22 15:58:51 +01:00
parent 6e2b7ff2dd
commit ac5ede2388
+15 -9
View File
@@ -19,9 +19,8 @@
#include "ScannerController.hpp"
#include <iomanip>
#include <Wt/Http/Response.h>
#include <Wt/Utils.h>
#include <Wt/WCheckBox.h>
#include <Wt/WDateTime.h>
#include <Wt/WLocale.h>
@@ -29,6 +28,7 @@
#include <Wt/WResource.h>
#include "core/Service.hpp"
#include "core/String.hpp"
#include "database/Session.hpp"
#include "database/Track.hpp"
#include "services/scanner/IScannerService.hpp"
@@ -48,15 +48,13 @@ namespace lms::ui
class ReportResource : public Wt::WResource
{
public:
ReportResource()
{
suggestFileName("report.txt");
}
~ReportResource()
ReportResource() = default;
~ReportResource() override
{
beingDeleted();
}
ReportResource(const ReportResource&) = delete;
ReportResource& operator=(const ReportResource&) = delete;
void setScanStats(const scanner::ScanStats& stats)
{
@@ -66,11 +64,19 @@ namespace lms::ui
*_stats = stats;
}
void handleRequest(const Wt::Http::Request&, Wt::Http::Response& response)
void handleRequest(const Wt::Http::Request&, Wt::Http::Response& response) override
{
if (!_stats)
return;
auto encodeHttpHeaderField = [](const std::string& fieldName, const std::string& fieldValue) {
// This implements RFC 5987
return fieldName + "*=UTF-8''" + Wt::Utils::urlEncode(fieldValue);
};
const std::string cdp{ encodeHttpHeaderField("filename", "LMS_scan_report_" + core::stringUtils::toISO8601String(_stats->startTime) + ".txt") };
response.addHeader("Content-Disposition", "attachment; " + cdp);
response.out() << Wt::WString::tr("Lms.Admin.ScannerController.errors-header").arg(_stats->errors.size()).toUTF8() << std::endl;
for (const auto& error : _stats->errors)