function testCalling() { $manager = new Manager(); $tid = 1; $manager->getConfiguration()->set('Cti\\Direct\\Service', 'list', array('Common\\Api')); $response = $manager->call('Cti\\Direct\\Service', 'handle', array('request' => Request::create((object) array('action' => 'Api', 'method' => 'greet', 'tid' => $tid, 'type' => 'type', 'data' => array('Cti'))))); $this->assertSame($response->getResult(), "Hello, Cti!"); // test cache by tid $responseWithSameTid = $manager->call('Cti\\Direct\\Service', 'handle', array('request' => Request::create((object) array('action' => 'Api', 'method' => 'anotherGreet', 'tid' => $tid, 'type' => 'type', 'data' => array('Cti2'))))); $this->assertSame($response, $responseWithSameTid); // test exception $response = $manager->call('Cti\\Direct\\Service', 'handle', array('request' => Request::create((object) array('action' => 'Api', 'method' => 'exception', 'tid' => ++$tid, 'type' => 'type', 'data' => array('message'))))); $this->assertSame($response->getType(), 'exception'); $this->assertSame($response->getResult(), 'message'); $this->assertNotNull($response->getFile()); $this->assertNotNull($response->getLine()); // test incorrect action $response = $manager->call('Cti\\Direct\\Service', 'handle', array('request' => Request::create((object) array('action' => 'no_action', 'method' => 'no_method', 'tid' => ++$tid, 'type' => 'type', 'data' => array())))); $this->assertSame($response->getType(), 'exception'); $this->assertContains("Action no_action not found", $response->getResult()); // test incorrect method $response = $manager->call('Cti\\Direct\\Service', 'handle', array('request' => Request::create((object) array('action' => 'Api', 'method' => 'no_method', 'tid' => ++$tid, 'type' => 'type', 'data' => array())))); $this->assertSame($response->getType(), 'exception'); $this->assertContains("Method no_method not found", $response->getResult()); }
function post(Manager $manager, Service $service) { $data = json_decode($GLOBALS['HTTP_RAW_POST_DATA']); if (!is_array($data)) { $response = $service->handle($manager, Request::create($data)); } else { $response = array(); foreach ($data as $request) { $response[] = $service->handle($manager, Request::create($request)); } } header('Content-type: text/javascript'); echo json_encode($response); }