diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-01-29 13:43:40 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2018-01-29 13:43:40 +0100 |
commit | c9f928ea2ea10220d40cddf9d7fc8009a22cf02a (patch) | |
tree | 3dbf5b0396e27bba6af82080bc0bc82539d2977b /sinksh/sinksh_utils.cpp | |
parent | a79a4d2f12cb239bbc30aa23af02db0deb529bc3 (diff) | |
download | sink-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.cpp | 19 |
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 | ||
221 | QByteArray 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 | } |