public function doPost() { try { // we support both a raw http post (without application/x-www-form-urlencoded headers) like java does // and a more php / curl safe version of a form post with 'request' as the post field that holds the request json data if (isset($GLOBALS['HTTP_RAW_POST_DATA']) || isset($_POST['request'])) { $requestParam = urldecode(isset($_POST['request']) ? $_POST['request'] : $GLOBALS['HTTP_RAW_POST_DATA']); if (get_magic_quotes_gpc()) { $requestParam = stripslashes($requestParam); } $request = json_decode($requestParam); if ($request == $requestParam) { throw new Exception("Malformed json string"); } $handler = new MetadataHandler(); $response = $handler->process($request); echo json_encode(array('gadgets' => $response)); } else { throw new Exception("No post data set"); } } catch (Exception $e) { header("HTTP/1.0 500 Internal Server Error", true, 500); echo "<html><body><h1>Internal Server Error</h1><br />"; if (Config::get('debug')) { echo $e->getMessage() . "<br /><pre>"; print_r(debug_backtrace()); echo "</pre>"; } echo "</body></html>"; } }