KFileMetaData
8 #include "externalwriter.h"
10 #include "propertyinfo.h"
11 #include "kfilemetadata_debug.h"
15 #include <QJsonDocument>
16 #include <QJsonObject>
19 #define WRITER_TIMEOUT_MS 30000
21 using namespace KFileMetaData;
23 class KFileMetaData::ExternalWriterPrivate
32 ExternalWriter::ExternalWriter(
QObject* parent)
33 : WriterPlugin(parent),
34 d_ptr(new ExternalWriterPrivate)
38 ExternalWriter::ExternalWriter(
const QString& pluginPath)
39 : WriterPlugin(nullptr),
40 d_ptr(new ExternalWriterPrivate)
45 QDir pluginDir(pluginPath);
46 QStringList pluginDirContents = pluginDir.entryList();
48 if (!pluginDirContents.
contains(QStringLiteral(
"manifest.json"))) {
49 qCDebug(KFILEMETADATA_LOG) <<
"Path does not seem to contain a valid plugin";
53 QFile manifest(pluginDir.filePath(QStringLiteral(
"manifest.json")));
57 qCDebug(KFILEMETADATA_LOG) <<
"Manifest does not seem to be a valid JSON Object";
64 for (
const QJsonValue &mimetype : mimetypesArray) {
68 d->writeMimetypes.append(mimetypes);
69 d->mainPath = pluginDir.absoluteFilePath(
rootObject[QStringLiteral(
"main")].
toString());
72 ExternalWriter::~ExternalWriter() =
default;
76 Q_D(
const ExternalWriter);
77 return d->writeMimetypes;
80 void ExternalWriter::write(
const WriteData& data)
97 rootObject[QStringLiteral(
"mimetype")] = data.inputMimetype();
98 rootObject[QStringLiteral(
"properties")] = propertiesObject;
110 qCDebug(KFILEMETADATA_LOG) <<
"Something went wrong while trying to write data";
111 qCDebug(KFILEMETADATA_LOG) << errorOutput;
115 output = writerProcess.
readAll();
123 if (outputRootObject[QStringLiteral(
"status")].
toString() != QStringLiteral(
"OK")) {
124 qCDebug(KFILEMETADATA_LOG) << outputRootObject[QStringLiteral(
"error")].toString();
125 qCDebug(KFILEMETADATA_LOG) << errorOutput;
void start(const QString &program, const QStringList &arguments, QIODevice::OpenMode mode)
QJsonObject object() const const
QJsonDocument fromJson(const QByteArray &json, QJsonParseError *error)
bool waitForFinished(int msecs)
bool contains(const QString &str, Qt::CaseSensitivity cs) const const
KIOCORE_EXPORT MimetypeJob * mimetype(const QUrl &url, JobFlags flags=DefaultFlags)
char * toString(const T &value)
QProcess::ExitStatus exitStatus() const const
virtual QVariant rootObject()
bool isObject() const const
QByteArray readAllStandardError()
QByteArray toJson() const const
void setObject(const QJsonObject &object)
QJsonValue fromVariant(const QVariant &variant)
qint64 write(const char *data, qint64 maxSize)
This file is part of the KDE documentation.
Documentation copyright © 1996-2022 The KDE developers.
Generated on Fri May 27 2022 03:47:54 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.