Skip to content

Commit

Permalink
Port "Redo Zcash uri parsing to use QUrlQuery"
Browse files Browse the repository at this point in the history
  • Loading branch information
rex4539 committed Nov 27, 2019
1 parent 9e697cf commit 8b6144a
Showing 1 changed file with 17 additions and 21 deletions.
38 changes: 17 additions & 21 deletions src/settings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -251,27 +251,23 @@ PaymentURI Settings::parseURI(QString uri) {
ans.error = "Could not understand address";
return ans;
}
uri = uri.right(uri.length() - ans.addr.length());

if (!uri.isEmpty()) {
uri = uri.right(uri.length() - 1); // Eat the "?"

QStringList args = uri.split("&");
for (QString arg: args) {
QStringList kv = arg.split("=");
if (kv.length() != 2) {
ans.error = "No value argument was seen";
return ans;
}

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.
}
}
uri = uri.right(uri.length() - ans.addr.length()-1); // swallow '?'
QUrlQuery query(uri);

// parse out amt / amount
if (query.hasQueryItem("amt")) {
ans.amt = query.queryItemValue("amt");
} else if (query.hasQueryItem("amount")) {
ans.amt = query.queryItemValue("amount");
}

// parse out memo / msg / message
if (query.hasQueryItem("memo")) {
ans.memo = query.queryItemValue("memo");
} else if (query.hasQueryItem("msg")) {
ans.memo = query.queryItemValue("msg");
} else if (query.hasQueryItem("message")) {
ans.memo = query.queryItemValue("message");
}

return ans;
Expand Down

0 comments on commit 8b6144a

Please sign in to comment.