1// SPDX-FileCopyrightText: 2018 Kitsune Ral <kitsune-ral@users.sf.net>
2// SPDX-License-Identifier: LGPL-2.1-or-later
3
4#include "requestdata.h"
5
6#include <QtCore/QIODevice>
7#include <QtCore/QBuffer>
8#include <QtCore/QByteArray>
9#include <QtCore/QJsonArray>
10#include <QtCore/QJsonDocument>
11#include <QtCore/QJsonObject>
12
13using namespace Quotient;
14
15auto fromData(const QByteArray& data)
16{
17 auto source = makeImpl<QBuffer, QIODevice>();
18 source->setData(data);
19 source->open(openMode: QIODevice::ReadOnly);
20 return source;
21}
22
23template <typename JsonDataT>
24inline auto fromJson(const JsonDataT& jdata)
25{
26 return fromData(data: QJsonDocument(jdata).toJson(format: QJsonDocument::Compact));
27}
28
29RequestData::RequestData(const QByteArray& a) : _source(fromData(data: a)) {}
30
31RequestData::RequestData(const QJsonObject& jo) : _source(fromJson(jdata: jo)) {}
32
33RequestData::RequestData(const QJsonArray& ja) : _source(fromJson(jdata: ja)) {}
34
35RequestData::RequestData(QIODevice* source)
36 : _source(acquireImpl(from: source))
37{}
38