public function getClient($autoLogin = true)
{
if (!isset(self::$client)) {
$connectorOptions = [];
$connectorOptions['accounts'] = $this->config->get('api.accounts_api_url');
$connectorOptions['verify'] = !$this->config->get('api.skip_ssl');
$connectorOptions['debug'] = $this->config->get('api.debug');
$connectorOptions['client_id'] = $this->config->get('api.oauth2_client_id');
$connectorOptions['user_agent'] = $this->getUserAgent();
$connectorOptions['api_token'] = self::$apiToken;
$connectorOptions['api_token_type'] = self::$apiTokenType;
// Proxy support with the http_proxy or https_proxy environment
// variables.
if (PHP_SAPI === 'cli') {
$proxies = [];
foreach (['https', 'http'] as $scheme) {
$proxies[$scheme] = str_replace('http://', 'tcp://', getenv($scheme . '_proxy'));
}
$proxies = array_filter($proxies);
if (count($proxies)) {
$connectorOptions['proxy'] = count($proxies) == 1 ? reset($proxies) : $proxies;
}
}
$connector = new Connector($connectorOptions);
// Set up a persistent session to store OAuth2 tokens. By default,
// this will be stored in a JSON file:
// $HOME/.platformsh/.session/sess-cli-default/sess-cli-default.json
$session = $connector->getSession();
$session->setId('cli-' . self::$sessionId);
$session->setStorage(new File($this->config->getUserConfigDir() . '/.session'));
self::$client = new PlatformClient($connector);
if (isset($this->dispatcher) && $autoLogin && !$connector->isLoggedIn()) {
$this->dispatcher->dispatch('login_required');
}
}
return self::$client;
}