Project

General

Profile

Actions

Bug #88871

closed

RequestFactory respects Guzzle Middleware/Handler configuration from TYPO3_CONF_VARS

Added by Joerg Boesche over 5 years ago. Updated almost 5 years ago.

Status:
Closed
Priority:
Must have
Assignee:
Category:
Miscellaneous
Target version:
Start date:
2019-07-31
Due date:
% Done:

100%

Estimated time:
TYPO3 Version:
8
PHP Version:
Tags:
Complexity:
Is Regression:
Sprint Focus:

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

Actions #1

Updated by Joerg Boesche over 5 years ago

  • Description updated (diff)
Actions #2

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
Actions #3

Updated by Frank Nägler over 5 years ago

  • Tracker changed from Feature to Bug
  • TYPO3 Version set to 8
Actions #4

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

Actions #5

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

Actions #6

Updated by Frank Nägler over 5 years ago

  • Description updated (diff)
Actions #7

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

Actions #8

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

Actions #9

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

Actions #10

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

Actions #11

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

Actions #12

Updated by Frank Nägler about 5 years ago

  • Status changed from Under Review to Resolved
  • % Done changed from 0 to 100
Actions #13

Updated by Benni Mack almost 5 years ago

  • Status changed from Resolved to Closed
Actions

Also available in: Atom PDF