WSClientREST.php 4.45 KB
<?php

require_once("WSClientInterface.php");

class WSClientREST implements WSClientInterface
{
	private $baseURL = "";
	
	function __construct($baseURL)
	{
		$this->baseURL = $baseURL;
	}

	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 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)
	{
		$functionURL = $this->baseURL."/".$function.".php";
		
		if (isset($params['parameters']))
		{
			$isFirstParam = true;
			foreach ($params['parameters'] as $paramName => $paramValue)
			{
				if ($isFirstParam)
					$functionURL .= "?";
				else
					$functionURL .= "&";
				$functionURL .= $paramName."=".$paramValue;
			}
		}
		
		return file_get_contents($functionURL);
	}
}
?>