v2.0.0
Loading...
Searching...
No Matches
mna_file_ref.cpp
Go to the documentation of this file.
1//=============================================================================================================
34
35//=============================================================================================================
36// INCLUDES
37//=============================================================================================================
38
39#include "mna_file_ref.h"
40
41#include <QJsonValue>
42#include <QCborValue>
43#include <QCborArray>
44
45//=============================================================================================================
46// USED NAMESPACES
47//=============================================================================================================
48
49using namespace MNALIB;
50
51//=============================================================================================================
52// DEFINE METHODS
53//=============================================================================================================
54
55QJsonObject MnaFileRef::toJson() const
56{
57 QJsonObject json = extras;
58 json[QLatin1String("role")] = mnaFileRoleToString(role);
59 json[QLatin1String("path")] = path;
60 json[QLatin1String("sha256")] = sha256;
61 json[QLatin1String("format")] = format;
62 json[QLatin1String("size_bytes")] = sizeBytes;
63 json[QLatin1String("embedded")] = embedded;
64 if(embedded && !data.isEmpty()) {
65 json[QLatin1String("data")] = QString::fromLatin1(data.toBase64());
66 }
67 return json;
68}
69
70//=============================================================================================================
71
72MnaFileRef MnaFileRef::fromJson(const QJsonObject& json)
73{
74 MnaFileRef ref;
75 ref.role = mnaFileRoleFromString(json[QLatin1String("role")].toString());
76 ref.path = json[QLatin1String("path")].toString();
77 ref.sha256 = json[QLatin1String("sha256")].toString();
78 ref.format = json[QLatin1String("format")].toString();
79 ref.sizeBytes = static_cast<qint64>(json[QLatin1String("size_bytes")].toDouble());
80 ref.embedded = json[QLatin1String("embedded")].toBool();
81 if(ref.embedded) {
82 ref.data = QByteArray::fromBase64(json[QLatin1String("data")].toString().toLatin1());
83 }
84
85 static const QSet<QString> knownKeys = {
86 QStringLiteral("role"), QStringLiteral("path"),
87 QStringLiteral("sha256"), QStringLiteral("format"),
88 QStringLiteral("size_bytes"), QStringLiteral("embedded"),
89 QStringLiteral("data")
90 };
91 for (auto it = json.constBegin(); it != json.constEnd(); ++it) {
92 if (!knownKeys.contains(it.key()))
93 ref.extras.insert(it.key(), it.value());
94 }
95
96 return ref;
97}
98
99//=============================================================================================================
100
101QCborMap MnaFileRef::toCbor() const
102{
103 QCborMap cbor = QCborMap::fromJsonObject(extras);
104 cbor[QLatin1String("role")] = mnaFileRoleToString(role);
105 cbor[QLatin1String("path")] = path;
106 cbor[QLatin1String("sha256")] = sha256;
107 cbor[QLatin1String("format")] = format;
108 cbor[QLatin1String("size_bytes")] = sizeBytes;
109 cbor[QLatin1String("embedded")] = embedded;
110 if(embedded && !data.isEmpty()) {
111 cbor[QLatin1String("data")] = QCborValue(data);
112 }
113 return cbor;
114}
115
116//=============================================================================================================
117
118MnaFileRef MnaFileRef::fromCbor(const QCborMap& cbor)
119{
120 MnaFileRef ref;
121 ref.role = mnaFileRoleFromString(cbor[QLatin1String("role")].toString());
122 ref.path = cbor[QLatin1String("path")].toString();
123 ref.sha256 = cbor[QLatin1String("sha256")].toString();
124 ref.format = cbor[QLatin1String("format")].toString();
125 ref.sizeBytes = cbor[QLatin1String("size_bytes")].toInteger();
126 ref.embedded = cbor[QLatin1String("embedded")].toBool();
127 if(ref.embedded) {
128 ref.data = cbor[QLatin1String("data")].toByteArray();
129 }
130
131 static const QSet<QString> knownKeys = {
132 QStringLiteral("role"), QStringLiteral("path"),
133 QStringLiteral("sha256"), QStringLiteral("format"),
134 QStringLiteral("size_bytes"), QStringLiteral("embedded"),
135 QStringLiteral("data")
136 };
137 QJsonObject cborJson = cbor.toJsonObject();
138 for (auto it = cborJson.constBegin(); it != cborJson.constEnd(); ++it) {
139 if (!knownKeys.contains(it.key()))
140 ref.extras.insert(it.key(), it.value());
141 }
142
143 return ref;
144}
MnaFileRef class declaration.
MNE Analysis Container Format (mna/mnx).
MnaFileRole mnaFileRoleFromString(const QString &str)
Definition mna_types.h:163
QString mnaFileRoleToString(MnaFileRole role)
Definition mna_types.h:137
static MnaFileRef fromJson(const QJsonObject &json)
QCborMap toCbor() const
QJsonObject toJson() const
static MnaFileRef fromCbor(const QCborMap &cbor)
QJsonObject extras