From ebf3221438518c77ccc4101a0a7ce77afcd405f1 Mon Sep 17 00:00:00 2001
From: Roland Franssen <franssen.roland@gmail.com>
Date: Tue, 10 Dec 2019 09:21:07 +0100
Subject: [PATCH 1/4] [PHP] Preserve JSON accept header

---
 .../src/main/resources/php/HeaderSelector.mustache            | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache b/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache
index 76f82b67dbe..56a31fc5086 100644
--- a/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache
+++ b/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache
@@ -72,8 +72,8 @@ class HeaderSelector
     {
         if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) {
             return null;
-        } elseif (preg_grep("/application\/json/i", $accept)) {
-            return 'application/json';
+        } elseif ($jsonAccept = preg_grep("/application\/(?:\w++\+)?json/i", $accept)) {
+            return implode(',', $jsonAccept);
         } else {
             return implode(',', $accept);
         }
-- 
GitLab


From e350cad13db2c520917b7e471c0ef8c32a4eca73 Mon Sep 17 00:00:00 2001
From: Roland Franssen <franssen.roland@gmail.com>
Date: Tue, 10 Dec 2019 09:27:33 +0100
Subject: [PATCH 2/4] recompile php client

---
 .../petstore/php/OpenAPIClient-php/lib/HeaderSelector.php     | 4 ++--
 .../petstore/php/OpenAPIClient-php/lib/HeaderSelector.php     | 4 ++--
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
index b8b298ec95c..e8d7bfdda05 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
@@ -82,8 +82,8 @@ class HeaderSelector
     {
         if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) {
             return null;
-        } elseif (preg_grep("/application\/json/i", $accept)) {
-            return 'application/json';
+        } elseif ($jsonAccept = preg_grep("/application\/(?:\w++\+)?json/i", $accept)) {
+            return implode(',', $jsonAccept);
         } else {
             return implode(',', $accept);
         }
diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
index b8b298ec95c..e8d7bfdda05 100644
--- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
+++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
@@ -82,8 +82,8 @@ class HeaderSelector
     {
         if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) {
             return null;
-        } elseif (preg_grep("/application\/json/i", $accept)) {
-            return 'application/json';
+        } elseif ($jsonAccept = preg_grep("/application\/(?:\w++\+)?json/i", $accept)) {
+            return implode(',', $jsonAccept);
         } else {
             return implode(',', $accept);
         }
-- 
GitLab


From 62a8941ec0be50a74f09638bccf0bc1be807f9fe Mon Sep 17 00:00:00 2001
From: Roland Franssen <franssen.roland@gmail.com>
Date: Thu, 12 Dec 2019 15:09:15 +0100
Subject: [PATCH 3/4] revise

---
 .../src/main/resources/php/HeaderSelector.mustache              | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache b/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache
index 56a31fc5086..9b9a281b625 100644
--- a/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache
+++ b/modules/openapi-generator/src/main/resources/php/HeaderSelector.mustache
@@ -72,7 +72,7 @@ class HeaderSelector
     {
         if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) {
             return null;
-        } elseif ($jsonAccept = preg_grep("/application\/(?:\w++\+)?json/i", $accept)) {
+        } elseif ($jsonAccept = preg_grep('~(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$~', $accept)) {
             return implode(',', $jsonAccept);
         } else {
             return implode(',', $accept);
-- 
GitLab


From 57ba043e5e02c705bf6d9c0e5486b0ab1db59b5b Mon Sep 17 00:00:00 2001
From: Roland Franssen <franssen.roland@gmail.com>
Date: Thu, 12 Dec 2019 15:12:31 +0100
Subject: [PATCH 4/4] recompile

---
 .../petstore/php/OpenAPIClient-php/lib/HeaderSelector.php       | 2 +-
 .../petstore/php/OpenAPIClient-php/lib/HeaderSelector.php       | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
index e8d7bfdda05..af9dda69434 100644
--- a/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
+++ b/samples/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
@@ -82,7 +82,7 @@ class HeaderSelector
     {
         if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) {
             return null;
-        } elseif ($jsonAccept = preg_grep("/application\/(?:\w++\+)?json/i", $accept)) {
+        } elseif ($jsonAccept = preg_grep('~(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$~', $accept)) {
             return implode(',', $jsonAccept);
         } else {
             return implode(',', $accept);
diff --git a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
index e8d7bfdda05..af9dda69434 100644
--- a/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
+++ b/samples/openapi3/client/petstore/php/OpenAPIClient-php/lib/HeaderSelector.php
@@ -82,7 +82,7 @@ class HeaderSelector
     {
         if (count($accept) === 0 || (count($accept) === 1 && $accept[0] === '')) {
             return null;
-        } elseif ($jsonAccept = preg_grep("/application\/(?:\w++\+)?json/i", $accept)) {
+        } elseif ($jsonAccept = preg_grep('~(?i)^(application/json|[^;/ \t]+/[^;/ \t]+[+]json)[ \t]*(;.*)?$~', $accept)) {
             return implode(',', $jsonAccept);
         } else {
             return implode(',', $accept);
-- 
GitLab