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