From 03f911fd0a4bb2768835fe16b9bef0893ccc25b9 Mon Sep 17 00:00:00 2001 From: Mikhail Svetkin <mikhail.svetkin@gmail.com> Date: Sun, 21 Jul 2019 12:16:19 +0200 Subject: [PATCH] QHttpServerResponse: Use rvalue more MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I442245dc800a545142f3f28ea51a4465d6eaff84 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io> --- src/httpserver/qhttpserverresponse.cpp | 34 +++++++++++++++++++++++++- src/httpserver/qhttpserverresponse.h | 16 ++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/src/httpserver/qhttpserverresponse.cpp b/src/httpserver/qhttpserverresponse.cpp index 5941418..e997e96 100644 --- a/src/httpserver/qhttpserverresponse.cpp +++ b/src/httpserver/qhttpserverresponse.cpp @@ -56,7 +56,7 @@ QHttpServerResponse::QHttpServerResponse(const QHttpServerResponse::StatusCode s } QHttpServerResponse::QHttpServerResponse(const char *data) - : QHttpServerResponse(QByteArray(data)) + : QHttpServerResponse(QByteArray::fromRawData(data, qstrlen(data))) { } @@ -70,6 +70,13 @@ QHttpServerResponse::QHttpServerResponse(const QByteArray &data) { } +QHttpServerResponse::QHttpServerResponse(QByteArray &&data) + : QHttpServerResponse( + QMimeDatabase().mimeTypeForData(data).name().toLocal8Bit(), + std::move(data)) +{ +} + QHttpServerResponse::QHttpServerResponse(const QJsonObject &data) : QHttpServerResponse(mimeApplicationJson, QJsonDocument(data).toJson(QJsonDocument::Compact)) @@ -89,6 +96,31 @@ QHttpServerResponse::QHttpServerResponse(const QByteArray &mimeType, { } +QHttpServerResponse::QHttpServerResponse(QByteArray &&mimeType, + const QByteArray &data, + const StatusCode status) + : QHttpServerResponse( + new QHttpServerResponsePrivate{std::move(mimeType), data, status}) +{ +} + +QHttpServerResponse::QHttpServerResponse(const QByteArray &mimeType, + QByteArray &&data, + const StatusCode status) + : QHttpServerResponse( + new QHttpServerResponsePrivate{mimeType, std::move(data), status}) +{ +} + +QHttpServerResponse::QHttpServerResponse(QByteArray &&mimeType, + QByteArray &&data, + const StatusCode status) + : QHttpServerResponse( + new QHttpServerResponsePrivate{std::move(mimeType), std::move(data), + status}) +{ +} + QHttpServerResponse::~QHttpServerResponse() { } diff --git a/src/httpserver/qhttpserverresponse.h b/src/httpserver/qhttpserverresponse.h index 030b8c4..73fa52d 100644 --- a/src/httpserver/qhttpserverresponse.h +++ b/src/httpserver/qhttpserverresponse.h @@ -54,14 +54,30 @@ public: QHttpServerResponse& operator=(QHttpServerResponse &&other) = delete; QHttpServerResponse(const StatusCode statusCode); + QHttpServerResponse(const char *data); + QHttpServerResponse(const QString &data); + explicit QHttpServerResponse(const QByteArray &data); + explicit QHttpServerResponse(QByteArray &&data); + QHttpServerResponse(const QJsonObject &data); QHttpServerResponse(const QJsonArray &data); + QHttpServerResponse(const QByteArray &mimeType, const QByteArray &data, const StatusCode status = StatusCode::Ok); + QHttpServerResponse(QByteArray &&mimeType, + const QByteArray &data, + const StatusCode status = StatusCode::Ok); + QHttpServerResponse(const QByteArray &mimeType, + QByteArray &&data, + const StatusCode status = StatusCode::Ok); + QHttpServerResponse(QByteArray &&mimeType, + QByteArray &&data, + const StatusCode status = StatusCode::Ok); + virtual ~QHttpServerResponse(); static QHttpServerResponse fromFile(const QString &fileName);