File indexing completed on 2024-05-12 05:22:15

0001 /*
0002  * This file is part of LibKGAPI library
0003  *
0004  * SPDX-FileCopyrightText: 2013 Daniel Vrátil <dvratil@redhat.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #pragma once
0010 
0011 #include "job.h"
0012 
0013 #include <QNetworkReply>
0014 #include <QQueue>
0015 #include <QScopedPointer>
0016 #include <QTimer>
0017 
0018 class QFile;
0019 
0020 namespace KGAPI2
0021 {
0022 
0023 struct Request {
0024     QNetworkRequest request;
0025     QByteArray rawData;
0026     QString contentType;
0027 };
0028 
0029 class Q_DECL_HIDDEN FileLogger
0030 {
0031 public:
0032     ~FileLogger();
0033 
0034     static FileLogger *self();
0035 
0036     void logRequest(const QNetworkRequest &request, const QByteArray &rawData);
0037     void logReply(const QNetworkReply *reply, const QByteArray &rawData);
0038 
0039 private:
0040     FileLogger();
0041     QScopedPointer<QFile> mFile;
0042 
0043     static FileLogger *sInstance;
0044 };
0045 
0046 class Q_DECL_HIDDEN Job::Private
0047 {
0048 public:
0049     Private(Job *parent);
0050     void init();
0051 
0052     QString parseErrorMessage(const QByteArray &json);
0053 
0054     void _k_doStart();
0055     void _k_doEmitFinished();
0056     void _k_replyReceived(QNetworkReply *reply);
0057     void _k_dispatchTimeout();
0058 
0059     bool isRunning;
0060 
0061     Error error;
0062     QString errorString;
0063 
0064     AccountPtr account;
0065     QNetworkAccessManager *accessManager;
0066     QQueue<Request> requestQueue;
0067     QTimer *dispatchTimer;
0068     int maxTimeout;
0069     bool prettyPrint;
0070     QStringList fields;
0071 
0072     Request currentRequest;
0073 
0074 private:
0075     Job *const q;
0076 };
0077 
0078 }