/** * Create a new instance of GitlabClient. * @param array $config * @return GitlabGuzzleClient */ public static function createClient($config = []) { $default = ['ssl.certificate_authority' => 'system']; $required = ['base_url', 'api_token']; $config = Collection::fromConfig($config, $default, $required); $config['base_url'] = self::completeBaseUrl($config['base_url']); $serviceDescriptionFilePath = __DIR__ . '/ServiceDescription/service_description.yml'; $definition = self::loadServiceDefinition($serviceDescriptionFilePath); self::emulateGuzzle3ResponseModels($definition); $description = new Description($definition); $client = new Client($config->toArray()); $client->setDefaultOption('headers/accept', 'application/json'); $privateTokenPlugin = new PrivateTokenPlugin($config['api_token']); $client->getEmitter()->attach($privateTokenPlugin); $gitlabClient = new GitlabGuzzleClient($client, $description); $gitlabClient->getEmitter()->attach(new ResponseClassProcessor($description)); return $gitlabClient; }