Beispiel #1
0
use Kanboard\Api\ProjectPermission;
use Kanboard\Api\Subtask;
use Kanboard\Api\Swimlane;
use Kanboard\Api\Task;
use Kanboard\Api\TaskLink;
use Kanboard\Api\User;
use Kanboard\Api\Group;
use Kanboard\Api\GroupMember;
$server = new Server();
$server->setAuthenticationHeader(API_AUTHENTICATION_HEADER);
$server->before(array(new Auth($container), 'checkCredentials'));
$server->attach(new Me($container));
$server->attach(new Action($container));
$server->attach(new App($container));
$server->attach(new Board($container));
$server->attach(new Column($container));
$server->attach(new Category($container));
$server->attach(new Comment($container));
$server->attach(new File($container));
$server->attach(new Link($container));
$server->attach(new Project($container));
$server->attach(new ProjectPermission($container));
$server->attach(new Subtask($container));
$server->attach(new Swimlane($container));
$server->attach(new Task($container));
$server->attach(new TaskLink($container));
$server->attach(new User($container));
$server->attach(new Group($container));
$server->attach(new GroupMember($container));
echo $server->execute();
Beispiel #2
0
 /**
  * Handle batch request
  *
  * @access private
  * @return string
  */
 private function handleBatchRequest()
 {
     $responses = array();
     foreach ($this->payload as $payload) {
         if (!is_array($payload)) {
             $responses[] = $this->getResponse(array('error' => array('code' => -32600, 'message' => 'Invalid Request')), array('id' => null));
         } else {
             $server = new Server($payload);
             $response = $server->execute();
             if ($response) {
                 $responses[] = $response;
             }
         }
     }
     return empty($responses) ? '' : '[' . implode(',', $responses) . ']';
 }
 public function testBatchNotifications()
 {
     $server = new Server('[
         {"jsonrpc": "2.0", "method": "notify_sum", "params": [1,2,4]},
         {"jsonrpc": "2.0", "method": "notify_hello", "params": [7]}
     ]');
     $server->register('notify_sum', function ($a, $b, $c) {
     });
     $server->register('notify_hello', function ($id) {
     });
     $this->assertEquals('', $server->execute());
 }
Beispiel #4
0
 /**
  * Parse incoming requests
  *
  * @access public
  * @return string
  */
 public function execute()
 {
     // Parse payload
     if (empty($this->payload)) {
         $this->payload = file_get_contents('php://input');
     }
     if (is_string($this->payload)) {
         $this->payload = json_decode($this->payload, true);
     }
     // Check JSON format
     if (!is_array($this->payload)) {
         return $this->getResponse(array('error' => array('code' => -32700, 'message' => 'Parse error')), array('id' => null));
     }
     // Handle batch request
     if (array_keys($this->payload) === range(0, count($this->payload) - 1)) {
         $responses = array();
         foreach ($this->payload as $payload) {
             if (!is_array($payload)) {
                 $responses[] = $this->getResponse(array('error' => array('code' => -32600, 'message' => 'Invalid Request')), array('id' => null));
             } else {
                 $server = new Server($payload);
                 $response = $server->execute();
                 if ($response) {
                     $responses[] = $response;
                 }
             }
         }
         return empty($responses) ? '' : '[' . implode(',', $responses) . ']';
     }
     // Check JSON-RPC format
     if (!isset($this->payload['jsonrpc']) || !isset($this->payload['method']) || !is_string($this->payload['method']) || $this->payload['jsonrpc'] !== '2.0' || isset($this->payload['params']) && !is_array($this->payload['params'])) {
         return $this->getResponse(array('error' => array('code' => -32600, 'message' => 'Invalid Request')), array('id' => null));
     }
     // Procedure not found
     if (!isset(self::$procedures[$this->payload['method']])) {
         return $this->getResponse(array('error' => array('code' => -32601, 'message' => 'Method not found')), $this->payload);
     }
     $callback = self::$procedures[$this->payload['method']];
     $params = array();
     $reflection = new ReflectionFunction($callback);
     if (isset($this->payload['params'])) {
         $parameters = $reflection->getParameters();
         if (!$this->mapParameters($this->payload['params'], $parameters, $params)) {
             return $this->getResponse(array('error' => array('code' => -32602, 'message' => 'Invalid params')), $this->payload);
         }
     }
     $result = $reflection->invokeArgs($params);
     return $this->getResponse(array('result' => $result), $this->payload);
 }