public function testBuilder() { // given $routeMap = new RouteMap(); $req = new Request(); $req->setUrl('/foo/123'); $req->setHttpMethod(Http::METHOD_GET); $req->setProtocol(Http::HTTPS); // when $routeMap->connect('test', RouteBuilder::get()->uri('/foo/:id')->method(Http::METHOD_GET)->command('Fliglio\\Routing.StubResource.getFlub')->protocol(Http::HTTPS)->param('bar', 'baz')->build())->connect(null, RouteBuilder::get()->key('test2')->uri('/foo2/:id')->method(Http::METHOD_GET)->command('Fliglio\\Routing.StubResource.getFlub2')->protocol(Http::HTTPS)->param('bar', 'baz')->build())->connectRoute(RouteBuilder::get()->key('test3')->uri('/foo3/:id')->method(Http::METHOD_GET)->command('Fliglio\\Routing.StubResource.getFlub3')->protocol(Http::HTTPS)->param('bar', 'baz')->build()); // then $route = $routeMap->getRoute($req); $params = $route->getParams(); $this->assertEquals($params, array('id' => 123, 'bar' => 'baz')); $this->assertEquals('Fliglio\\Routing\\StubResource', get_class($route->getResourceInstance())); $this->assertEquals('getFlub', $route->getResourceMethod()); // and $req->setUrl('/foo2/123'); $route = $routeMap->getRoute($req); $this->assertEquals('getFlub2', $route->getResourceMethod()); // and $req->setUrl('/foo3/123'); $route = $routeMap->getRoute($req); $this->assertEquals('getFlub3', $route->getResourceMethod()); }
public function getRoutes() { // Consul $apFactory = new AddressProviderFactory(); // Rabbitmq $rabbitAp = $apFactory->createConsulAddressProvider('rabbitmq'); $rAdd = $rabbitAp->getAddress(); $rConn = new AMQPStreamConnection($rAdd->getHost(), $rAdd->getPort(), "guest", "guest", "/"); // MySQL $mysqlAp = $apFactory->createConsulAddressProvider('mysql'); $mAdd = $mysqlAp->getAddress(); $dsn = sprintf("mysql:host=%s;dbname=borg", $mAdd->getHost()); $db = new \PDO($dsn, 'borg', 'changeme', [\PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8']); $db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION); // Resource Dependencies $http = null; $scanner = new Scanner($http); $dbm = new RaceDbm($db); // Resources $ls = new LifeFormScanner($scanner); $gs = new GroupScanner($scanner); $as = new Assimilation($dbm); // Borg $driver = new AmqpCollectiveDriver($rConn); $coll = new Collective($driver, "borg-demo", $_SERVER['CUBE_DC']); $coll->assimilate($ls); $coll->assimilate($gs); $coll->assimilate($dbm); return [RouteBuilder::get()->uri('/life-form')->resource($ls, 'scan')->method(Http::METHOD_POST)->build(), RouteBuilder::get()->uri('/group')->resource($gs, 'scan')->method(Http::METHOD_POST)->build(), RouteBuilder::get()->uri('/race/:race')->resource($as, 'assimilateRace')->method(Http::METHOD_PUT)->build(), RouteBuilder::get()->uri('/race/:race')->resource($as, 'getRaceStatus')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/borg')->resource($coll, "mux")->method(Http::METHOD_POST)->build()]; }
public function setup() { $this->request = new Request(); $this->request->setHttpMethod(Http::METHOD_GET); $this->context = new Context($this->request, new Response()); $this->routeMap = new RouteMap(); $this->routeMap->connect('patternEx', RouteBuilder::get()->uri('/foo/:id')->command('Fliglio\\Routing.StubResource.getFoo')->method(Http::METHOD_GET)->build())->connect("staticEx", RouteBuilder::get()->uri('/foo')->command('Fliglio\\Routing.StubResource.getFoo')->method(Http::METHOD_GET)->build())->connect("error", RouteBuilder::get()->catchNone()->command('Fliglio\\Routing.StubResource.error')->build())->connect("404", RouteBuilder::get()->catchAll()->command('Fliglio\\Routing.StubResource.dne')->build()); }
public function setup() { $this->request = new Request(); $this->request->setProtocol(Http::HTTP); $this->request->setHttpMethod(Http::METHOD_GET); $this->context = new Context($this->request, new Response()); $this->routeMap = new RouteMap(); $this->routeMap->connect('postEx', RouteBuilder::get()->uri('/foo')->command('Fliglio\\Routing.StubResource.addFoo')->method(Http::METHOD_POST)->build())->connect('ex', RouteBuilder::get()->uri('/foo/:id')->command('Fliglio\\Routing.StubResource.getFoo')->method(Http::METHOD_GET)->build())->connect('ex2', RouteBuilder::get()->uri('/bar/:id')->command('Fliglio\\Routing.StubResourceChild.getFoo')->method(Http::METHOD_GET)->build())->connect('bad', RouteBuilder::get()->uri('/baz/:id')->command('Fliglio\\Routing.StubResource.getFlub')->method(Http::METHOD_GET)->build())->connect('catchAll', RouteBuilder::get()->catchAll()->command('Fliglio\\Routing.StubResource.getCatchAll')->method(Http::METHOD_GET)->build()); }
public function getRoutes() { $rConn = new AMQPStreamConnection('localhost', 5672, "guest", "guest", "/"); $driver = new AmqpCollectiveDriver($rConn); $resource = new TestResource(); $fun = new FunResource(); $shake = new ShakespeareResource(); $mapper = new DefaultMapper($driver); $routing = new RoutingConfiguration("borg-demo"); $coll = new Collective($driver, $mapper, $routing); $coll->assimilate($resource); $coll->assimilate($fun); $coll->assimilate($shake); return [RouteBuilder::get()->uri('/round-trip')->resource($resource, 'roundTrip')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/chan-chan')->resource($resource, 'chanChan')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/generate-numbers')->resource($resource, 'generateNumbers')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/generate-numbers-2')->resource($resource, 'generateNumbersTwo')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/sync')->resource($resource, 'syncEx')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/fibonacci')->resource($fun, 'fibonacci')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/pi')->resource($fun, 'pi')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/prime')->resource($fun, 'prime')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/shakespeare/words')->resource($shake, 'allWords')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/shakespeare/words-sync')->resource($shake, 'allWordsSync')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/borg')->resource($coll, "mux")->method(Http::METHOD_POST)->build()]; }
public function getRoutes() { $resource = $this->getTodoResource(); return [RouteBuilder::get()->uri('/todo')->resource($resource, 'getAll')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/todo/weather')->resource($resource, 'getWeatherAppropriate')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/todo/:id')->resource($resource, 'get')->method(Http::METHOD_GET)->build(), RouteBuilder::get()->uri('/todo')->resource($resource, 'add')->method(Http::METHOD_POST)->build(), RouteBuilder::get()->uri('/todo/:id')->resource($resource, 'update')->method(Http::METHOD_PUT)->build(), RouteBuilder::get()->uri('/todo/:id')->resource($resource, 'delete')->method(Http::METHOD_DELETE)->build()]; }