/** * Lightweight REST Client Framework * $Id$ * $HeadURL$ * $Author$ * Created by Hannes Fritsche, ESZS, 2026-08-21 */ // Short documentation on how to use it can be found at https://confluence-classified.rh-int.de/spaces/LEG/pages/207915647/HOWTO+LtsRestClient #pragma once #include #include #include #include #include class QNetworkAccessManager; namespace LtsCommon { class LTSRESTCLIENT_EXPORT LtsRestClient : public QObject { Q_OBJECT public: explicit LtsRestClient(const QString &baseUrl, QObject *parent = nullptr); // type aliases using PingSuccessCallback = std::function; using SuccessCallback = std::function; using ErrorCallback = std::function; // HTTP Header Ping to m_baseUrl to check server availability void ping(PingSuccessCallback onSuccess, ErrorCallback onError = nullptr, int timeoutMs = 3000); // HTTP Methods void get(const QString &endpoint, SuccessCallback onSuccess, ErrorCallback onError = nullptr); void post(const QString &endpoint, const QJsonDocument &json, SuccessCallback onSuccess, ErrorCallback onError = nullptr); void put(const QString &endpoint, const QJsonDocument &json, SuccessCallback onSuccess, ErrorCallback onError = nullptr); void del(const QString &endpoint, SuccessCallback onSuccess, ErrorCallback onError = nullptr); private: void sendRequest(const QString &method, const QString &endpoint, const QByteArray &data, SuccessCallback onSuccess, ErrorCallback onError); QString m_baseUrl; QNetworkAccessManager *m_manager; }; // class RestClient } // namespace LtsCommon