예제 #1
0
 /**
  * This function handle a request binding it to a given object
  *
  * @param object $object
  * @return boolean
  */
 public static function handle($object)
 {
     // checks if a JSON-RCP request has been received
     if ($_SERVER['REQUEST_METHOD'] != 'POST' || empty($_SERVER['CONTENT_TYPE']) || strpos($_SERVER['CONTENT_TYPE'], "application/json") === FALSE) {
         // This is not a JSON-RPC request
         return false;
     }
     // reads the input data
     $request = json_decode(file_get_contents('php://input'), true);
     // executes the task on local object
     if (is_null($request)) {
         // Can not decode the json, issue error
         $response = array('id' => null, 'result' => NULL, 'error' => sprintf('unable to decode malformed json'));
     } else {
         try {
             $result = @call_user_func_array(array($object, $request['method']), $request['params']);
             if ($result !== false) {
                 $response = array('id' => $request['id'], 'result' => $result, 'error' => NULL);
             } else {
                 $response = array('id' => $request['id'], 'result' => NULL, 'error' => 'unknown method or incorrect parameters');
             }
         } catch (Exception $e) {
             $response = array('id' => $request['id'], 'result' => NULL, 'error' => $e->getMessage());
         }
     }
     // output the response
     if (is_null($request) || !empty($request['id'])) {
         // notifications don't want response
         header('content-type: text/javascript');
         BigData::json_echo($response);
     }
     // finish
     return true;
 }
 public function printXml()
 {
     echo '<methodResponse>';
     echo '<params>';
     echo '<param>';
     echo '<value>';
     BigData::xmlrpc_echo($this->_return);
     echo '</value>';
     echo '</param>';
     echo '</params>';
     echo '</methodResponse>';
 }