File indexing completed on 2024-05-12 05:48:39

0001 /*
0002     SPDX-FileCopyrightText: 2007 Nicolas Ternisien <nicolas.ternisien@gmail.com>
0003     SPDX-FileCopyrightText: 2015 Vyacheslav Matyushin
0004 
0005     SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007 
0008 #pragma once
0009 
0010 #include "journaldAnalyzer.h"
0011 #include "journaldTypes.h"
0012 
0013 using namespace JournaldTypes;
0014 
0015 #include <QNetworkAccessManager>
0016 #include <QNetworkReply>
0017 
0018 class JournaldNetworkAnalyzer : public JournaldAnalyzer
0019 {
0020     Q_OBJECT
0021 
0022 public:
0023     explicit JournaldNetworkAnalyzer(LogMode *mode, const JournaldAnalyzerOptions &options);
0024 
0025     void watchLogFiles(bool enabled) override;
0026 
0027     QStringList units() const override;
0028 
0029     QStringList syslogIdentifiers() const override;
0030 
0031 private Q_SLOTS:
0032     void httpFinished();
0033     void httpReadyRead();
0034     void httpError(QNetworkReply::NetworkError code);
0035     void sslErrors(QNetworkReply *reply, const QList<QSslError> &errors);
0036 
0037 private:
0038     enum class RequestType { SyslogIds, Units, EntriesFull, EntriesUpdate };
0039 
0040     void parseEntries(QByteArray &data, ReadingMode readingMode);
0041     void sendRequest(RequestType requestType);
0042 
0043     void updateStatus(const QString &status);
0044 
0045     RequestType mCurrentRequest;
0046     QString mBaseUrl;
0047     QString mEntriesUrlFull;
0048     QString mEntriesUrlUpdating;
0049     QString mSyslogIdUrl;
0050     QString mSystemdUnitsUrl;
0051 
0052     QStringList mSyslogIdentifiers;
0053     QStringList mSystemdUnits;
0054 
0055     QNetworkAccessManager mNetworkManager;
0056     QNetworkReply *mReply = nullptr;
0057     QString mCursor;
0058     JournalAddress mAddress;
0059     QString mFilterName;
0060 };