class ClientFactory

Same name in other branches
  1. 8.9.x core/lib/Drupal/Core/Http/ClientFactory.php \Drupal\Core\Http\ClientFactory
  2. 10 core/lib/Drupal/Core/Http/ClientFactory.php \Drupal\Core\Http\ClientFactory
  3. 11.x core/lib/Drupal/Core/Http/ClientFactory.php \Drupal\Core\Http\ClientFactory

Helper class to construct a HTTP client with Drupal specific config.

Hierarchy

Expanded class hierarchy of ClientFactory

2 files declare their use of ClientFactory
ClientFactoryTest.php in core/tests/Drupal/Tests/Core/Http/ClientFactoryTest.php
DefaultFetcher.php in core/modules/aggregator/src/Plugin/aggregator/fetcher/DefaultFetcher.php
1 string reference to 'ClientFactory'
core.services.yml in core/core.services.yml
core/core.services.yml
1 service uses ClientFactory
http_client_factory in core/core.services.yml
Drupal\Core\Http\ClientFactory

File

core/lib/Drupal/Core/Http/ClientFactory.php, line 13

Namespace

Drupal\Core\Http
View source
class ClientFactory {
    
    /**
     * The handler stack.
     *
     * @var \GuzzleHttp\HandlerStack
     */
    protected $stack;
    
    /**
     * Constructs a new ClientFactory instance.
     *
     * @param \GuzzleHttp\HandlerStack $stack
     *   The handler stack.
     */
    public function __construct(HandlerStack $stack) {
        $this->stack = $stack;
    }
    
    /**
     * Constructs a new client object from some configuration.
     *
     * @param array $config
     *   The config for the client.
     *
     * @return \GuzzleHttp\Client
     *   The HTTP client.
     */
    public function fromOptions(array $config = []) {
        $default_config = [
            // Security consideration: we must not use the certificate authority
            // file shipped with Guzzle because it can easily get outdated if a
            // certificate authority is hacked. Instead, we rely on the certificate
            // authority file provided by the operating system which is more likely
            // going to be updated in a timely fashion. This overrides the default
            // path to the pem file bundled with Guzzle.
'verify' => TRUE,
            'timeout' => 30,
            'headers' => [
                'User-Agent' => 'Drupal/' . \Drupal::VERSION . ' (+https://www.drupal.org/) ' . \GuzzleHttp\default_user_agent(),
            ],
            'handler' => $this->stack,
            // Security consideration: prevent Guzzle from using environment variables
            // to configure the outbound proxy.
'proxy' => [
                'http' => NULL,
                'https' => NULL,
                'no' => [],
            ],
        ];
        $config = NestedArray::mergeDeep($default_config, Settings::get('http_client_config', []), $config);
        return new Client($config);
    }

}

Members

Title Sort descending Modifiers Object type Summary
ClientFactory::$stack protected property The handler stack.
ClientFactory::fromOptions public function Constructs a new client object from some configuration.
ClientFactory::__construct public function Constructs a new ClientFactory instance.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.