Patchwork D7055: phabricator: update hgmatcher to cope with the new data format

login
register
mail settings
Submitter phabricator
Date Oct. 16, 2019, 8:51 p.m.
Message ID <d0c17ba3e3aebbdae4429fda31eb5c3c@localhost.localdomain>
Download mbox | patch
Permalink /patch/42426/
State Not Applicable
Headers show

Comments

phabricator - Oct. 16, 2019, 8:51 p.m.
Closed by commit rHGa124b79a3a7e: phabricator: update hgmatcher to cope with the new data format (authored by Kwan).
This revision was automatically updated to reflect the committed changes.
This revision was not accepted when it landed; it landed in state "Needs Review".

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D7055?vs=17105&id=17259

CHANGES SINCE LAST ACTION
  https://phab.mercurial-scm.org/D7055/new/

REVISION DETAIL
  https://phab.mercurial-scm.org/D7055

AFFECTED FILES
  hgext/phabricator.py

CHANGE DETAILS




To: Kwan, #hg-reviewers
Cc: durin42, mercurial-devel

Patch

diff --git a/hgext/phabricator.py b/hgext/phabricator.py
--- a/hgext/phabricator.py
+++ b/hgext/phabricator.py
@@ -144,9 +144,21 @@ 
     def hgmatcher(r1, r2):
         if r1.uri != r2.uri or r1.method != r2.method:
             return False
-        r1params = r1.body.split(b'&')
-        r2params = r2.body.split(b'&')
-        return set(r1params) == set(r2params)
+        r1params = util.urlreq.parseqs(r1.body)
+        r2params = util.urlreq.parseqs(r2.body)
+        for key in r1params:
+            if key not in r2params:
+                return False
+            value = r1params[key][0]
+            # we want to compare json payloads without worrying about ordering
+            if value.startswith(b'{') and value.endswith(b'}'):
+                r1json = json.loads(value)
+                r2json = json.loads(r2params[key][0])
+                if r1json != r2json:
+                    return False
+            elif r2params[key][0] != value:
+                return False
+        return True
 
     def sanitiserequest(request):
         request.body = re.sub(