Files
2023-06-01 07:29:34 +02:00

136 lines
2.8 KiB
C++

#include "cexportinventree.h"
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QByteArray>
#include <QNetworkAccessManager>
#include <QUrl>
#include <QUrlQuery>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QEventLoop>
#include <QSettings>
#include <QDebug>
QString cExportInventree::pluginName()
{
return(PLUGIN_NAME);
}
qint16 cExportInventree::pluginVersion()
{
return(PLUGIN_VERSION);
}
void cExportInventree::test()
{
// QString userName;
// QString firstName;
// QString lastName;
// QString email;
// getUser(userName, firstName, lastName, email);
getPart();
}
bool cExportInventree::getUser(QString& userName, QString& firstName, QString& lastName, QString& email)
{
QString reply = request("/user/me/");
QJsonDocument jsonResponse = QJsonDocument::fromJson(reply.toUtf8());
QJsonObject jsonObj = jsonResponse.object();
userName = jsonObj["username"].toString();
firstName = jsonObj["first_name"].toString();
lastName = jsonObj["last_name"].toString();
email = jsonObj["email"].toString();
return(true);
}
bool cExportInventree::getPart()
{
QJsonObject obj;
obj["limit"] = 100;
QJsonDocument doc(obj);
QHash<QString, QString> data;
// data.insert("limit", "100");
data.insert("search", "0k");
QString reply = request("/part/.*", data);
QJsonDocument jsonResponse = QJsonDocument::fromJson(reply.toUtf8());
QJsonArray jsonArray = jsonResponse.array();
for(int z = 0;z < jsonArray.count();z++)
{
QJsonObject jsonObj = jsonArray[z].toObject();
QString name = jsonObj["name"].toString();
qDebug() << name;
}
return(true);
}
QString cExportInventree::request(const QString& request, const QHash<QString, QString>& data)
{
QSettings settings;
QString requestUrl = QString(settings.value("plugins/exportInventree/url", "").toString()) + request;
QNetworkAccessManager* networkAccessManager = new QNetworkAccessManager(this);
QUrl url(requestUrl);
if(!data.isEmpty())
{
QUrlQuery query;
for(auto i = data.begin(), end = data.end(); i != end; ++i)
{
query.addQueryItem(i.key(), i.value());
}
url.setQuery(query);
}
QNetworkRequest networkRequest(url);
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
networkRequest.setRawHeader("Authorization", QString(QString("Token ") + QString(settings.value("plugins/exportInventree/token", "").toString())).toLocal8Bit());
QNetworkReply* reply = networkAccessManager->get(networkRequest);
QEventLoop loop;
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
QString strReply;
if(reply->error() == QNetworkReply::NoError)
{
strReply = (QString)reply->readAll();
delete reply;
}
else
{
qDebug() << reply->errorString();
delete reply;
}
delete networkAccessManager;
return(strReply);
}