File indexing completed on 2024-04-21 04:44:13

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 UPNPSERVICEDESCRIPTIONPARSER_H
0008 #define UPNPSERVICEDESCRIPTIONPARSER_H
0009 
0010 #include <QObject>
0011 #include <QSharedPointer>
0012 #include <QString>
0013 #include <QUrl>
0014 
0015 #include <memory>
0016 
0017 class QNetworkReply;
0018 class QIODevice;
0019 class QNetworkAccessManager;
0020 
0021 class UpnpServiceDescription;
0022 
0023 class UpnpServiceDescriptionParserPrivate;
0024 
0025 /**
0026  * @brief The UpnpServiceDescriptionParser class is a parser for UPnP service descriptions
0027  */
0028 
0029 class UpnpServiceDescriptionParser : public QObject
0030 {
0031     Q_OBJECT
0032 
0033 public:
0034     explicit UpnpServiceDescriptionParser(QNetworkAccessManager *aNetworkAccess, UpnpServiceDescription &serviceDescription, QObject *parent = nullptr);
0035 
0036     ~UpnpServiceDescriptionParser() override;
0037 
0038 Q_SIGNALS:
0039 
0040     void descriptionParsed(const QString &upnpServiceId);
0041 
0042     void ServiceDescriptionInError(const QString &upnpServiceId);
0043 
0044 public Q_SLOTS:
0045 
0046     void finishedDownload(QNetworkReply *reply);
0047 
0048     void downloadServiceDescription(const QUrl &serviceUrl);
0049 
0050 private:
0051     void parseServiceDescription(QIODevice *serviceDescriptionContent);
0052 
0053     std::unique_ptr<UpnpServiceDescriptionParserPrivate> d;
0054 };
0055 
0056 #endif // UPNPSERVICEDESCRIPTIONPARSER_H