Example #1
0
 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>";
     }
 }