jenkins-bot has submitted this change and it was merged.

Change subject: Support query_string response parsing
......................................................................


Support query_string response parsing

This decodes a URL-encoded and query-string delimited response body.

Change-Id: I448db2cdfbf5d07fab9dcb362d90f518f730600f
---
M gateway_common/GatewayType.php
M gateway_common/gateway.adapter.php
2 files changed, 16 insertions(+), 5 deletions(-)

Approvals:
  Ejegg: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/gateway_common/GatewayType.php b/gateway_common/GatewayType.php
index b840d5b..763dad2 100644
--- a/gateway_common/GatewayType.php
+++ b/gateway_common/GatewayType.php
@@ -202,8 +202,13 @@
        function getCommunicationType();
 
        /**
-        * Data format for responses coming back from the processor.
-        * Should be 'xml', 'json', or 'delimited'
+        * Data format for responses coming back from the processor, from
+        * getFormattedResponse.  Should be one of:
+        *   'xml': Parse XML to a DomDocument.
+        *   'json': Parse JSON into an array tree.
+        *   'delimited': Parse a character-delimited list into an array.
+        *   'query_string': Otherwise known as 
application/x-www-form-urlencoded.
+        *       Parse a query string and urldecode into a map array.
         *
         * @return string
         */
diff --git a/gateway_common/gateway.adapter.php 
b/gateway_common/gateway.adapter.php
index 4454914..8111b78 100644
--- a/gateway_common/gateway.adapter.php
+++ b/gateway_common/gateway.adapter.php
@@ -1443,10 +1443,11 @@
                // For anything else, delete all the headers and the blank line 
after
                $noHeaders = preg_replace( '/^.*?\n\r?\n/ms', '', $rawResponse, 
1 );
                $this->logger->info( "Raw Response:" . $noHeaders );
-               if ( $type === 'json' ) {
+               switch ( $type ) {
+               case 'json':
                        return json_decode( $noHeaders, true );
-               }
-               if ( $type === 'delimited' ) {
+
+               case 'delimited':
                        $delimiter = $this->transaction_option( 
'response_delimiter' );
                        $keys = $this->transaction_option( 'response_keys' );
                        if ( !$delimiter || !$keys ) {
@@ -1458,6 +1459,11 @@
                                throw new InvalidArgumentException( 'Wrong 
number of values found in delimited response.');
                        }
                        return $combined;
+
+               case 'query_string':
+                       $parsed = array();
+                       parse_str( $noHeaders, $parsed );
+                       return $parsed;
                }
                return $noHeaders;
        }

-- 
To view, visit https://gerrit.wikimedia.org/r/286703
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I448db2cdfbf5d07fab9dcb362d90f518f730600f
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/DonationInterface
Gerrit-Branch: master
Gerrit-Owner: Awight <[email protected]>
Gerrit-Reviewer: AndyRussG <[email protected]>
Gerrit-Reviewer: Cdentinger <[email protected]>
Gerrit-Reviewer: Ejegg <[email protected]>
Gerrit-Reviewer: Ssmith <[email protected]>
Gerrit-Reviewer: XenoRyet <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to