Allow Symfony 7 / Remove EOL PHP / Bearer Fix (#18357)

Bump requirements
  - add Symfony 7 support
  - remove support php < 8.2 (EOL)
  - remove symfony < 6.4 support

Bug Fix
  - add missing $security{{name}} variable when using Bearer Auth

Misc
 - getContentType method is deprecated; use getContentTypeFormat
 - use match instead of switch for simple assignments
 - remove default depth param from json_encode call
 - make data provider static (phpunit)
This commit is contained in:
Daniel Metzner
2024-04-13 04:46:47 +02:00
committed by GitHub
parent 4cde53c3d7
commit 8155d03c38
12 changed files with 161 additions and 320 deletions

View File

@@ -102,7 +102,7 @@ class Controller extends AbstractController
$json = $this->exceptionToArray($exception);
$json['statusCode'] = $statusCode;
return new Response(json_encode($json, 15, 512), $statusCode, $headers);
return new Response(json_encode($json, 15), $statusCode, $headers);
}
/**
@@ -229,7 +229,7 @@ class Controller extends AbstractController
public static function isContentTypeAllowed(Request $request, array $consumes = []): bool
{
if (!empty($consumes) && $consumes[0] !== '*/*') {
$currentFormat = $request->getContentType();
$currentFormat = $request->getContentTypeFormat();
foreach ($consumes as $mimeType) {
// canonize mime type
if (is_string($mimeType) && false !== $pos = strpos($mimeType, ';')) {
@@ -240,7 +240,7 @@ class Controller extends AbstractController
// add custom format to request
$format = $mimeType;
$request->setFormat($format, $format);
$currentFormat = $request->getContentType();
$currentFormat = $request->getContentTypeFormat();
}
if ($format === $currentFormat) {

View File

@@ -88,7 +88,7 @@ class PetController extends Controller
// Deserialize the input values that needs it
try {
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$pet = $this->deserialize($pet, 'OpenAPI\Server\Model\Pet', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -117,18 +117,11 @@ class PetController extends Controller
$result = $handler->addPet($pet, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 405:
$message = 'Invalid input';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
405 => 'Invalid input',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -202,15 +195,10 @@ class PetController extends Controller
$handler->deletePet($petId, $apiKey, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 400:
$message = 'Invalid pet value';
break;
}
$message = match($responseCode) {
400 => 'Invalid pet value',
default => '',
};
return new Response(
'',
@@ -291,18 +279,11 @@ class PetController extends Controller
$result = $handler->findPetsByStatus($status, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid status value';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid status value',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -382,18 +363,11 @@ class PetController extends Controller
$result = $handler->findPetsByTags($tags, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid tag value';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid tag value',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -468,21 +442,12 @@ class PetController extends Controller
$result = $handler->getPetById($petId, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid ID supplied';
break;
case 404:
$message = 'Pet not found';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid ID supplied',
404 => 'Pet not found',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -538,7 +503,7 @@ class PetController extends Controller
// Deserialize the input values that needs it
try {
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$pet = $this->deserialize($pet, 'OpenAPI\Server\Model\Pet', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -567,24 +532,13 @@ class PetController extends Controller
$result = $handler->updatePet($pet, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid ID supplied';
break;
case 404:
$message = 'Pet not found';
break;
case 405:
$message = 'Validation exception';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid ID supplied',
404 => 'Pet not found',
405 => 'Validation exception',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -666,15 +620,10 @@ class PetController extends Controller
$handler->updatePetWithForm($petId, $name, $status, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 405:
$message = 'Invalid input';
break;
}
$message = match($responseCode) {
405 => 'Invalid input',
default => '',
};
return new Response(
'',
@@ -763,15 +712,10 @@ class PetController extends Controller
$result = $handler->uploadFile($petId, $additionalMetadata, $file, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',

View File

@@ -92,18 +92,11 @@ class StoreController extends Controller
$handler->deleteOrder($orderId, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 400:
$message = 'Invalid ID supplied';
break;
case 404:
$message = 'Order not found';
break;
}
$message = match($responseCode) {
400 => 'Invalid ID supplied',
404 => 'Order not found',
default => '',
};
return new Response(
'',
@@ -163,15 +156,10 @@ class StoreController extends Controller
$result = $handler->getInventory($responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -243,21 +231,12 @@ class StoreController extends Controller
$result = $handler->getOrderById($orderId, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid ID supplied';
break;
case 404:
$message = 'Order not found';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid ID supplied',
404 => 'Order not found',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -310,7 +289,7 @@ class StoreController extends Controller
// Deserialize the input values that needs it
try {
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$order = $this->deserialize($order, 'OpenAPI\Server\Model\Order', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -337,18 +316,11 @@ class StoreController extends Controller
$result = $handler->placeOrder($order, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid Order';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid Order',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',

View File

@@ -78,7 +78,7 @@ class UserController extends Controller
// Deserialize the input values that needs it
try {
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$user = $this->deserialize($user, 'OpenAPI\Server\Model\User', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -107,15 +107,10 @@ class UserController extends Controller
$handler->createUser($user, $responseCode, $responseHeaders);
// Find default response message
$message = 'successful operation';
// Find a more specific message, if available
switch ($responseCode) {
case 0:
$message = 'successful operation';
break;
}
$message = match($responseCode) {
0 => 'successful operation',
default => 'successful operation',
};
return new Response(
'',
@@ -161,7 +156,7 @@ class UserController extends Controller
// Deserialize the input values that needs it
try {
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$user = $this->deserialize($user, 'array<OpenAPI\Server\Model\User>', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -192,15 +187,10 @@ class UserController extends Controller
$handler->createUsersWithArrayInput($user, $responseCode, $responseHeaders);
// Find default response message
$message = 'successful operation';
// Find a more specific message, if available
switch ($responseCode) {
case 0:
$message = 'successful operation';
break;
}
$message = match($responseCode) {
0 => 'successful operation',
default => 'successful operation',
};
return new Response(
'',
@@ -246,7 +236,7 @@ class UserController extends Controller
// Deserialize the input values that needs it
try {
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$user = $this->deserialize($user, 'array<OpenAPI\Server\Model\User>', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -277,15 +267,10 @@ class UserController extends Controller
$handler->createUsersWithListInput($user, $responseCode, $responseHeaders);
// Find default response message
$message = 'successful operation';
// Find a more specific message, if available
switch ($responseCode) {
case 0:
$message = 'successful operation';
break;
}
$message = match($responseCode) {
0 => 'successful operation',
default => 'successful operation',
};
return new Response(
'',
@@ -350,18 +335,11 @@ class UserController extends Controller
$handler->deleteUser($username, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 400:
$message = 'Invalid username supplied';
break;
case 404:
$message = 'User not found';
break;
}
$message = match($responseCode) {
400 => 'Invalid username supplied',
404 => 'User not found',
default => '',
};
return new Response(
'',
@@ -430,21 +408,12 @@ class UserController extends Controller
$result = $handler->getUserByName($username, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid username supplied';
break;
case 404:
$message = 'User not found';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid username supplied',
404 => 'User not found',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -525,18 +494,11 @@ class UserController extends Controller
$result = $handler->loginUser($username, $password, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 200:
$message = 'successful operation';
break;
case 400:
$message = 'Invalid username/password supplied';
break;
}
$message = match($responseCode) {
200 => 'successful operation',
400 => 'Invalid username/password supplied',
default => '',
};
return new Response(
$result !== null ?$this->serialize($result, $responseFormat):'',
@@ -588,15 +550,10 @@ class UserController extends Controller
$handler->logoutUser($responseCode, $responseHeaders);
// Find default response message
$message = 'successful operation';
// Find a more specific message, if available
switch ($responseCode) {
case 0:
$message = 'successful operation';
break;
}
$message = match($responseCode) {
0 => 'successful operation',
default => 'successful operation',
};
return new Response(
'',
@@ -643,7 +600,7 @@ class UserController extends Controller
// Deserialize the input values that needs it
try {
$username = $this->deserialize($username, 'string', 'string');
$inputFormat = $request->getMimeType($request->getContentType());
$inputFormat = $request->getMimeType($request->getContentTypeFormat());
$user = $this->deserialize($user, 'OpenAPI\Server\Model\User', $inputFormat);
} catch (SerializerRuntimeException $exception) {
return $this->createBadRequestResponse($exception->getMessage());
@@ -679,18 +636,11 @@ class UserController extends Controller
$handler->updateUser($username, $user, $responseCode, $responseHeaders);
// Find default response message
$message = '';
// Find a more specific message, if available
switch ($responseCode) {
case 400:
$message = 'Invalid user supplied';
break;
case 404:
$message = 'User not found';
break;
}
$message = match($responseCode) {
400 => 'Invalid user supplied',
404 => 'User not found',
default => '',
};
return new Response(
'',

View File

@@ -47,14 +47,11 @@ class JmsSerializer implements SerializerInterface
private function convertFormat(string $format): ?string
{
switch ($format) {
case 'application/json':
return 'json';
case 'application/xml':
return 'xml';
}
return null;
return match($format) {
'application/json' => 'json',
'application/xml' => 'xml',
default => null,
};
}
private function deserializeString($data, string $type)
@@ -132,22 +129,13 @@ class JmsSerializer implements SerializerInterface
}
// Parse the string using the correct separator
switch ($format) {
case 'csv':
$data = explode(',', $data);
break;
case 'ssv':
$data = explode(' ', $data);
break;
case 'tsv':
$data = explode("\t", $data);
break;
case 'pipes':
$data = explode('|', $data);
break;
default;
$data = [];
}
$data = match($format) {
'csv' => explode(',', $data),
'ssv' => explode(' ', $data),
'tsv' => explode("\t", $data),
'pipes' => explode('|', $data),
default => [],
};
// Deserialize each of the array elements
foreach ($data as $key => $item) {

View File

@@ -65,7 +65,7 @@ class ControllerTest extends TestCase
);
}
public function dataProviderIsContentTypeAllowed(): array
public static function dataProviderIsContentTypeAllowed(): array
{
return [
'usual JSON content type' => [

View File

@@ -16,19 +16,19 @@
}
],
"require": {
"php": ">=7.4.0|>=8.0.2",
"php": ">=8.1",
"ext-curl": "*",
"ext-json": "*",
"ext-mbstring": "*",
"symfony/validator": "^5.0|^6.0",
"jms/serializer-bundle": "^4.0",
"symfony/framework-bundle": "^5.0|^6.0"
"symfony/validator": "^6.4|^7.0",
"jms/serializer-bundle": "^5.4",
"symfony/framework-bundle": "^6.4|^7.0"
},
"require-dev": {
"phpunit/phpunit": "^9.5",
"friendsofphp/php-cs-fixer": "^2.16.3",
"symfony/browser-kit": "^5.0|^6.0",
"symfony/yaml": "^5.0|^6.0",
"phpunit/phpunit": "^10.5|^11.0",
"friendsofphp/php-cs-fixer": "*",
"symfony/browser-kit": "^6.4|7.0",
"symfony/yaml": "^6.4|^7.0",
"hoa/regex": "~1.0"
},
"autoload": {