Skip to content
Snippets Groups Projects
Commit 1f2401bc authored by Xavier Jouslin de Noray's avatar Xavier Jouslin de Noray Committed by Sébastien Blin
Browse files

PluginDescription: handle language to send request to the plugin store

Change-Id: Id96578cf238246ebe69a6f9b77b0ed1d1f465f38
parent 06b0f1d3
No related branches found
No related tags found
No related merge requests found
......@@ -59,7 +59,28 @@ void
NetworkManager::sendGetRequest(const QUrl& url,
std::function<void(const QByteArray&)>&& onDoneCallback)
{
auto* const reply = manager_->get(QNetworkRequest(url));
QNetworkRequest request = QNetworkRequest(url);
sendGetRequest(request, std::move(onDoneCallback));
}
void
NetworkManager::sendGetRequest(const QUrl& url,
const QMap<QString, QByteArray>& header,
std::function<void(const QByteArray&)>&& onDoneCallback)
{
QNetworkRequest request = QNetworkRequest(url);
for (auto it = header.begin(); it != header.end(); ++it) {
request.setRawHeader(QByteArray(it.key().toStdString().c_str(), it.key().size()),
it.value());
}
sendGetRequest(request, std::move(onDoneCallback));
}
void
NetworkManager::sendGetRequest(const QNetworkRequest& request,
std::function<void(const QByteArray&)>&& onDoneCallback)
{
auto* const reply = manager_->get(request);
QObject::connect(reply, &QNetworkReply::finished, this, [reply, onDoneCallback, this]() {
if (reply->error() == QNetworkReply::NoError) {
onDoneCallback(reply->readAll());
......
......@@ -39,7 +39,11 @@ public:
Q_ENUM(GetError)
void sendGetRequest(const QUrl& url, std::function<void(const QByteArray&)>&& onDoneCallback);
void sendGetRequest(const QUrl& url,
const QMap<QString, QByteArray>& header,
std::function<void(const QByteArray&)>&& onDoneCallback);
void sendGetRequest(const QNetworkRequest& request,
std::function<void(const QByteArray&)>&& onDoneCallback);
int downloadFile(const QUrl& url,
int replyId,
std::function<void(bool, const QString&)>&& onDoneCallback,
......
......@@ -23,21 +23,27 @@
#include "pluginstorelistmodel.h"
#include "networkmanager.h"
#include "lrcinstance.h"
#include "appsettingsmanager.h"
#include "utilsadapter.h"
#include "qmlregister.h"
#include <QJsonArray>
#include <QJsonDocument>
#include <QtNetwork>
#include <QJsonObject>
#include <QDir>
#include <QString>
PluginAdapter::PluginAdapter(LRCInstance* instance, QObject* parent, QString baseUrl)
PluginAdapter::PluginAdapter(LRCInstance* instance,
AppSettingsManager* settingsManager,
QObject* parent,
QString baseUrl)
: QmlAdapterBase(instance, parent)
, pluginStoreListModel_(new PluginStoreListModel(instance, this))
, pluginVersionManager_(new PluginVersionManager(instance, baseUrl, this))
, pluginListModel_(new PluginListModel(instance, this))
, lrcInstance_(instance)
, settingsManager_(settingsManager)
, tempPath_(QDir::tempPath())
, baseUrl_(baseUrl)
......@@ -89,9 +95,13 @@ PluginAdapter::getPluginsFromStore()
[this](NetworkManager::GetError error, const QString& msg) {
Q_EMIT storeNotAvailable();
});
QMap<QString, QByteArray> header;
const auto& language = settingsManager_->getLanguage();
header["Accept-Language"] = QByteArray(language.toStdString().c_str(), language.size());
pluginVersionManager_
->sendGetRequest(QUrl(baseUrl_
+ "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
header,
[this, errorHandler](const QByteArray& data) {
auto result = QJsonDocument::fromJson(data).array();
auto pluginsInstalled = lrcInstance_->pluginModel().getPluginsId();
......@@ -113,9 +123,13 @@ PluginAdapter::getPluginsFromStore()
void
PluginAdapter::getPluginDetails(const QString& pluginId)
{
QMap<QString, QByteArray> header;
const auto& language = settingsManager_->getLanguage();
header["Accept-Language"] = QByteArray(language.toStdString().c_str(), language.size());
pluginVersionManager_
->sendGetRequest(QUrl(baseUrl_ + "/details/" + pluginId
+ "?arch=" + lrcInstance_->pluginModel().getPlatformInfo()["os"]),
header,
[this](const QByteArray& data) {
auto result = QJsonDocument::fromJson(data).object();
// my response is a json object and I want to convert
......
......@@ -32,6 +32,7 @@
class PluginVersionManager;
class PluginStoreListModel;
class AppSettingsManager;
class PluginAdapter final : public QmlAdapterBase
{
......@@ -41,6 +42,7 @@ class PluginAdapter final : public QmlAdapterBase
public:
explicit PluginAdapter(LRCInstance* instance,
AppSettingsManager* settingsManager,
QObject* parent = nullptr,
QString baseUrl = "https://plugins.jami.net");
~PluginAdapter() = default;
......@@ -79,4 +81,5 @@ private:
std::mutex mtx_;
QString tempPath_;
QString baseUrl_;
AppSettingsManager* settingsManager_;
};
......@@ -123,7 +123,7 @@ registerTypes(QQmlEngine* engine,
auto contactAdapter = new ContactAdapter(lrcInstance, parent);
auto accountAdapter = new AccountAdapter(settingsManager, systemTray, lrcInstance, parent);
auto utilsAdapter = new UtilsAdapter(settingsManager, systemTray, lrcInstance, parent);
auto pluginAdapter = new PluginAdapter(lrcInstance, parent);
auto pluginAdapter = new PluginAdapter(lrcInstance, settingsManager, parent);
auto currentCall = new CurrentCall(lrcInstance, parent);
auto currentConversation = new CurrentConversation(lrcInstance, parent);
auto currentAccount = new CurrentAccount(lrcInstance, settingsManager, parent);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment