Example #1
0
 /**
  * Factory method to create a new HealthGraphClient
  *
  * @param array|Collection $config Configuration data. Array keys:
  *    base_url - Base URL of web service
  *
  * @return HealthGraphClient
  *
  * @TODO update factory method and docblock for parameters
  */
 public static function factory($config = array())
 {
     $default = array('base_url' => 'https://api.runkeeper.com', 'logger' => FALSE);
     $required = array('base_url');
     $config = Collection::fromConfig($config, $default, $required);
     $client = new self($config->get('base_url'));
     $client->setConfig($config);
     $client->setDescription(ServiceDescription::factory(__DIR__ . DIRECTORY_SEPARATOR . 'client.json'));
     // Set the iterator resource factory based on the provided iterators config
     $clientClass = get_class();
     $prefix = substr($clientClass, 0, strrpos($clientClass, '\\'));
     $client->setResourceIteratorFactory(new HealthGraphIteratorFactory(array("{$prefix}\\Common\\Iterator")));
     if ($config->get('logger')) {
         $adapter = new \Guzzle\Log\PsrLogAdapter($config->get('logger'));
         $logPlugin = new \Guzzle\Plugin\Log\LogPlugin($adapter, \Guzzle\Log\MessageFormatter::DEBUG_FORMAT);
         $client->addSubscriber($logPlugin);
     }
     return $client;
 }