Fix guzzle InvalidArgumentException when body is passed as an array
authorBill Pirkle <bpirkle@wikimedia.org>
Thu, 13 Dec 2018 00:11:27 +0000 (18:11 -0600)
committerBill Pirkle <bpirkle@wikimedia.org>
Thu, 13 Dec 2018 00:11:27 +0000 (18:11 -0600)
The postBody option to GuzzleHttpRequest can be passed as an array
or as a string.  We were previously handling the array case incorrectly.

Bug: T211806
Change-Id: I8f40b9de9d40a9361eb45103608bf3aaa943bf73

includes/http/GuzzleHttpRequest.php

index 5654a71..db8a09b 100644 (file)
@@ -91,7 +91,11 @@ class GuzzleHttpRequest extends MWHttpRequest {
 
                if ( $this->method == 'POST' ) {
                        $postData = $this->postData;
-                       $this->guzzleOptions['body'] = $postData;
+                       if ( is_array( $postData ) ) {
+                               $this->guzzleOptions['form_params'] = $postData;
+                       } else {
+                               $this->guzzleOptions['body'] = $postData;
+                       }
 
                        // Suppress 'Expect: 100-continue' header, as some servers
                        // will reject it with a 417 and Curl won't auto retry