%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /home1/lightco1/public_html/plugins/system/cachecleaner/api/
Upload File :
Create Path :
Current File : //home1/lightco1/public_html/plugins/system/cachecleaner/api/KeyCDN.php

<?php

/**
 * Library for the KeyCDN API
 *
 * @author  Sven Baumgartner
 * @version 0.3
 */
class KeyCDN
{
	/**
	 * @var string
	 */
	private $apiKey;

	/**
	 * @var string
	 */
	private $endpoint;

	/**
	 * @param string      $apiKey
	 * @param string|null $endpoint
	 */
	public function __construct($apiKey, $endpoint = null)
	{
		if ($endpoint === null)
		{
			$endpoint = 'https://api.keycdn.com';
		}

		$this->setApiKey($apiKey);
		$this->setEndpoint($endpoint);
	}

	/**
	 * @return string
	 */
	public function getApiKey()
	{
		return $this->apiKey;
	}

	/**
	 * @param string $apiKey
	 *
	 * @return $this
	 */
	public function setApiKey($apiKey)
	{
		$this->apiKey = (string) $apiKey;

		return $this;
	}

	/**
	 * @return string
	 */
	public function getEndpoint()
	{
		return $this->endpoint;
	}

	/**
	 * @param string $endpoint
	 *
	 * @return $this
	 */
	public function setEndpoint($endpoint)
	{
		$this->endpoint = (string) $endpoint;

		return $this;
	}

	/**
	 * @param string $selectedCall
	 * @param array  $params
	 *
	 * @return string
	 * @throws Exception
	 */
	public function get($selectedCall, array $params = array())
	{
		return $this->execute($selectedCall, 'GET', $params);
	}

	/**
	 * @param string $selectedCall
	 * @param array  $params
	 *
	 * @return string
	 * @throws Exception
	 */
	public function post($selectedCall, array $params = array())
	{
		return $this->execute($selectedCall, 'POST', $params);
	}

	/**
	 * @param string $selectedCall
	 * @param array  $params
	 *
	 * @return string
	 * @throws Exception
	 */
	public function put($selectedCall, array $params = array())
	{
		return $this->execute($selectedCall, 'PUT', $params);
	}

	/**
	 * @param string $selectedCall
	 * @param array  $params
	 *
	 * @return string
	 * @throws Exception
	 */
	public function delete($selectedCall, array $params = array())
	{
		return $this->execute($selectedCall, 'DELETE', $params);
	}

	/**
	 * @param string $selectedCall
	 * @param        $methodType
	 * @param array  $params
	 *
	 * @return string
	 * @throws Exception
	 */
	private function execute($selectedCall, $methodType, array $params)
	{
		$endpoint = rtrim($this->endpoint, '/') . '/' . ltrim($selectedCall, '/');

		// start with curl and prepare accordingly
		$ch = curl_init();

		// create basic auth information
		curl_setopt($ch, CURLOPT_USERPWD, $this->apiKey . ':');

		// return transfer as string
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

		// set curl timeout
		curl_setopt($ch, CURLOPT_TIMEOUT, 60);

		// retrieve headers
		curl_setopt($ch, CURLOPT_HEADER, 1);
		curl_setopt($ch, CURLINFO_HEADER_OUT, 1);

		// set request type
		if (!in_array($methodType, array('POST', 'GET')))
		{
			curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $methodType);
		}

		$queryStr = http_build_query($params);
		// send query-str within url or in post-fields
		if (in_array($methodType, array('POST', 'PUT', 'DELETE')))
		{
			$reqUri = $endpoint;
			curl_setopt($ch, CURLOPT_POSTFIELDS, $queryStr);
		}
		else
		{
			$reqUri = $endpoint . '?' . $queryStr;
		}

		// url
		curl_setopt($ch, CURLOPT_URL, $reqUri);

		// make the request
		$result    = curl_exec($ch);
		$headers   = curl_getinfo($ch);
		$curlError = curl_error($ch);

		curl_close($ch);

		// get json_output out of result (remove headers)
		$jsonOutput = substr($result, $headers['header_size']);

		// error catching
		if (!empty($curlError) || empty($jsonOutput))
		{
			throw new Exception("KeyCDN-Error: {$curlError}, Output: {$jsonOutput}");
		}

		return $jsonOutput;
	}
}

Zerion Mini Shell 1.0