diff options
author | Wladimir J. van der Laan <laanwj@gmail.com> | 2012-02-12 05:52:34 -0800 |
---|---|---|
committer | Wladimir J. van der Laan <laanwj@gmail.com> | 2012-02-12 05:52:34 -0800 |
commit | 15b87b2ec40bdcbc7e8173c79b829fc0f550909e (patch) | |
tree | c8e5a9f35d20d22a76b9c67dee073c0fb38bd706 /src/qt/guiutil.cpp | |
parent | d27b4576f35002a2da8703aec0f3b97208fd0dcd (diff) | |
parent | 245484679adbde8df6b0b01baa24393ea20a7aed (diff) |
Merge pull request #807 from TheBlueMatt/bip21
Add req- prefixes to comply with BIP21.
Diffstat (limited to 'src/qt/guiutil.cpp')
-rw-r--r-- | src/qt/guiutil.cpp | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 22d9cc7384..29ef554ac3 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -56,19 +56,36 @@ bool GUIUtil::parseBitcoinURL(const QUrl *url, SendCoinsRecipient *out) SendCoinsRecipient rv; rv.address = url->path(); - rv.label = url->queryItemValue("label"); - - QString amount = url->queryItemValue("amount"); - if(amount.isEmpty()) - { - rv.amount = 0; - } - else // Amount is non-empty + rv.amount = 0; + QList<QPair<QString, QString> > items = url->queryItems(); + for (QList<QPair<QString, QString> >::iterator i = items.begin(); i != items.end(); i++) { - if(!BitcoinUnits::parse(BitcoinUnits::BTC, amount, &rv.amount)) + bool fShouldReturnFalse = false; + if (i->first.startsWith("req-")) { - return false; + i->first.remove(0, 4); + fShouldReturnFalse = true; } + + if (i->first == "label") + { + rv.label = i->second; + fShouldReturnFalse = false; + } + else if (i->first == "amount") + { + if(!i->second.isEmpty()) + { + if(!BitcoinUnits::parse(BitcoinUnits::BTC, i->second, &rv.amount)) + { + return false; + } + } + fShouldReturnFalse = false; + } + + if (fShouldReturnFalse) + return false; } if(out) { |