9#include <Cutelyst/Application>
10#include <Cutelyst/Request>
11#include <Cutelyst/Response>
15#include <QLoggingCategory>
17Q_LOGGING_CATEGORY(C_SERVER_SM,
"cutelyst.server.staticmap", QtWarningMsg)
34void StaticMap::addStaticMap(
const QString &mountPoint,
const QString &path,
bool append)
41 qCInfo(C_SERVER_SM) <<
"added mapping for" << mp <<
"=>" << path;
43 m_staticMaps.
push_back({mp, path, append});
44 std::sort(m_staticMaps.begin(),
46 [](
const MountPoint &a,
const MountPoint &b) ->
bool {
47 return a.mountPoint.size() < b.mountPoint.size();
57 const QString path = c->
req()->path();
58 for (
const MountPoint &mp : m_staticMaps) {
60 if (tryToServeFile(c, mp, path)) {
70 QString localPath = path;
72 localPath = path.
mid(mp.mountPoint.
size());
79 QString absFilePath = dir.absoluteFilePath(localPath);
84 return serveFile(c, absFilePath);
90 const QDateTime currentDateTime = QFileInfo(filename).lastModified();
92 res->setStatus(Response::NotModified);
96 auto file =
new QFile(filename);
98 qCDebug(C_SERVER_SM) <<
"Serving" << filename;
99 Headers &headers = res->headers();
112 headers.
setHeader(
"Cache-Control"_ba,
"public"_ba);
117 qCWarning(C_SERVER_SM) <<
"Could not serve" << filename << file->errorString();
122#include "moc_staticmap.cpp"
The Cutelyst application.
void beforePrepareAction(Cutelyst::Context *c, bool *skipMethod)
Response * response() const noexcept
Base class for Cutelyst Plugins.
Headers headers() const noexcept
virtual bool setup(Cutelyst::Application *app) override
The Cutelyst namespace holds all public Cutelyst API.
bool exists() const const
bool isValid() const const
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QString mid(qsizetype position, qsizetype n) &&
QString & prepend(QChar ch)
QString & remove(QChar ch, Qt::CaseSensitivity cs)
qsizetype size() const const
bool startsWith(QChar c, Qt::CaseSensitivity cs) const const