TestAbstract.php 2.05 KB
<?php

abstract class TestAbstract
{
	abstract public function getAPI();

	abstract public function getParams();

	abstract public function getDescription();

	abstract protected function checkRESTResult($result);

	abstract protected function checkSOAPResult($result);

	protected function needRESTAuth() {
		return FALSE;
	}

	public function getWSTypes() {
		return array("REST", "SOAP");
	}

	public function runREST($base_url) {
		$params = $this->getParams();
		if ($this->needRESTAuth()) {
			$url = $base_url . '/php/rest/auth.php';
			$curl = curl_init();
			curl_setopt($curl, CURLOPT_URL, $url);
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
			$token = curl_exec($curl);
			if (curl_errno($curl) || empty($token)) {
				echo "[ERROR] Cannot retrieve REST token".PHP_EOL;
				return array(
					'success' => FALSE,
					'message' => "Cannot retrieve REST token",
				);
			}
			curl_close($curl);
			$params['token'] = $token;
		}

		$url = $base_url . '/php/rest/' . $this->getAPI() . '.php';
		if (!empty($params)) {
			$url .= "?" . http_build_query($params);
		}
		$curl = curl_init();
		//ProxyUtils::addProxyForCurl($curl);
		curl_setopt($curl, CURLOPT_URL, $url);
		curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
		$result = curl_exec($curl);
		if (curl_errno($curl)) {
			return array(
				'success' => FALSE,
				'message' => 'Request error: '.curl_error($curl),
			);
		}
		$exec_time = curl_getinfo($curl, CURLINFO_TOTAL_TIME);
		curl_close($curl);
		return $this->checkRESTResult($result);
	}

	public function runSOAP($base_url) {
		$wsdl_url = $base_url . '/help/Methods_AMDA.xml';
		try {
			$client = new SoapClient($wsdl_url, array(
				//'proxy_host'     => "localhost",
				//'proxy_port'     => 8080,
				//'proxy_login'    => "some_name",
				//'proxy_password' => "some_password"
			));
			$result = $client->__soapCall($this->getAPI(), array($this->getParams()));
		}
		catch (SoapFault $exception) {
			return array(
				'success' => FALSE,
				'message' => 'SOAP error: '.$exception->getMessage(),
			);
		}
		return $this->checkSOAPResult($result);
	}
}

?>