|
|
<?php
|
|
|
|
|
|
require_once('external.php');
|
|
|
|
|
|
function toXML($data)
|
|
|
{
|
|
|
$xml = new XmlWriter();
|
|
|
$xml->openMemory();
|
|
|
$xml->startDocument('1.0', 'UTF-8');
|
|
|
$xml->startElement('root');
|
|
|
|
|
|
function write(XMLWriter $xml, $data)
|
|
|
{
|
|
|
foreach($data as $key => $value)
|
|
|
{
|
|
|
if(is_array($value))
|
|
|
{
|
|
|
echo "$key\n";
|
|
|
$xml->startElement($key);
|
|
|
write($xml, $value);
|
|
|
$xml->endElement();
|
|
|
continue;
|
|
|
}
|
|
|
$xml->writeElement($key, $value);
|
|
|
}
|
|
|
}
|
|
|
write($xml, $data);
|
|
|
|
|
|
$xml->endElement();
|
|
|
return $xml->outputMemory(true);
|
|
|
}
|
|
|
|
|
|
$API = new ReflectionClass('MTAPIi');
|
|
|
|
|
|
if( $API->hasMethod($_GET['method']) ) {
|
|
|
$method = $API->getMethod($_GET['method']);
|
|
|
$parameters = $method->getParameters();
|
|
|
|
|
|
$method_parameters = Array();
|
|
|
foreach($parameters as $parameter) {
|
|
|
$param = (Array) $parameter;
|
|
|
$parameter_name = reset($param);
|
|
|
if(isset( $_GET[$parameter_name] ))
|
|
|
array_push($method_parameters, $_GET[$parameter_name]);
|
|
|
elseif( 'xml' == $parameter->getName() && 'xml' == $_GET['output-type'] )
|
|
|
array_push($method_parameters, true);
|
|
|
elseif( $parameter->isOptional() )
|
|
|
{ /* empty */ }
|
|
|
else {
|
|
|
header('HTTP/1.0 400 Bad Request');
|
|
|
printf( 'Parameter %s is required but not supplied', $parameter_name );
|
|
|
}
|
|
|
}
|
|
|
|
|
|
$result = $method->invokeArgs($API, $method_parameters);
|
|
|
|
|
|
switch($_GET['output-type']) {
|
|
|
case 'json':
|
|
|
$result = json_encode($result);
|
|
|
header('Content-Type: application/json');
|
|
|
echo $result;
|
|
|
break;
|
|
|
case 'xml':
|
|
|
header('Content-Type: application/xml');
|
|
|
echo $result;
|
|
|
break;
|
|
|
default:
|
|
|
header('HTTP/1.0 400 Bad Request');
|
|
|
header('Content-Type: text/plain');
|
|
|
print_r($result);
|
|
|
break;
|
|
|
}
|
|
|
} else {
|
|
|
header('HTTP/1.0 404 Not Found');
|
|
|
echo 'There is no such method in the MT API.';
|
|
|
}
|
|
|
|
|
|
?>
|
|
|
|