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