function __construct(Server $server, StorageInterface $storage) { $this->_server = $server; $this->_storage = $storage; $this->_basketService = new BasketService($storage); $server->attach($this); }
/** * Registers services on the given container. * * @param Container $container * @return Container */ public function register(Container $container) { $server = new Server(); $server->setAuthenticationHeader(API_AUTHENTICATION_HEADER); $server->getMiddlewareHandler()->withMiddleware(new AuthenticationMiddleware($container)); $server->getProcedureHandler()->withObject(new MeProcedure($container))->withObject(new ActionProcedure($container))->withObject(new AppProcedure($container))->withObject(new BoardProcedure($container))->withObject(new ColumnProcedure($container))->withObject(new CategoryProcedure($container))->withObject(new CommentProcedure($container))->withObject(new TaskFileProcedure($container))->withObject(new ProjectFileProcedure($container))->withObject(new LinkProcedure($container))->withObject(new ProjectProcedure($container))->withObject(new ProjectPermissionProcedure($container))->withObject(new SubtaskProcedure($container))->withObject(new SubtaskTimeTrackingProcedure($container))->withObject(new SwimlaneProcedure($container))->withObject(new TaskProcedure($container))->withObject(new TaskLinkProcedure($container))->withObject(new TaskExternalLinkProcedure($container))->withObject(new TaskMetadataProcedure($container))->withObject(new UserProcedure($container))->withObject(new GroupProcedure($container))->withObject(new GroupMemberProcedure($container))->withBeforeMethod('beforeProcedure'); $container['api'] = $server; return $container; }
/** * Registers services on the given container. * * @param Container $container * @return Container */ public function register(Container $container) { $server = new Server(); $server->setAuthenticationHeader(API_AUTHENTICATION_HEADER); $server->getMiddlewareHandler()->withMiddleware(new AuthenticationApiMiddleware($container)); $server->getProcedureHandler()->withObject(new MeApi($container))->withObject(new ActionApi($container))->withObject(new AppApi($container))->withObject(new BoardApi($container))->withObject(new ColumnApi($container))->withObject(new CategoryApi($container))->withObject(new CommentApi($container))->withObject(new FileApi($container))->withObject(new LinkApi($container))->withObject(new ProjectApi($container))->withObject(new ProjectPermissionApi($container))->withObject(new SubtaskApi($container))->withObject(new SubtaskTimeTrackingApi($container))->withObject(new SwimlaneApi($container))->withObject(new TaskApi($container))->withObject(new TaskLinkApi($container))->withObject(new UserApi($container))->withObject(new GroupApi($container))->withObject(new GroupMemberApi($container)); $container['api'] = $server; return $container; }
/** * @param GetResponseForExceptionEvent $event */ public function onKernelException(GetResponseForExceptionEvent $event) { $exception = $event->getException(); /** @var \appProdProjectContainer $container */ if ($exception instanceof \SoapFault) { $container = $event->getDispatcher()->getContainer(); $errorResponse = $container->get('med_coupon_service.transport.med_coupon_service_transport_api')->getTalonClientSOAP()->getCurl()->getResponse(); // $container->get('med_coupon_service.transport.med_coupon_service_transport_api'); $server = new Server(); $response = $server->getResponse(array('error' => array('code' => $exception->getCode(), 'message' => $exception->getMessage(), 'data' => $errorResponse)), array('id' => null)); // $response = new Response('<error>1<error>'); echo $response; exit; } }
/** * Execute a method * * @access public * @param mixed $class Class name or instance * @param string $method Method name * @param array $params Procedure params * @return mixed */ public function executeMethod($class, $method, $params) { //Do Session checking if (!in_array($method, ["login", "check"])) { $auth = new Authentication(); $sid = array_shift($params); $user = $auth->check($sid); if (!$user['uid'] || $user['uid'] < 1) { throw new AuthenticationFailure('You do not have access.'); } } return parent::executeMethod($class, $method, $params); }
<?php require __DIR__ . '/common.php'; use JsonRPC\Server; use PicoFeed\PicoFeedException; use Model\Config; $server = new Server(); $server->authentication(array(Config\get('username') => Config\get('api_token'))); // Get version $server->register('app.version', function () { return array('version' => APP_VERSION); }); // Get all feeds $server->register('feed.list', function () { return Model\Feed\get_all(); }); // Get one feed $server->register('feed.info', function ($feed_id) { return Model\Feed\get($feed_id); }); // Add a new feed $server->register('feed.create', function ($url) { try { $result = Model\Feed\create($url); } catch (PicoFeedException $e) { $result = false; } catch (UnexpectedValueException $e) { $result = false; } Model\Config\write_debug(); return $result;
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()); }
/** * */ public function testRunInvalidJSONRequest() { $request = self::REQUEST_JSON_ERROR; $response = self::RESPONSE_JSON_ERROR; $server = new Server($this->getTransportMockServerRun($request), new TestCalleeObject()); $this->expectOutputString("{$response}"); $server->run(); $this->assertEquals("[request]{$request}[response]{$response}", $this->log); }
$comment = new Comment($registry); $subtask = new SubTask($registry); $board = new Board($registry); $action = new Action($registry); $webhook = new Webhook($registry); $notification = new Notification($registry); $action->attachEvents(); $project->attachEvents(); $webhook->attachEvents(); $notification->attachEvents(); // Load translations $language = $config->get('language', 'en_US'); if ($language !== 'en_US') { Translator::load($language); } $server = new Server(); $server->authentication(array('jsonrpc' => $config->get('api_token'))); /** * Project procedures */ $server->register('createProject', function ($name) use($project) { $values = array('name' => $name); list($valid, ) = $project->validateCreation($values); return $valid && $project->create($values); }); $server->register('getProjectById', function ($project_id) use($project) { return $project->getById($project_id); }); $server->register('getProjectByName', function ($name) use($project) { return $project->getByName($name); });
<?php require __DIR__ . '/common.php'; use JsonRPC\Server; $server = new Server(); $server->authentication(array(\Model\Config\get('username') => \Model\Config\get('api_token'))); // Get all feeds $server->register('feed.list', function () { return Model\Feed\get_all(); }); // Get one feed $server->register('feed.info', function ($feed_id) { return Model\Feed\get($feed_id); }); // Add a new feed $server->register('feed.create', function ($url) { $result = Model\Feed\create($url); Model\Config\write_debug(); return $result; }); // Delete a feed $server->register('feed.delete', function ($feed_id) { return Model\Feed\remove($feed_id); }); // Delete all feeds $server->register('feed.delete_all', function () { return Model\Feed\remove_all(); }); // Enable a feed $server->register('feed.enable', function ($feed_id) { return Model\Feed\enable($feed_id);
/** * 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) . ']'; }
<?php require "JsonRPC/src/JsonRPC/Server.php"; use JsonRPC\Server; $server = new Server(); // Procedures registration $server->register('addition', function ($a, $b) { return $a + $b; }); $server->register('random', function ($start, $end) { return mt_rand($start, $end); }); $server->register('hello', function () { return 'world'; }); // Return the response to the client echo $server->execute();
<?php require "JsonRPC/src/JsonRPC/Server.php"; use JsonRPC\Server; use JsonRPC\AuthenticationFailure; function beforeProcedure($username, $password, $class, $method) { if ($login_condition_failed) { throw new AuthenticationFailure('Wrong credentials!'); } } $server = new Server(); $server->authentication(['testuser' => 'testpass']); // Register the before callback $server->before('beforeProcedure'); // Procedures registration $server->register('addition', function ($a, $b) { return $a + $b; }); $server->register('random', function ($start, $end) { return mt_rand($start, $end); }); $server->register('hello', function () { return 'world'; }); // Return the response to the client echo $server->execute();
/** * @expectedException InvalidArgumentException */ public function testNotEnoughArguments() { $server = new Server(); $server->bind('getAllC', new B(), 'getAll'); $server->executeProcedure('getAllC'); }
<?php namespace StemMajzel\MSISDNInfo; require 'MSISDNInfo.php'; require 'vendor/autoload.php'; use JsonRPC\Server as RPCServer; class MSISDNInfoServer extends MSISDNInfo { public function MSISDNLookup($number) { return $this->lookupMSISDN($number); } } $server = new RPCServer(); $server->bind('MSISDNLookup', new MSISDNInfoServer(), 'MSISDNLookup'); echo $server->execute();
use Kanboard\Api\Board; use Kanboard\Api\Column; use Kanboard\Api\Category; use Kanboard\Api\Comment; use Kanboard\Api\File; use Kanboard\Api\Link; use Kanboard\Api\Project; 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));
/** * 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); }