/** * @test * @profile */ public function testDispatch() { split_time('reset'); Rest_Test_Unit_Case_Resource_Foo::serve('resource/foo'); split_time('Invoke Rest_Test_Unit_Case_Resource_Foo::serve(resource/foo)'); Http_Scriptlet_Context::push(new Http_Scriptlet_Context(Environment::uriComponents())); split_time('Initialize Components\\Http_Scriptlet_Context'); $uri = Uri::valueOf(Environment::uriComponents('rest', 'resource', 'foo', 'poke', '1234.json')); split_time("Invoke Uri::valueOf({$uri})"); ob_start(); split_time('reset'); Http_Scriptlet_Context::current()->dispatch($uri, Http_Scriptlet_Request::METHOD_GET); split_time("Invoke Components\\Http_Scriptlet_Context\$dispatch([{$uri}], GET)"); $result = ob_get_clean(); assertEquals(json_encode(true), $result); split_time('reset'); $uri = Uri::valueOf(Environment::uriComponents('rest', 'resource', 'foo', 'poke', '1234.json')); $uri->setQueryParam('log', 'false'); split_time("Invoke Uri::valueOf({$uri})"); ob_start(); split_time('reset'); Http_Scriptlet_Context::current()->dispatch($uri, Http_Scriptlet_Request::METHOD_GET); split_time("Invoke Components\\Http_Scriptlet_Context\$dispatch([{$uri}], GET)"); $result = ob_get_clean(); assertEquals(json_encode(false), $result); }
/** * @param \Components\Io_Image $image_ * * @return \Components\Uri */ public static function uri(Io_Image $image_) { $path = $image_->getPathAsString(); $extension = $image_->getMimetype()->fileExtension(); $key = md5($path); Cache::set($key, $path); return Uri::valueOf(Environment::uriComponents('ui', 'image', "{$key}.{$extension}")); }
public function configure(array $resourceIdentifiers_) { foreach ($resourceIdentifiers_ as $resourceIdentifier) { $uri = Uri::valueOf($resourceIdentifier); $resource = $uri->getResource(); if (!$resource instanceof Persistence_Resource) { throw new Exception_IllegalArgument('persistence/resource/pool', 'Resource for given identifier is not a valid persistence resource.'); } $this->m_read[] = $resource; if (!$resource->isReadOnly()) { $this->m_write[] = $resource; } } $this->resource = $this->m_write[rand(0, count($this->m_write) - 1)]; $this->resourceReadOnly = $this->m_read[rand(0, count($this->m_read) - 1)]; if (!$this->resource) { $this->resource = $this->resourceReadOnly; } }
private function dispatchImpl(Uri $uri_, $method_ = null) { $this->m_contextUri = Uri::valueOf($this->m_contextRoot); $this->m_request = new Http_Scriptlet_Request(clone $uri_); if (null !== $method_) { $this->m_request->setMethod($method_); } $mimeType = $this->m_request->getMimetype(); header('Content-Type: ' . $mimeType->name() . ';charset=' . $mimeType->charset()->name(), true, 200); $this->m_response = new Http_Scriptlet_Response($mimeType); if ('/' !== $this->m_contextRoot) { $contextRoot = rtrim($this->m_contextRoot, '/'); $contextRoot = ltrim($contextRoot, '/'); $contextRootSegments = explode('/', $contextRoot); while (count($contextRootSegments)) { if (array_shift($contextRootSegments) !== $uri_->shiftPathParam()) { throw new Http_Exception('http/scriptlet/context', null, Http_Exception::NOT_FOUND); } } } if (!($component = $uri_->shiftPathParam())) { throw new Http_Exception('http/scriptlet/context', null, Http_Exception::NOT_FOUND); } $this->m_contextUri->pushPathParam($component); if ($this->m_contextUri->hasFileExtension()) { Config::get($this->m_contextUri->getFilename(true)); } else { Config::get($component); } Http_Scriptlet::dispatch($this, $uri_); }
/** * @param string $path_ * @param integer $width_ * @param integer $height_ * * @return \Components\Uri */ public static function imageUri($route_, Io_Path $path_, $width_ = null, $height_ = null) { $uri = Uri::valueOf(Http_Router::uri($route_)); $uri->pushPathParam(\str\encodeBase64Url(json_encode([(string) Io::path(Environment::pathWeb())->getRelativePath($path_), $width_, $height_])) . '.' . Io::fileExtension($path_)); return $uri; }
/** * @return \Components\Uri */ public function toUri() { return Uri::valueOf($this->m_path); }