diff options
author | beardyman <nornholdj@gmail.com> | 2015-09-16 23:25:03 -0400 |
---|---|---|
committer | beardyman <nornholdj@gmail.com> | 2015-09-16 23:25:03 -0400 |
commit | b51ce2d0a8fad2577c164e1ab1c8382b1ae23fae (patch) | |
tree | 0cfd23aff75b957b0beb7e88e4c0a544c5c107b5 /lib/SparkPost/SparkPost.php | |
parent | 0c4b276fd3c51e938474071fcde5b294a7651256 (diff) | |
download | php-sparkpost-b51ce2d0a8fad2577c164e1ab1c8382b1ae23fae.zip php-sparkpost-b51ce2d0a8fad2577c164e1ab1c8382b1ae23fae.tar.gz php-sparkpost-b51ce2d0a8fad2577c164e1ab1c8382b1ae23fae.tar.bz2 |
finished code updates/refactoring updated examples and began refactoring tests
Diffstat (limited to 'lib/SparkPost/SparkPost.php')
-rw-r--r-- | lib/SparkPost/SparkPost.php | 96 |
1 files changed, 55 insertions, 41 deletions
diff --git a/lib/SparkPost/SparkPost.php b/lib/SparkPost/SparkPost.php index 3b54ada..5bcb815 100644 --- a/lib/SparkPost/SparkPost.php +++ b/lib/SparkPost/SparkPost.php @@ -1,6 +1,7 @@ <?php namespace SparkPost; use Ivory\HttpAdapter; +use Ivory\HttpAdapter\HttpAdapterInterface; use Ivory\HttpAdapter\Configuration; class SparkPost { @@ -22,47 +23,64 @@ class SparkPost { */ private function __construct(){} + /** + * @desc Helper function for getting the configuration for http requests + * @return \Ivory\HttpAdapter\Configuration + */ + // TODO: Need to figure out how to set strictSSL + private static function getHttpConfig($config) { + // get composer.json to extract version number + $composerFile = file_get_contents(dirname(__FILE__) . "/../../composer.json"); + $composer = json_decode($composerFile, true); + + // create Configuration for http adapter + $httpConfig = new Configuration(); + $baseUrl = $config['protocol'] . '://' . $config['host'] . ($config['port'] ? ':' . $config['port'] : '') . '/api/' . $config['version']; + $httpConfig->setBaseUri($baseUrl); + $httpConfig->setUserAgent('php-sparkpost/' . $composer['version']); + return $httpConfig; + } + + /** + * @desc Convenience function for setting the httpAdapter and config in one step + * + * @param Ivory\HttpAdapter $httpAdapter - an adapter for making http requests + * @param Array $settingsConfig - Hashmap that contains config values for the SDK to connect to SparkPost + */ + public static function configure($httpAdapter, $settingsConfig) { + //need to set the config prior to setting up the adapter because of default settings for the adapter + self::setConfig($settingsConfig); + self::setHttpAdapter($httpAdapter); + } + /** * Allows the user to pass in values to override the defaults and set their API key - * @param Array $configMap - Hashmap that contains config values for the SDK to connect to SparkPost + * @param Array $settingsConfig - Hashmap that contains config values for the SDK to connect to SparkPost * @throws \Exception */ - public static function setConfig($httpAdapter, array $configMap) { - //check for API key because its required - if (isset($configMap['key'])){ - $key = trim($configMap['key']); - if(empty($key)){ - throw new \Exception('You must provide an API key'); - } - } else { + public static function setConfig(Array $settingsConfig) { + // Validate API key because its required + if (!isset($settingsConfig['key']) || empty(trim($settingsConfig['key']))){ throw new \Exception('You must provide an API key'); - } - // TODO: need to figure out how to enforce this - // if (!$httpAdapter instanceOf HttpAdapterInterface) { - // throw new \Exception('First Argument must be a valid Ivory\HttpAdapter'); - // } + } self::$config = self::$defaults; - self::$httpAdapter = $httpAdapter; - - foreach ($configMap as $configOption => $configValue) { + // set config, overriding defaults + foreach ($settingsConfig as $configOption => $configValue) { if(key_exists($configOption, self::$config)) { self::$config[$configOption] = $configValue; } } - - self::$httpAdapter->setConfiguration(self::getHttpConfig(self::$config)); } - /** * @desc Merges passed in headers with default headers for http requests * @return Array - headers to be set on http requests */ public static function getHttpHeaders(Array $headers = null) { $defaultOptions = [ - 'Authorization' => self::$config['key'], + 'Authorization' => self::getConfig()['key'], 'Content-Type' => 'application/json', ]; @@ -75,25 +93,6 @@ class SparkPost { return $defaultOptions; } - - /** - * @desc Helper function for getting the configuration for http requests - * @return \Ivory\HttpAdapter\Configuration - */ - // TODO: Need to figure out how to set strictSSL - private static function getHttpConfig($config) { - // get composer.json to extract version number - $composerFile = file_get_contents(dirname(__FILE__) . "/../../composer.json"); - $composer = json_decode($composerFile, true); - - // create Configuration for http adapter - $httpConfig = new Configuration(); - $baseUrl = $config['protocol'] . '://' . $config['host'] . ($config['port'] ? ':' . $config['port'] : '') . '/api/' . $config['version']; - $httpConfig->setBaseUri($baseUrl); - $httpConfig->setUserAgent('php-sparkpost/' . $composer['version']); - return $httpConfig; - } - /** * Retrieves the configuration that was previously setup by the user * @throws \Exception @@ -105,16 +104,31 @@ class SparkPost { return self::$config; } + /** + * TODO: Docs + */ public static function unsetConfig() { self::$config = NULL; } + /** + * TODO: Docs + */ + public static function setHttpAdapter($httpAdapter) { + if (!$httpAdapter instanceOf HttpAdapterInterface) { + throw new \Exception('$httpAdapter paramter must be a valid Ivory\HttpAdapter'); + } + + self::$httpAdapter = $httpAdapter; + self::$httpAdapter->setConfiguration(self::getHttpConfig(self::getConfig())); + } + /** * Retrieves the Http Adapter that was previously setup by the user * @throws \Exception */ public static function getHttpAdapter() { - if (self::$config === null) { + if (self::$httpAdapter === null) { throw new \Exception('No Http Adapter has been provided'); } return self::$httpAdapter; |