/** * @param Request|WebRequest $request * @return \watoki\curir\delivery\WebResponse */ public function respond(Request $request) { $this->app->prepare($request); if (!$this->isContainerTarget($request)) { $request = $request->withTarget(Path::fromString('execute'))->withArgument(ExecuteResource::ACTION_ARG, $request->getTarget()->toString()); } return parent::respond($request); }
public static function quickRoot($rootDirectory, $defaultPath = 'index', $namespace = '', Factory $factory = null) { $factory = $factory ?: self::init(); $router = new WebRouter($factory, $rootDirectory, $namespace); $router->setDefaultTarget(CallbackTarget::factory(function (WebRequest $request) use($router, $defaultPath) { return $router->route($request->withTarget(Path::fromString($defaultPath)))->respond(); })); self::quickRoute($router, $factory); }
public function whenIGet_From($path, $resourceClass) { $request = $this->request->withTarget(Path::fromString($path))->withMethod('get'); $stub = new TestDelivererStub($request); $router = new NoneRouter(RespondingTarget::factory($this->factory, $this->factory->getInstance($resourceClass))); $delivery = new WebDelivery($router, $stub, $stub); $stub->onDeliver(function (WebResponse $response) { if ($response instanceof ErrorResponse) { throw $response->getException(); } $this->model = $response->getBody(); }); $delivery->run(); }
public function dispatch(WebRequest $request, Router $router) { $arguments = $request->getArguments(); $request->setTarget($this->target); if ($arguments->isEmpty()) { $arguments->merge($this->arguments); $request->setMethod(WebRequest::METHOD_GET); } else { if ($arguments->has(self::$TARGET_KEY)) { $request->setTarget(Path::fromString($arguments->get(self::$TARGET_KEY))); } if ($arguments->has(WebRequest::$METHOD_KEY)) { $request->setMethod($arguments->get(WebRequest::$METHOD_KEY)); } else { $request->setMethod(WebRequest::METHOD_GET); } } $this->response = $router->route($request)->respond(); if ($this->response->getHeaders()->has(WebResponse::HEADER_LOCATION)) { throw new WrappedRedirection($this->response->getHeaders()->get(WebResponse::HEADER_LOCATION)); } return $request; }
/** * @param string $path * @param array $args * @return Box */ protected function box($path, $args = array()) { return new Box(Path::fromString($path), new Map($args)); }
<?php use spec\watoki\deli\fixtures\TestDelivererStub; use watoki\deli\Delivery; use watoki\deli\Path; use watoki\deli\Request; use watoki\deli\router\NoneRouter; use watoki\deli\target\CallbackTarget; require_once __DIR__ . '/../../vendor/autoload.php'; error_reporting(0); $router = new NoneRouter(CallbackTarget::factory(function () { /** @noinspection PhpUndefinedFunctionInspection */ causeFatalError(); })); $test = new TestDelivererStub(new Request(new Path(), Path::fromString('some/target'))); $test->onDeliver(function ($response) { echo $response; }); $delivery = new Delivery($router, $test, $test); $delivery->run();
/** * @param Request|WebRequest $request * @return \watoki\curir\delivery\WebResponse */ public function respond(Request $request) { $request = $request->withTarget(Path::fromString('execute'))->withArgument(ExecuteResource::ACTION_ARG, $request->getTarget()->toString()); return parent::respond($request); }
public function addPath($pathString, TargetFactory $factory) { $this->add(new PathMatcher(Path::fromString($pathString)), $factory); }
protected function determineTarget($server) { list(, $target) = $this->splitContextAndTarget($server); return Path::fromString(ltrim(urldecode($target), '/')); }
public function givenTheRequestTarget_Is($string) { $this->request->setTarget(Path::fromString($string)); }
/** * @param $path */ public function whenIRoute($path) { $this->target = $this->router->route(new Request(new Path(), Path::fromString($path))); }
public function givenTheRequestHasTheTarget($pathString) { $this->request = $this->request->withTarget(Path::fromString($pathString)); }
public static function fromString($string) { if (!$string) { return new Url(null, null, null, new Path()); } $fragment = null; $fragmentPos = strpos($string, self::FRAGMENT_SEPARATOR); if ($fragmentPos !== false) { $fragment = substr($string, $fragmentPos + 1); $string = substr($string, 0, $fragmentPos); } $parameters = new Map(); $queryPos = strpos($string, self::QUERY_STRING_SEPARATOR); if ($queryPos !== false) { $query = substr($string, $queryPos + 1); $string = substr($string, 0, $queryPos); if ($query) { $parameters = self::parseParameters($query); } } $scheme = null; $schemeSepPos = strpos($string, self::SCHEME_SEPARATOR . self::HOST_PREFIX); if ($schemeSepPos !== false) { $scheme = substr($string, 0, $schemeSepPos); $string = substr($string, $schemeSepPos + 1); } $host = null; $port = null; if (substr($string, 0, 2) == self::HOST_PREFIX) { $string = substr($string, 2); $hostPos = strpos($string, Path::SEPARATOR) ?: strlen($string); $host = substr($string, 0, $hostPos); $string = substr($string, $hostPos); $portPos = strpos($host, self::PORT_SEPARATOR); if ($portPos !== false) { $port = intval(substr($host, $portPos + 1)); $host = substr($host, 0, $portPos); } } if (!$host && !$string) { $path = new Path(); } else { $path = Path::fromString($string); if ($path->isEmpty()) { $path = new Path(array('')); } } return new Url($scheme, $host, $port, $path, $parameters, $fragment); }
public function givenTheTargetPathIs($string) { $this->environment->target = Path::fromString($string); }