Skip to content

Commit

Permalink
Fix encoding with external formatters
Browse files Browse the repository at this point in the history
  • Loading branch information
uglide committed Jun 15, 2022
1 parent 2797c60 commit 1092fb7
Show file tree
Hide file tree
Showing 5 changed files with 19 additions and 20 deletions.
2 changes: 1 addition & 1 deletion src/app/app.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ void Application::initModels() {

#ifdef ENABLE_EXTERNAL_FORMATTERS
m_extServerManager =
QSharedPointer<RespExtServer::DataFormattersManager>(new RespExtServer::DataFormattersManager());
QSharedPointer<RespExtServer::DataFormattersManager>(new RespExtServer::DataFormattersManager(m_engine));

connect(m_extServerManager.data(), &RespExtServer::DataFormattersManager::error, this,
[this](const QString& msg) {
Expand Down
21 changes: 13 additions & 8 deletions src/modules/extension-server/dataformattermanager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
#include "app/models/configmanager.h"
#include "client/OAIDefaultApi.h"

RespExtServer::DataFormattersManager::DataFormattersManager()
: m_api(new RespExtServer::OAIDefaultApi()) {
RespExtServer::DataFormattersManager::DataFormattersManager(QQmlApplicationEngine &engine)
: m_engine(engine), m_api(new RespExtServer::OAIDefaultApi()) {
QSettings settings;

int requestTimeout =
Expand Down Expand Up @@ -150,14 +150,19 @@ void RespExtServer::DataFormattersManager::encode(const QString &formatterId,
}

m_context = FormatterContext{jsCallback, formatterId};
auto requestContext = context.toMap();

OAIDecodePayload payload;
OAIEncodePayload payload;
payload.setData(data.toBase64());
payload.setRedisKeyName(requestContext["redis-key-name"].toByteArray());
payload.setRedisKeyType(requestContext["redis-key-type"].toString());

m_api->dataFormattersIdDecodePost(formatterId, payload);
auto requestContext = QJsonDocument::fromVariant(context);

if (requestContext.isObject()) {
OAIObject metadata;
metadata.fromJsonObject(requestContext.object());
payload.setMetadata(metadata);
}

m_api->dataFormattersIdEncodePost(formatterId, payload);
}

QVariantList RespExtServer::DataFormattersManager::getPlainList() {
Expand Down Expand Up @@ -232,7 +237,7 @@ void RespExtServer::DataFormattersManager::onEncoded(
OAIHttpRequestWorker *worker, QString) {
if (!worker || !m_context.isValid()) return;

auto encoded = QString::fromUtf8(worker->response);
auto encoded = m_engine.toScriptValue(worker->response);

m_context.jsCallback.call(QJSValueList{QString(), encoded});
}
Expand Down
4 changes: 3 additions & 1 deletion src/modules/extension-server/dataformattermanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <QJSValue>
#include <QNetworkReply>
#include <QSharedPointer>
#include <QQmlApplicationEngine>

namespace RespExtServer {
class OAIDefaultApi;
Expand All @@ -17,7 +18,7 @@ class DataFormattersManager : public QAbstractListModel {
enum Roles { name = Qt::UserRole + 1, id, keyTypes, magicHeader, readOnly };

public:
DataFormattersManager();
DataFormattersManager(QQmlApplicationEngine& engine);

int rowCount(const QModelIndex& parent = QModelIndex()) const override;

Expand Down Expand Up @@ -77,6 +78,7 @@ class DataFormattersManager : public QAbstractListModel {
};

private:
QQmlApplicationEngine& m_engine;
QList<OAIDataFormatter> m_formattersData;
QHash<QString, int> m_mapping;
QString m_extServerUrl;
Expand Down
9 changes: 2 additions & 7 deletions src/qml/value-editor/editors/MultilineEditor.qml
Original file line number Diff line number Diff line change
Expand Up @@ -84,13 +84,8 @@ Item
function process(formattedValue) {
var formatter = valueFormattersModel.get(formatterSelector.currentIndex)

formatter.getRaw(formattedValue, function (error, raw) {
var compressed;
if (formatter.type === "external") {
compressed = compress(qmlUtils.b64toByteArray(raw))
} else {
compressed = compress(raw)
}
formatter.getRaw(formattedValue, function (error, raw) {
var compressed = compress(raw);
return callback(error, compressed)
}, __getFormattingContext())
}
Expand Down
3 changes: 0 additions & 3 deletions src/qml/value-editor/editors/formatters/ValueFormatters.qml
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,6 @@ ListModel {
var formatterName = formatter["name"];
var formatterId = formatter["id"];
var readOnly = formatter["readOnly"];
var keyTypes = formatter["keyTypes"];
var magicHeader = formatter["magicHeader"];

var getFormatted = function (formatterId) {
var r = function (raw, callback, context) {
Expand Down Expand Up @@ -147,7 +145,6 @@ ListModel {
rootModel.setProperty(rootModel.count - 1, "getRaw", getRaw(formatterId))
rootModel.setProperty(rootModel.count - 1, "isValid", isValid(formatterId))
rootModel.setProperty(rootModel.count - 1, "readOnly", readOnly)
rootModel.setProperty(rootModel.count - 1, "keyTypes", keyTypes)
}
}

Expand Down

0 comments on commit 1092fb7

Please sign in to comment.