Quick Secure CoAP Client

 // Copyright (C) 2019 The Qt Company Ltd.
 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause

 #ifndef QMLCOAPSECURECLIENT_H
 #define QMLCOAPSECURECLIENT_H

 #include <QtCoap/qcoapnamespace.h>
 #include <QCoapSecurityConfiguration>

 #include <QtQml/qqmlregistration.h>

 class QCoapClient;

 class QmlCoapSecureClient : public QObject
 {
     Q_OBJECT
     QML_NAMED_ELEMENT(CoapSecureClient)

 public:
     QmlCoapSecureClient(QObject *parent = nullptr);
     ~QmlCoapSecureClient() override;

     Q_INVOKABLE void setSecurityMode(QtCoap::SecurityMode mode);
     Q_INVOKABLE void sendGetRequest(const QString &host, const QString &path, int port);
     Q_INVOKABLE void setSecurityConfiguration(const QString &preSharedKey, const QString &identity);
     Q_INVOKABLE void setSecurityConfiguration(const QString &localCertificatePath,
                                               const QString &caCertificatePath,
                                               const QString &privateKeyPath);
     Q_INVOKABLE void disconnect();

 Q_SIGNALS:
     void finished(const QString &result);

 private:
     QCoapClient *m_coapClient;
     QCoapSecurityConfiguration m_configuration;
     QtCoap::SecurityMode m_securityMode;
 };

 namespace QCoapForeignNamespace
 {
     Q_NAMESPACE
     QML_FOREIGN_NAMESPACE(QtCoap)
     QML_NAMED_ELEMENT(QtCoap)
 }

 #endif // QMLCOAPSECURECLIENT_H