85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
namespace W3TC;
 | 
						|
 | 
						|
if ( !defined( 'W3TC_SKIPLIB_AWS' ) ) {
 | 
						|
	require_once W3TC_DIR . '/vendor/autoload.php';
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
/**
 | 
						|
 * Base class for Sns communication
 | 
						|
 */
 | 
						|
class Enterprise_SnsBase {
 | 
						|
	/**
 | 
						|
	 * PHP5-style constructor
 | 
						|
	 */
 | 
						|
	function __construct() {
 | 
						|
		$this->_config = Dispatcher::config();
 | 
						|
 | 
						|
		$this->_region = $this->_config->get_string( 'cluster.messagebus.sns.region' );
 | 
						|
		$this->_topic_arn = $this->_config->get_string( 'cluster.messagebus.sns.topic_arn' );
 | 
						|
		$this->_api_key = $this->_config->get_string( 'cluster.messagebus.sns.api_key' );
 | 
						|
		$this->_api_secret = $this->_config->get_string( 'cluster.messagebus.sns.api_secret' );
 | 
						|
 | 
						|
		$this->_debug = $this->_config->get_boolean( 'cluster.messagebus.debug' );
 | 
						|
		$this->_api = null;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Returns API object
 | 
						|
	 *
 | 
						|
	 * @throws Exception
 | 
						|
	 * @return AmazonSNS
 | 
						|
	 */
 | 
						|
	protected function _get_api() {
 | 
						|
		if ( is_null( $this->_api ) ) {
 | 
						|
			if ( empty( $this->_api_key ) && empty( $this->_api_secret ) ) {
 | 
						|
				$credentials = \Aws\Credentials\CredentialProvider::defaultProvider();
 | 
						|
			} else {
 | 
						|
				if ( empty( $this->_api_key ) ) {
 | 
						|
					throw new \Exception( 'API Key is not configured' );
 | 
						|
				}
 | 
						|
 | 
						|
				if ( empty( $this->_api_secret ) ) {
 | 
						|
					throw new \Exception( 'API Secret is not configured' );
 | 
						|
				}
 | 
						|
 | 
						|
				$credentials = new \Aws\Credentials\Credentials(
 | 
						|
					$this->_api_key, $this->_api_secret );
 | 
						|
			}
 | 
						|
 | 
						|
			$this->_api = new \Aws\Sns\SnsClient( array(
 | 
						|
				'credentials' => $credentials,
 | 
						|
				'region' => $this->_region,
 | 
						|
				'version' => '2010-03-31'
 | 
						|
			) );
 | 
						|
		}
 | 
						|
 | 
						|
		return $this->_api;
 | 
						|
	}
 | 
						|
 | 
						|
	/**
 | 
						|
	 * Write log entry
 | 
						|
	 *
 | 
						|
	 * @param string  $message
 | 
						|
	 * @param array   $backtrace
 | 
						|
	 * @return bool|int
 | 
						|
	 */
 | 
						|
	protected function _log( $message, $backtrace = null ) {
 | 
						|
		if ( !$this->_debug )
 | 
						|
			return true;
 | 
						|
 | 
						|
		$data = sprintf( "[%s] %s\n", date( 'r' ), $message );
 | 
						|
		if ( $backtrace ) {
 | 
						|
			$debug = print_r( $backtrace, true );
 | 
						|
			$data .= $debug . "\n";
 | 
						|
		}
 | 
						|
		$data = strtr( $data, '<>', '..' );
 | 
						|
 | 
						|
		$filename = Util_Debug::log_filename( 'sns' );
 | 
						|
 | 
						|
		return @file_put_contents( $filename, $data, FILE_APPEND );
 | 
						|
	}
 | 
						|
}
 |