Add -req prefixes to comply with BIP21.
authorMatt Corallo <matt@bluematt.me>
Tue, 7 Feb 2012 18:46:53 +0000 (13:46 -0500)
committerMatt Corallo <matt@bluematt.me>
Fri, 10 Feb 2012 22:44:52 +0000 (17:44 -0500)
src/qt/guiutil.cpp

index 22d9cc7..29ef554 100644 (file)
@@ -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)
     {