136 lines
2.8 KiB
C++
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);
|
|
}
|