File indexing completed on 2025-02-02 04:11:29

0001 /*
0002  * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best>
0003  *
0004  * SPDX-License-Identifier: GPL-3.0-or-later
0005  */
0006 
0007 #pragma once
0008 
0009 #include <QObject>
0010 #include <QJsonDocument>
0011 #include <QJsonObject>
0012 #include <QNetworkAccessManager>
0013 #include <QNetworkRequest>
0014 #include <QNetworkReply>
0015 
0016 namespace glaxnimate::gui {
0017 
0018 class GraphQl: public QObject
0019 {
0020     Q_OBJECT
0021 public:
0022     explicit GraphQl(const QUrl& url)
0023         : url(url)
0024     {
0025     }
0026 
0027     explicit GraphQl(const QString& url)
0028         : GraphQl(QUrl(url))
0029     {
0030     }
0031 
0032     void query(const QString& query, const QJsonObject& vars);
0033 
0034     QNetworkAccessManager& http() { return http_; }
0035 
0036 Q_SIGNALS:
0037     void query_started();
0038     void query_progress(qint64 bytes, qint64 total);
0039     void query_finished(QNetworkReply* reply);
0040 
0041 private:
0042     QUrl url{"https://graphql.lottiefiles.com/"};
0043     QNetworkAccessManager http_;
0044 };
0045 
0046 } // namespace glaxnimate::gui