File indexing completed on 2024-04-28 15:59:44

0001 /*
0002     SPDX-FileCopyrightText: 2023 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #include "mocknetworkaccessmanager.h"
0007 
0008 #include <QNetworkReply>
0009 
0010 class MockNetworkReply : public QNetworkReply
0011 {
0012     Q_OBJECT
0013 public:
0014     explicit MockNetworkReply(const QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent);
0015 
0016     qint64 bytesAvailable() const override;
0017     void abort() override;
0018 
0019 protected:
0020     qint64 readData(char *data, qint64 maxSize) override;
0021 };
0022 
0023 MockNetworkReply::MockNetworkReply(const QNetworkAccessManager::Operation op, const QNetworkRequest &request, QObject *parent)
0024     : QNetworkReply(parent)
0025 {
0026     setRequest(request);
0027     setOpenMode(QIODevice::ReadOnly);
0028     setUrl(request.url());
0029     setOperation(op);
0030     setError(NoError, QString());
0031 
0032     if (!request.sslConfiguration().isNull()) {
0033         setSslConfiguration(request.sslConfiguration());
0034     }
0035 
0036     // TODO actually provide a result
0037     setError(QNetworkReply::QNetworkReply::NetworkSessionFailedError, QLatin1String("providing replies not implemented yet"));
0038     setFinished(true);
0039     QMetaObject::invokeMethod(this, &QNetworkReply::finished, Qt::QueuedConnection);
0040 }
0041 
0042 qint64 MockNetworkReply::bytesAvailable() const
0043 {
0044     return 0;
0045 }
0046 
0047 void MockNetworkReply::abort()
0048 {
0049 }
0050 
0051 qint64 MockNetworkReply::readData([[maybe_unused]] char *data, [[maybe_unused]] qint64 maxSize)
0052 {
0053     return 0;
0054 }
0055 
0056 QNetworkReply* MockNetworkAccessManager::createRequest(QNetworkAccessManager::Operation op, const QNetworkRequest &originalReq, QIODevice *outgoingData)
0057 {
0058     Request r{op, originalReq, outgoingData ? outgoingData->readAll() : QByteArray()};
0059     requests.push_back(std::move(r));
0060     return new MockNetworkReply(op, originalReq, this);
0061 }
0062 
0063 #include "mocknetworkaccessmanager.moc"