mirror of
https://github.com/d47081/qBittorrent.git
synced 2025-02-02 09:55:55 +00:00
Define and use a proper HTTP header structure
This commit is contained in:
parent
957d697aee
commit
74a2168bc1
@ -35,9 +35,9 @@ void ResponseBuilder::status(const uint code, const QString &text)
|
||||
m_response.status = {code, text};
|
||||
}
|
||||
|
||||
void ResponseBuilder::header(const QString &name, const QString &value)
|
||||
void ResponseBuilder::header(const Header &header)
|
||||
{
|
||||
m_response.headers[name] = value;
|
||||
m_response.headers[header.name] = header.value;
|
||||
}
|
||||
|
||||
void ResponseBuilder::print(const QString &text, const QString &type)
|
||||
|
@ -37,7 +37,7 @@ namespace Http
|
||||
{
|
||||
public:
|
||||
void status(uint code = 200, const QString &text = QLatin1String("OK"));
|
||||
void header(const QString &name, const QString &value);
|
||||
void header(const Header &header);
|
||||
void print(const QString &text, const QString &type = CONTENT_TYPE_HTML);
|
||||
void print(const QByteArray &data, const QString &type = CONTENT_TYPE_HTML);
|
||||
void clear();
|
||||
|
@ -92,6 +92,12 @@ namespace Http
|
||||
QByteArray data;
|
||||
};
|
||||
|
||||
struct Header
|
||||
{
|
||||
QString name;
|
||||
QString value;
|
||||
};
|
||||
|
||||
struct Request
|
||||
{
|
||||
QString version;
|
||||
|
@ -400,7 +400,7 @@ void WebApplication::sendFile(const QString &path)
|
||||
const auto it = m_translatedFiles.constFind(path);
|
||||
if ((it != m_translatedFiles.constEnd()) && (lastModified <= it->lastModified)) {
|
||||
print(it->data, it->mimeType);
|
||||
header(Http::HEADER_CACHE_CONTROL, getCachingInterval(it->mimeType));
|
||||
header({Http::HEADER_CACHE_CONTROL, getCachingInterval(it->mimeType)});
|
||||
return;
|
||||
}
|
||||
|
||||
@ -432,7 +432,7 @@ void WebApplication::sendFile(const QString &path)
|
||||
}
|
||||
|
||||
print(data, mimeType.name());
|
||||
header(Http::HEADER_CACHE_CONTROL, getCachingInterval(mimeType.name()));
|
||||
header({Http::HEADER_CACHE_CONTROL, getCachingInterval(mimeType.name())});
|
||||
}
|
||||
|
||||
Http::Response WebApplication::processRequest(const Http::Request &request, const Http::Environment &env)
|
||||
@ -469,8 +469,8 @@ Http::Response WebApplication::processRequest(const Http::Request &request, cons
|
||||
print(error.message(), Http::CONTENT_TYPE_TXT);
|
||||
}
|
||||
|
||||
for (const CustomHTTPHeader &prebuiltHeader : asConst(m_prebuiltHeaders))
|
||||
header(prebuiltHeader.name, prebuiltHeader.value);
|
||||
for (const Http::Header &prebuiltHeader : asConst(m_prebuiltHeaders))
|
||||
header(prebuiltHeader);
|
||||
|
||||
return response();
|
||||
}
|
||||
@ -562,7 +562,7 @@ void WebApplication::sessionStart()
|
||||
QByteArray cookieRawForm = cookie.toRawForm();
|
||||
if (m_isCSRFProtectionEnabled)
|
||||
cookieRawForm.append("; SameSite=Strict");
|
||||
header(Http::HEADER_SET_COOKIE, cookieRawForm);
|
||||
header({Http::HEADER_SET_COOKIE, cookieRawForm});
|
||||
}
|
||||
|
||||
void WebApplication::sessionEnd()
|
||||
@ -576,7 +576,7 @@ void WebApplication::sessionEnd()
|
||||
delete m_sessions.take(m_currentSession->id());
|
||||
m_currentSession = nullptr;
|
||||
|
||||
header(Http::HEADER_SET_COOKIE, cookie.toRawForm());
|
||||
header({Http::HEADER_SET_COOKIE, cookie.toRawForm()});
|
||||
}
|
||||
|
||||
bool WebApplication::isCrossSiteRequest(const Http::Request &request) const
|
||||
|
@ -156,12 +156,5 @@ private:
|
||||
bool m_isHostHeaderValidationEnabled;
|
||||
bool m_isHttpsEnabled;
|
||||
|
||||
// Custom HTTP headers
|
||||
struct CustomHTTPHeader
|
||||
{
|
||||
QString name;
|
||||
QString value;
|
||||
};
|
||||
|
||||
QVector<CustomHTTPHeader> m_prebuiltHeaders;
|
||||
QVector<Http::Header> m_prebuiltHeaders;
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user