File indexing completed on 2024-04-28 04:44:21
0001 /* 0002 SPDX-FileCopyrightText: 2015 (c) Matthieu Gallien <matthieu_gallien@yahoo.fr> 0003 0004 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #ifndef UPNPDEVICEDESCRIPTIONPARSER_H 0008 #define UPNPDEVICEDESCRIPTIONPARSER_H 0009 0010 #include "upnplibqt_export.h" 0011 0012 #include <QObject> 0013 #include <QSharedPointer> 0014 #include <QString> 0015 #include <QUrl> 0016 0017 #include <memory> 0018 0019 class QNetworkReply; 0020 class QIODevice; 0021 class QNetworkAccessManager; 0022 0023 class UpnpDeviceDescription; 0024 0025 class UpnpDeviceDescriptionParserPrivate; 0026 0027 /** 0028 * @brief The UpnpDeviceDescriptionParser class is a parser for UPnP device descriptions 0029 */ 0030 class UPNPLIBQT_EXPORT UpnpDeviceDescriptionParser : public QObject 0031 { 0032 Q_OBJECT 0033 0034 public: 0035 explicit UpnpDeviceDescriptionParser(QNetworkAccessManager *aNetworkAccess, UpnpDeviceDescription &deviceDescription, QObject *parent = nullptr); 0036 0037 ~UpnpDeviceDescriptionParser() override; 0038 0039 Q_SIGNALS: 0040 0041 void descriptionParsed(const QString &UDN); 0042 0043 void deviceDescriptionInError(const QString &UDN); 0044 0045 public Q_SLOTS: 0046 0047 void finishedDownload(QNetworkReply *reply); 0048 0049 void downloadDeviceDescription(const QUrl &deviceUrl); 0050 0051 private Q_SLOTS: 0052 0053 void serviceDescriptionParsed(const QString &upnpServiceId); 0054 0055 private: 0056 void parseDeviceDescription(QIODevice *deviceDescriptionContent, const QString &fallBackURLBase); 0057 0058 std::unique_ptr<UpnpDeviceDescriptionParserPrivate> d; 0059 }; 0060 0061 #endif // UPNPDEVICEDESCRIPTIONPARSER_H