WSClientSOAP.php 4.69 KB
<?php

require_once("WSClientInterface.php");

class WSClientSOAP implements WSClientInterface
{
	private $wsdl   = "";
	private $client = null;

	function __construct($wsdl)
	{
		$this->wsdl = $wsdl;
		ini_set('soap.wsdl_cache_enabled', 0);
	}

	public function isAlive()
	{
		return $this->call(__FUNCTION__, array());
	}

	public function getObsDataTree()
	{
		return $this->call(__FUNCTION__, array());
	}

	public function getTimeTablesList($userID = "", $password = "")
	{
		$params = array('parameters' => array());
		if ($userID != "" && $password != "")
		{
			$params['parameters'] = array(
					"userID" => $userID,
					"password"=> $password
			);
		}
		return $this->call(__FUNCTION__, $params);
	}

	public function getTimeTable($ttID, $userID = "", $password = "")
	{
		$params = array('parameters' => array());
		if ($userID != "" && $password != "")
		{
			$params['parameters'] = array(
					"userID" => $userID,
					"password"=> $password
			);
		}
		$params['parameters']['ttID'] = $ttID;
		return $this->call(__FUNCTION__, $params);
	}

	public function getParameterList($userID, $password = "")
	{
		$params = array('parameters' => array(
				"userID" => $userID
		));
		if ($password != "")
			$params['parameters']["password"] = $password;
		return $this->call(__FUNCTION__, $params);
	}

	public function getParameter($startTime, $stopTime, $parameterID, $sampling = 0, $userID = "", $password = "",
			$outputFormat = WSOutputFileFormat::NETCDF, $timeFormat = WSOutputTimeFormat::ISO, $gzip = 0)
	{
		$params = array('parameters' => array(
				"startTime" => $startTime,
				"stopTime"  => $stopTime,
				"parameterID" => $parameterID,
				"outputFormat" => $outputFormat,
				"timeFormat" => $timeFormat,
				"gzip" => $gzip
		));

		if ($sampling > 0)
			$params["parameters"]["sampling"] = $sampling;

		if ($userID != "" && $password != "")
		{
			$params["parameters"]["userID"] = $userID;
			$params["parameters"]["password"] = $password;
		}

		return $this->call(__FUNCTION__, $params);
	}
	
	public function getStatus($processID)
	{
		$params = array('parameters' => array(
				"id" => $processID
		));
		
		return $this->call(__FUNCTION__, $params);
	}
	
	public function getDataset($startTime, $stopTime, $datasetID, $sampling = 0, $userID = "", $password = "",
			$outputFormat = WSOutputFileFormat::NETCDF, $timeFormat = WSOutputTimeFormat::ISO, $gzip = 0)
	{
		$params = array('parameters' => array(
				"startTime" => $startTime,
				"stopTime"  => $stopTime,
				"datasetID" => $datasetID,
				"outputFormat" => $outputFormat,
				"timeFormat" => $timeFormat,
				"gzip" => $gzip
		));

		if ($sampling > 0)
			$params["parameters"]["sampling"] = $sampling;

		if ($userID != "" && $password != "")
		{
			$params["parameters"]["userID"] = $userID;
			$params["parameters"]["password"] = $password;
		}

		return $this->call(__FUNCTION__, $params);
	}

	public function getOrbites($startTime, $stopTime, $spacecraft, $coordinateSystem, $units = WSOrbitUnit::KM,
			$sampling = 0, $userID = "", $password = "", $outputFormat = WSOutputFileFormat::NETCDF,
			$timeFormat = WSOutputTimeFormat::ISO, $gzip = 0)
	{
		$params = array('parameters' => array(
				"startTime" => $startTime,
				"stopTime"  => $stopTime,
				"spacecraft" => $spacecraft,
				"coordinateSystem" => $coordinateSystem,
				"units" => $units,
				"outputFormat" => $outputFormat,
				"timeFormat" => $timeFormat,
				"gzip" => $gzip
		));

		if ($sampling > 0)
			$params["parameters"]["sampling"] = $sampling;

		if ($userID != "" && $password != "")
		{
			$params["parameters"]["userID"] = $userID;
			$params["parameters"]["password"] = $password;
		}

		return $this->call(__FUNCTION__, $params);
	}
	
	public function getPlot($startTime, $stopTime, $missionID, $userID = "", $password = "")
	{
		$params = array('parameters' => array(
				"startTime" => $startTime,
				"stopTime"  => $stopTime,
				"missionID" => $missionID
		));
		
		if ($userID != "" && $password != "")
		{
			$params["parameters"]["userID"] = $userID;
			$params["parameters"]["password"] = $password;
		}
		
		return $this->call(__FUNCTION__, $params);
	}
	
	public function getResultPlot($plotDirectoryURL)
	{
		$params = array('parameters' => array(
				"plotDirectoryURL" => $plotDirectoryURL
		));
		
		return $this->call(__FUNCTION__, $params);
	}

	private function call($function, $params)
	{
		if ($this->client == null)
			$this->createSOAPClient();
		try {
			return  $this->client ->__call($function, $params);
		}
		catch (Exception $e) {
			print_r($this->client->__getLastResponse());
			var_dump($e);
			return null;
		}
	}

	private function createSOAPClient()
	{
		$this->client = new SoapClient(
				$this->wsdl,
				array(
						"trace"=> 1,
						"soap_version"=> SOAP_1_1
				));
	}
}
?>