Redo Zcash uri parsing to use QUrlQuery (ZcashFoundation#204)
This commit is contained in:
@@ -292,27 +292,23 @@ PaymentURI Settings::parseURI(QString uri) {
|
|||||||
ans.error = "Could not understand address";
|
ans.error = "Could not understand address";
|
||||||
return ans;
|
return ans;
|
||||||
}
|
}
|
||||||
uri = uri.right(uri.length() - ans.addr.length());
|
uri = uri.right(uri.length() - ans.addr.length()-1); // swallow '?'
|
||||||
|
QUrlQuery query(uri);
|
||||||
|
|
||||||
if (!uri.isEmpty()) {
|
// parse out amt / amount
|
||||||
uri = uri.right(uri.length() - 1); // Eat the "?"
|
if (query.hasQueryItem("amt")) {
|
||||||
|
ans.amt = query.queryItemValue("amt");
|
||||||
|
} else if (query.hasQueryItem("amount")) {
|
||||||
|
ans.amt = query.queryItemValue("amount");
|
||||||
|
}
|
||||||
|
|
||||||
QStringList args = uri.split("&");
|
// parse out memo / msg / message
|
||||||
for (QString arg: args) {
|
if (query.hasQueryItem("memo")) {
|
||||||
QStringList kv = arg.split("=");
|
ans.memo = query.queryItemValue("memo");
|
||||||
if (kv.length() != 2) {
|
} else if (query.hasQueryItem("msg")) {
|
||||||
ans.error = "No value argument was seen";
|
ans.memo = query.queryItemValue("msg");
|
||||||
return ans;
|
} else if (query.hasQueryItem("message")) {
|
||||||
}
|
ans.memo = query.queryItemValue("message");
|
||||||
|
|
||||||
if (kv[0].toLower() == "amt" || kv[0].toLower() == "amount") {
|
|
||||||
ans.amt = kv[1];
|
|
||||||
} else if (kv[0].toLower() == "memo" || kv[0].toLower() == "message" || kv[0].toLower() == "msg") {
|
|
||||||
ans.memo = QUrl::fromPercentEncoding(kv[1].toUtf8());
|
|
||||||
} else {
|
|
||||||
// Ignore unknown fields, since some developers use it to pass extra data.
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ans;
|
return ans;
|
||||||
|
|||||||
Reference in New Issue
Block a user