mtapi.php
78 lines
| 1.7 KiB
| text/x-php
|
PhpLexer
| r2 | <?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.'; | ||||
| } | ||||
| ?> | ||||
