Bug #88871
closedRequestFactory respects Guzzle Middleware/Handler configuration from TYPO3_CONF_VARS
100%
Description
Guzzle has the possibility to push custom middleware handler during client initialization.
The T3 core RequestFactory has the protected method "getClient()" and transfers the TYPO3_CONF_VARS HTTP configuration to the Guzzle client.
Guzzle Middleware handler: https://guzzle.readthedocs.io/en/latest/handlers-and-middleware.html#middleware
Current state:
If you define the handler in $GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler'], the default handler stack of guzzle gets overwritten. You are not able to create the default HandlerStack before the Guzzle Client get's initialized.
Should be:
If the configuration $GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler'] is set, the request factory creates the default Guzzle handler stack and pushs the additional handler to the guzzle client.
Code example for the T3 Core RequestFactory:
/**
* Creates the client to do requests
* @return ClientInterface
*/
protected function getClient(): ClientInterface
{
$httpOptions = $GLOBALS['TYPO3_CONF_VARS']['HTTP'];
$httpOptions['verify'] = filter_var($httpOptions['verify'], FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE) ?? $httpOptions['verify'];
if (isset($GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler']) && is_array($GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler'])) {
$stack = \GuzzleHttp\HandlerStack::create();
foreach ($GLOBALS['TYPO3_CONF_VARS']['HTTP']['handler'] ?? [] as $handler) {
$stack->push($handler);
}
$httpOptions['handler'] = $stack;
}
return GeneralUtility::makeInstance(Client::class, $httpOptions);
}
EDIT: Demo Extension is available on GitHub: https://github.com/JBlocks/t3guzzlelog
Updated by Frank Nägler over 5 years ago
- Category set to Miscellaneous
- Status changed from New to Accepted
- Assignee set to Frank Nägler
Updated by Frank Nägler over 5 years ago
- Tracker changed from Feature to Bug
- TYPO3 Version set to 8
Updated by Gerrit Code Review over 5 years ago
- Status changed from Accepted to Under Review
Patch set 1 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Gerrit Code Review over 5 years ago
Patch set 2 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Gerrit Code Review over 5 years ago
Patch set 3 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Gerrit Code Review over 5 years ago
Patch set 4 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Gerrit Code Review over 5 years ago
Patch set 5 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Gerrit Code Review over 5 years ago
Patch set 6 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Gerrit Code Review over 5 years ago
Patch set 7 for branch master of project Packages/TYPO3.CMS has been pushed to the review server.
It is available at https://review.typo3.org/c/Packages/TYPO3.CMS/+/61407
Updated by Frank Nägler about 5 years ago
- Status changed from Under Review to Resolved
- % Done changed from 0 to 100
Applied in changeset 37bf2b521f2b26e87d68a4f8e1316ded62b9c5f1.
Updated by Benni Mack almost 5 years ago
- Status changed from Resolved to Closed