summaryrefslogtreecommitdiffstats
path: root/sinksh/sinksh_utils.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-29 13:43:40 +0100
committerChristian Mollekopf <chrigi_1@fastmail.fm>2018-01-29 13:43:40 +0100
commitc9f928ea2ea10220d40cddf9d7fc8009a22cf02a (patch)
tree3dbf5b0396e27bba6af82080bc0bc82539d2977b /sinksh/sinksh_utils.cpp
parenta79a4d2f12cb239bbc30aa23af02db0deb529bc3 (diff)
downloadsink-c9f928ea2ea10220d40cddf9d7fc8009a22cf02a.tar.gz
sink-c9f928ea2ea10220d40cddf9d7fc8009a22cf02a.zip
Support UUID's without curly braces
Diffstat (limited to 'sinksh/sinksh_utils.cpp')
-rw-r--r--sinksh/sinksh_utils.cpp19
1 files changed, 14 insertions, 5 deletions
diff --git a/sinksh/sinksh_utils.cpp b/sinksh/sinksh_utils.cpp
index c542670..e2cd977 100644
--- a/sinksh/sinksh_utils.cpp
+++ b/sinksh/sinksh_utils.cpp
@@ -164,7 +164,7 @@ bool applyFilter(Sink::Query &query, const QStringList &args_)
164 if (resource.contains('/')) { 164 if (resource.contains('/')) {
165 //The resource isn't an id but a path 165 //The resource isn't an id but a path
166 auto list = resource.split('/'); 166 auto list = resource.split('/');
167 const auto resourceId = list.takeFirst(); 167 const auto resourceId = parseUid(list.takeFirst());
168 query.resourceFilter(resourceId); 168 query.resourceFilter(resourceId);
169 if (type == Sink::ApplicationDomain::getTypeName<Sink::ApplicationDomain::Mail>() && !list.isEmpty()) { 169 if (type == Sink::ApplicationDomain::getTypeName<Sink::ApplicationDomain::Mail>() && !list.isEmpty()) {
170 auto value = list.takeFirst(); 170 auto value = list.takeFirst();
@@ -188,7 +188,7 @@ bool applyFilter(Sink::Query &query, const QStringList &args_)
188 } 188 }
189 } 189 }
190 } else { 190 } else {
191 query.resourceFilter(resource); 191 query.resourceFilter(parseUid(resource));
192 } 192 }
193 } 193 }
194 return true; 194 return true;
@@ -199,22 +199,31 @@ bool applyFilter(Sink::Query &query, const SyntaxTree::Options &options)
199 bool ret = applyFilter(query, options.positionalArguments); 199 bool ret = applyFilter(query, options.positionalArguments);
200 if (options.options.contains("resource")) { 200 if (options.options.contains("resource")) {
201 for (const auto &f : options.options.value("resource")) { 201 for (const auto &f : options.options.value("resource")) {
202 query.resourceFilter(f.toLatin1()); 202 query.resourceFilter(parseUid(f.toLatin1()));
203 } 203 }
204 } 204 }
205 if (options.options.contains("filter")) { 205 if (options.options.contains("filter")) {
206 for (const auto &f : options.options.value("filter")) { 206 for (const auto &f : options.options.value("filter")) {
207 auto filter = f.split("="); 207 auto filter = f.split("=");
208 const auto property = filter.value(0).toLatin1(); 208 const auto property = filter.value(0).toLatin1();
209 query.filter(property, Sink::PropertyParser::parse(query.type(), property, filter.value(1))); 209 const auto value = filter.value(1);
210 query.filter(property, Sink::PropertyParser::parse(query.type(), property, QString::fromUtf8(parseUid(value.toUtf8()))));
210 } 211 }
211 } 212 }
212 if (options.options.contains("id")) { 213 if (options.options.contains("id")) {
213 for (const auto &f : options.options.value("id")) { 214 for (const auto &f : options.options.value("id")) {
214 query.filter(f.toUtf8()); 215 query.filter(parseUid(f.toUtf8()));
215 } 216 }
216 } 217 }
217 return ret; 218 return ret;
218} 219}
219 220
221QByteArray parseUid(const QByteArray &uid)
222{
223 if (uid.size() == 36 && uid.contains('-') && !uid.startsWith('{')) {
224 return '{' + uid + '}';
225 }
226 return uid;
227}
228
220} 229}