#include "cexportinventree.h" #include #include #include #include #include #include #include #include #include #include #include #include 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 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& 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); }