1 | // SPDX-FileCopyrightText: 2018 Kitsune Ral <kitsune-ral@users.sf.net> |
2 | // SPDX-License-Identifier: LGPL-2.1-or-later |
3 | |
4 | #pragma once |
5 | |
6 | #include <Quotient/util.h> |
7 | |
8 | class QJsonObject; |
9 | class QJsonArray; |
10 | class QJsonDocument; |
11 | class QIODevice; |
12 | |
13 | namespace Quotient { |
14 | /** |
15 | * A simple wrapper that represents the request body. |
16 | * Provides a unified interface to dump an unstructured byte stream |
17 | * as well as JSON (and possibly other structures in the future) to |
18 | * a QByteArray consumed by QNetworkAccessManager request methods. |
19 | */ |
20 | class QUOTIENT_API RequestData { |
21 | public: |
22 | // NOLINTBEGIN(google-explicit-constructor): that check should learn about |
23 | // explicit(false) |
24 | QUO_IMPLICIT RequestData(const QByteArray& a = {}); |
25 | QUO_IMPLICIT RequestData(const QJsonObject& jo); |
26 | QUO_IMPLICIT RequestData(const QJsonArray& ja); |
27 | QUO_IMPLICIT RequestData(QIODevice* source); |
28 | // NOLINTEND(google-explicit-constructor) |
29 | |
30 | QIODevice* source() const { return _source.get(); } |
31 | |
32 | private: |
33 | ImplPtr<QIODevice> _source; |
34 | }; |
35 | } // namespace Quotient |
36 | |