public static function factory($config = array()) { // provide a hash of default client configuration options $default = array('base_url' => 'http://127.0.0.1/', 'api_id' => 1, 'private_key' => 'fbdce19f94b158e72ae6020cc5126642a9d42d086419c015ad2b6dd429312410'); // the following values are required when creating the client $required = array('base_url', 'api_id', 'private_key'); // merge in default settings and validate the config $config = \Guzzle\Common\Collection::fromConfig($config, $default, $required); // create a new client $client = new self($config->get('base_url'), $config); $client->setDefaultOption('headers/API_ID', $config->get('api_id')); $client->getEventDispatcher()->addListener('client.create_request', function (\Guzzle\Common\Event $event) use($config) { // Guzzle\Http\Message\Request $data = $event['request']->getQuery(); // Guzzle\Http\Message\EntityEnclosingRequest if ($event['request'] instanceof Guzzle\Http\Message\EntityEnclosingRequest) { $data->overwriteWith($event['request']->getPostFields()); } $time = (string) time(); $message = $time . $config->get('api_id') . implode($data->toArray()); $hash = hash_hmac('sha256', $message, $config->get('private_key')); $event['request']->setHeader('API_TIME', $time)->setHeader('API_HASH', $hash); unset($data, $time, $message, $hash); }); return $client; }
/** * @param array $config * @return \Guzzle\Service\Client|BasecampClient * @throws \Guzzle\Common\Exception\InvalidArgumentException */ public static function factory($config = array()) { $default = array('base_url' => 'https://basecamp.com/{user_id}/api/{version}/', 'version' => 'v1', 'auth' => 'http', 'token' => null, 'username' => null, 'password' => null); $required = array('user_id', 'app_name', 'app_contact'); $config = Collection::fromConfig($config, $default, $required); $client = new self($config->get('base_url'), $config); if ($config['auth'] === 'http') { if (!isset($config['username'], $config['password'])) { throw new InvalidArgumentException("Config must contain username and password when using http auth"); } $authorization = 'Basic ' . base64_encode($config['username'] . ':' . $config['password']); } if ($config['auth'] === 'oauth') { if (!isset($config['token'])) { throw new InvalidArgumentException("Config must contain token when using oauth"); } $authorization = sprintf('Bearer %s', $config['token']); } if (!isset($authorization)) { throw new InvalidArgumentException("Config must contain valid authentication method"); } // Attach a service description to the client $description = ServiceDescription::factory(__DIR__ . '/Resources/service.php'); $client->setDescription($description); // Set required User-Agent $client->setUserAgent(sprintf('%s (%s)', $config['app_name'], $config['app_contact'])); $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) use($authorization) { $event['request']->addHeader('Authorization', $authorization); }); return $client; }
public static function factory($config = array()) { // The following values are required when creating the client $required = array('base_url', 'username', 'password'); // Merge in default settings and validate the config $config = Collection::fromConfig($config, array(), $required); // Create a new sData client $client = new self($config->get('base_url'), $config); // JSON by default $client->setDefaultOption('query/format', 'json'); // Authentication $client->setDefaultOption('auth', array($config->get('username'), $config->get('password'), 'Basic')); // Strip the BOM from results $client->addSubscriber(new StripBomPlugin()); // Optional logging if ($config->get('log')) { $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) { $req = $event['request']; \Log::info('sData', ['request' => $req->getMethod() . ' ' . $req->getResource()]); }); } // Set the service description $services = \Config::get('sdata::services'); if (!empty($services)) { $client->setDescription(ServiceDescription::factory($services)); } // Done return $client; }
/** * @param array $config * @return \Guzzle\Service\Client|BasecampClient * @throws \Guzzle\Common\Exception\InvalidArgumentException */ public static function factory($config = array()) { $default = array('base_url' => 'https://basecamp.com/', 'version' => 'v1', 'token' => null, 'user_agent' => null, 'auth_method' => 'oauth'); $required = []; $config = Collection::fromConfig($config, $default, $required); $client = new self($config->get('base_url'), $config); if (empty($config['token'])) { throw new InvalidArgumentException("Config must contain token when using oath"); } $authorization = sprintf('Bearer %s', $config['token']); if (!isset($authorization)) { throw new InvalidArgumentException("Config must contain valid authentication method"); } // Attach a service description to the client $description = ServiceDescription::factory(__DIR__ . '/Resources/service.php'); $client->setDescription($description); // Set required User-Agent $client->setUserAgent($config['user_agent']); $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) use($authorization) { $event['request']->addHeader('Authorization', $authorization); }); // Add cache plugin $cachePlugin = new CachePlugin(['storage' => new DefaultCacheStorage(new DoctrineCacheAdapter(new ApcCache()))]); $client->addSubscriber($cachePlugin); return $client; }
/** * @param array $config * @return \Guzzle\Service\Client|ImageRelayClient * @throws \Guzzle\Common\Exception\InvalidArgumentException */ public static function factory($config = array()) { $default = array('base_url' => 'https://{imagerelay_url}/api/v2/', 'imagerelay_url' => 'subdomain.imagerelay.com'); $config = Collection::fromConfig($config, $default); $client = new self($config->get('base_url'), $config); if ($config['auth'] === 'http') { if (!isset($config['username'], $config['password'])) { throw new InvalidArgumentException("Username and password required when using http auth."); } $authorization = 'Basic ' . base64_encode($config['username'] . ':' . $config['password']); } if ($config['auth'] === 'oauth') { if (!isset($config['token'])) { throw new InvalidArgumentException("Access token required when using oauth."); } $authorization = sprintf('Bearer %s', $config['token']); } if (!isset($authorization)) { throw new InvalidArgumentException("Must use either http or oauth authentication method."); } // Attach a service description to the client $description = ServiceDescription::factory(__DIR__ . '/Resources/api.php'); $client->setDescription($description); // Set required User-Agent $client->setUserAgent(sprintf('%s (%s)', $config['app_name'], $config['app_contact'])); $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) use($authorization) { $event['request']->addHeader('Authorization', $authorization); }); return $client; }
public static function factory($config = array()) { if (isset($config['developer_mode']) && is_bool($config['developer_mode'])) { $developerMode = $config['developer_mode']; } else { $developerMode = false; } $baseUrl = array('https://api.auspost.com.au', 'https://devcentre.auspost.com.au/myapi'); // Ignore unnecessary user-specified configuration values if ($developerMode) { unset($config['email_address']); unset($config['password']); } unset($config['base_url']); $default = array('developer_mode' => $developerMode, 'base_url' => $baseUrl[$developerMode], 'email_address' => '*****@*****.**', 'password' => 'password'); $required = array('developer_mode', 'base_url', 'email_address', "password"); $config = Collection::fromConfig($config, $default, $required); $client = new self($config->get('base_url'), $config); $client->getConfig()->setPath('request.options/headers/Authorization', 'Basic ' . base64_encode($config->get('email_address') . ':' . $config->get('password'))); $client->setDescription(ServiceDescription::factory(__DIR__ . '/service.json')); $client->setSslVerification(false); $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) { $request = $event['request']; $request->addCookie('OBBasicAuth', 'fromDialog'); }); return $client; }
/** * Factory method to create a new ComputeClient * * @static * * * @param array|Collection $config Configuration data. Array keys: * base_url - Base URL of web service * token - Authentication token * tenant_id Tenant id * * @return \Guzzle\Common\FromConfigInterface|ComputeClient|\Guzzle\Service\Client */ public static function factory($config = array()) { $default = array(); $required = array('base_url', 'token', 'tenant_id'); $config = Inspector::prepareConfig($config, $default, $required); $client = new self($config->get('base_url'), $config->get('token'), $config->get('tenant_id')); $client->setConfig($config); $client->getEventDispatcher()->addSubscriber(new AuthenticationObserver()); return $client; }
/** * Factory method to create a new MixGuzzleClient * The following keys and values are available options: * - base_url: base url of the mixpanel web service (optional) * - scheme: URI scheme: http or https (optional, defaults to http) * - api_key: your Mixpanel api key (required) * - api_secret: your Mixpanel api secret (required) * - expire: timeout in seconds for all api requests (optional, defaults to 30) * @param array $config configuration data * @return MixGuzzleClient */ public static function factory($config = array()) { $default = array('base_url' => '{scheme}://mixpanel.com/api/2.0/', 'scheme' => 'http', 'expire' => 30); $required = array('api_key', 'api_secret'); $config = Collection::fromConfig($config, $default, $required); $client = new self($config->get('base_url'), $config); $auth = new Plugin\MixGuzzleAuthPlugin($config['api_key'], $config['api_secret'], $config['expire']); $client->getEventDispatcher()->addSubscriber($auth); //attach a service description to the client $description = ServiceDescription::factory(__DIR__ . '/service.json'); $client->setDescription($description); 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; }
public static function factory($config = array()) { // default config values $default = array('base_url' => 'https://localbitcoins.com/api', 'debug' => false); $config = Collection::fromConfig($config, $default, array('base_url')); $client = new self($config->get('base_url'), $config); $client->setDescription(ServiceDescription::factory(__DIR__ . '/Resources/localbtc.json')); // optiona debugging if ($config->get('debug')) { $client->addSubscriber(LogPlugin::getDebugPlugin()); } // oauth2 hook $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) use($config) { $event['request']->getQuery()->set('access_token', $config['access_token']); }); return $client; }
/** * Factory method to create a new Mojio client * * @param array|Collection $config Configuration data. Array keys: * host - Base URL host. Default: data.api.hackthedrive.com * base_url - Base URL of web service. Default: {{scheme}}://{{host}}/{{version}} * app_id - Mojio App ID * secret_key - Mojio App Secret Key * token - Optional Token ID * * @return S3Client */ public static function factory($config = array()) { $defaults = array('scheme' => 'http', 'host' => 'data.api.hackthedrive.com', 'base_url' => '{scheme}://{host}/{version}', 'oauth_base_url' => '{scheme}://{host}/oauth2', 'app_id' => null, 'secret_key' => null, 'version' => 'v1'); $required = array('base_url', 'app_id', 'secret_key', 'version', 'oauth_base_url'); $config = Collection::fromConfig($config, $defaults, $required); $client = new self($config->get('base_url'), $config); // Attach a service description to the client $description = ServiceDescription::factory(__DIR__ . '/service.json'); $client->setDescription($description); $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) { $request = $event['request']; $token = $request->getClient()->getTokenId(); if ($token) { $request->setHeader('MojioApiToken', $token); } }); return $client; }
/** * @param array $config * @return API */ public static function factory($config = array()) { // Provide a hash of default client configuration options $default = array('base_url' => 'https://www.eventbrite.com/', 'format' => 'json'); // The following values are required when creating the client $required = array('base_url', 'format', 'app_key'); // Merge in default settings and validate the config $config = Collection::fromConfig($config, $default, $required); // Create a new client $client = new self($config->get('base_url') . $config->get('format') . '/', $config); // Set the service description $client->setDescription(ServiceDescription::factory(__DIR__ . '/eventbrite.json')); // Add a listener so that we append our API key to all requests $client->getEventDispatcher()->addListener('client.create_request', function (Event $e) { $e['request']->getQuery()->set('app_key', $e['client']->getConfig('app_key')); }); return $client; }
public static function factory($config = array()) { $default = array('ssl' => false, 'tid' => null); $required = array('ssl'); $config = Collection::fromConfig($config, $default, $required); $baseUrl = $config->get('ssl') === true ? 'https://ssl.google-analytics.com' : 'http://www.google-analytics.com'; $client = new self($baseUrl, $config); $description = ServiceDescription::factory(__DIR__ . '/Resources/service.php'); $client->setDescription($description); if (true === isset($config['tid'])) { $client->getEventDispatcher()->addListener('command.before_prepare', function (\Guzzle\Common\Event $e) use($config) { if (false === $e['command']->hasKey('tid')) { $e['command']->set('tid', $config['tid']); } }); } return $client; }
public static function factory($opts = array()) { $default = array('sandbox' => true, 'xsd' => true); $required = array('sandbox', 'user', 'pass'); $config = Collection::fromConfig($opts, $default, $required); if ($config->get('xsd') === true) { $config->set('xsd', file_get_contents(__DIR__ . '/Resources/schema.xsd')); } if ($config->get('sandbox') === true) { $baseUrl = 'https://exttest.cybertip.org/ispws/'; } else { $baseUrl = 'https://report.cybertip.org/ispws/.'; } $client = new self($baseUrl, $config); $client->setDefaultOption('auth', array($config['user'], $config['pass'], 'Any')); $client->getConfig()->set('curl.options', array('body_as_string' => true)); $description = ServiceDescription::factory(__DIR__ . '/Resources/service.php'); $client->setDescription($description); $client->getEventDispatcher()->addListener('command.after_prepare', array($client, 'onCommandAfterPrepare')); return $client; }
/** * {@inheritDoc} */ public static function factory($config = array()) { $defaults = array('base_url' => 'https://www.mtxserv.fr/api/{version}/', 'version' => 'v1', 'grant_type' => 'https://www.mtxserv.fr/grants/api_key', 'has_authentification' => true, 'oauth2_token' => 'https://www.mtxserv.fr/oauth/v2/token'); $required = array('client_id', 'client_secret', 'api_key'); $config = Collection::fromConfig($config, $defaults, $required); $client = new self($config->get('base_url'), $config); // Set services descriptions $client->setDescription(ServiceDescription::factory(__DIR__ . '/Resources/product.php')); $client->setDescription(ServiceDescription::factory(__DIR__ . '/Resources/admin.php')); $client->setDescription(ServiceDescription::factory(__DIR__ . '/Resources/viewer.php')); $client->setDescription(ServiceDescription::factory(__DIR__ . '/Resources/game.php')); // Add authentification if ($config->get('has_authentification')) { $client->getEventDispatcher()->addListener('request.before_send', function (\Guzzle\Common\Event $event) use($config) { $event['request']->getQuery()->set('access_token', Client::retrieveAccessToken($config)); }); } // Set user agent $client->setUserAgent('mTxServ SDK PHP'); return $client; }
public static function factory($config = array()) { // Provide a hash of default client configuration options $default = []; // The following values are required when creating the client $required = ['disqus.keys']; // Merge in default settings and validate the config $config = Collection::fromConfig($config, $default, $required); $apiKeys = $config->get('disqus.keys'); // Create a new Disqus client $client = new self('https://disqus.com/api/3.0/', $config); // Set the service description $client->setDescription(ServiceDescription::factory(__DIR__ . '/resources/disqus.json')); // Auto-add parameters to all requests $client->getEventDispatcher()->addListener('request.before_send', function (Event $event) use($apiKeys) { $query = $event['request']->getQuery(); foreach ($apiKeys as $key => $value) { $query->set($key, $value); } }); return $client; }