tracardi-1.0.x-dev/src/Services/ApiClientFactory.php

src/Services/ApiClientFactory.php
<?php

namespace Drupal\tracardi\Services;

use Drupal\Core\Config\ImmutableConfig;
use Drupal\Core\Http\ClientFactory;
use GuzzleHttp\HandlerStack;
use Tracardi\TracardiPhpSdk\Http\ApiClient\ApiClient;
use Drupal\tracardi\Services\Middleware\EnsureAccessTokenExistsMiddleware;

final class ApiClientFactory {

  private ImmutableConfig $tracardiConfig;

  private ClientFactory $clientFactory;

  private EnsureAccessTokenExistsMiddleware $ensureAccessTokenExistsMiddleware;

  public function __construct(
    ImmutableConfig $tracardiConfig,
    ClientFactory $client_factory,
    EnsureAccessTokenExistsMiddleware $ensureAccessTokenExistsMiddleware
  ) {
    $this->tracardiConfig = $tracardiConfig;
    $this->clientFactory = $client_factory;
    $this->ensureAccessTokenExistsMiddleware = $ensureAccessTokenExistsMiddleware;
  }

  public function create(): ApiClient {
    $baseUrl = $this->tracardiConfig->get('api_url');
    $stack = $this->getHandlerStack();

    $guzzleClient = $this->clientFactory->fromOptions([
      'base_uri' => $baseUrl,
      'handler' => $stack,
      'timeout' => 3,
      'connect_timeout' => 1,
    ]);

    return ApiClient::withClient($guzzleClient);
  }

  private function getHandlerStack(): HandlerStack {
    $stack = HandlerStack::create();
    $stack->push($this->ensureAccessTokenExistsMiddleware);

    return $stack;
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc