/**
  * Creates a basic auth client with the supplied configuration options
  *
  * @param array $config
  * @return Client|IntercomBasicAuthClient
  */
 public static function factory($config = [])
 {
     $client = new self();
     $config = Collection::fromConfig($config, $client->getDefaultConfig(), static::$required);
     $client->configure($config);
     $client->setBasicAuth($config->get('app_id'), $config->get('api_key'));
     return $client;
 }
 /**
  * Creates a basic auth client with the supplied configuration options
  *
  * @param array $config
  * @return Client|IntercomBasicAuthClient
  */
 public static function factory($config = array())
 {
     $client = new self();
     $config = Collection::fromConfig($config, $client->getDefaultConfig(), static::$required);
     $client->configure($config);
     $client->setBasicAuth($config->get('app_id'), $config->get('api_key'));
     $client->setUserAgent('intercom-php/1.4.0', true);
     return $client;
 }
 /**
  * Creates a client token auth client with the supplied configuration options
  *
  * @param array $config
  * @return Client|IntercomBasicAuthClient
  */
 public static function factory($config = [])
 {
     $client = new self();
     $config = Collection::fromConfig($config, $client->getDefaultConfig(), static::$required);
     $client->configure($config);
     $client->setBasicAuth($config->get('client_uuid'), $config->get('client_key'));
     $client->setUserAgent('intercom-php/1.2.3', true);
     $client->setDefaultOption('query/app_id', $config->get('app_id'));
     return $client;
 }
 public static function factory($config = [])
 {
     $client = new self();
     $config = Collection::fromConfig($config, $client->getDefaultConfig(), static::$required);
     $client->configure($config);
     $client->setUserAgent(self::USER_AGENT, true);
     self::$consumer_key = $config->get('consumer_key');
     self::$consumer_secret = $config->get('consumer_secret');
     self::$application_name = $config->get('application_name');
     // add a listener to alter every requests and authenticate them through Semantria weird oAuth
     $client->getEventDispatcher()->addListener('command.before_send', function (Event $event) use($client) {
         $command = $event['command'];
         $request = $client->oAuthRequest($command->getRequest());
     });
     return $client;
 }