function __construct(Server $server, StorageInterface $storage)
 {
     $this->_server = $server;
     $this->_storage = $storage;
     $this->_basketService = new BasketService($storage);
     $server->attach($this);
 }
Example #2
0
 /**
  * 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;
 }
Example #3
0
 /**
  * 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;
     }
 }
Example #5
0
 /**
  * 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);
 }
Example #6
0
<?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());
 }
Example #8
0
 /**
  *
  */
 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);
 }
Example #9
0
$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);
});
Example #10
0
<?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);
Example #11
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) . ']';
 }
Example #12
0
<?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();
Example #14
0
 /**
  * @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();
Example #16
0
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));
Example #17
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);
 }