/**
  * @inheritdoc
  */
 public function supports($data, Resource $resource)
 {
     if (!$resource->hasMetadata('dir') || !$resource->hasMetadata('type')) {
         return false;
     }
     return parent::supports($data, $this->convertResource($resource));
 }
示例#2
0
 /**
  * @covers Yosmanyga\Resource\Resource::setMetadata
  * @covers Yosmanyga\Resource\Resource::getMetadata
  * @covers Yosmanyga\Resource\Resource::hasMetadata
  * @covers Yosmanyga\Resource\Resource::setType
  * @covers Yosmanyga\Resource\Resource::getType
  * @covers Yosmanyga\Resource\Resource::hasType
  */
 public function testAccessors()
 {
     $resource = new Resource();
     $resource->setMetadata('foo1', 'bar1');
     $resource->setMetadata('foo2', 'bar2');
     $resource->setType('foo');
     $this->assertTrue($resource->hasMetadata('foo1'));
     $this->assertEquals('bar1', $resource->getMetadata('foo1'));
     $this->assertEquals(array('foo1' => 'bar1', 'foo2' => 'bar2'), $resource->getMetadata());
     $this->assertFalse($resource->hasMetadata('foo3'));
     $this->assertEquals('foo', $resource->getType());
     $this->assertTrue($resource->hasType());
     $resource = new Resource();
     $this->assertFalse($resource->hasType());
 }
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource, Resource $parentResource)
 {
     if ($resource->hasMetadata('file') && 0 === strpos(parse_url($resource->getMetadata('file'), PHP_URL_PATH), '/')) {
         return true;
     }
     return false;
 }
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource, Resource $parentResource)
 {
     if ($resource->hasMetadata('file') && 0 === strpos($resource->getMetadata('file'), '@')) {
         return true;
     }
     return false;
 }
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource)
 {
     if (!$resource->hasMetadata('data')) {
         return false;
     }
     return true;
 }
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource, Resource $parentResource)
 {
     if (!$resource->hasMetadata('dir') || 0 === strpos(parse_url($resource->getMetadata('dir'), PHP_URL_PATH), '/')) {
         return false;
     }
     foreach ($this->firstCharacters as $character) {
         if (0 === strpos($resource->getMetadata('dir'), $character)) {
             return false;
         }
     }
     return true;
 }
示例#7
0
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource)
 {
     if ($resource->hasType()) {
         if ('xml' == $resource->getType()) {
             return true;
         }
         return false;
     }
     if ($resource->hasMetadata('file') && in_array(pathinfo($resource->getMetadata('file'), PATHINFO_EXTENSION), array('xml'))) {
         return true;
     }
     return false;
 }
示例#8
0
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource)
 {
     if ($resource->hasType()) {
         if ('in_memory' == $resource->getType()) {
             return true;
         }
         return false;
     }
     // Assumes that a resource with "data" metadata is an "in_memory" resource
     if ($resource->hasMetadata('data')) {
         return true;
     }
     return false;
 }
示例#9
0
 /**
  * @inheritdoc
  */
 public function supports(Resource $resource)
 {
     if ($resource->hasType()) {
         if ('file' == $resource->getType()) {
             return true;
         }
         return false;
     }
     // Assumes that a resource with "file" metadata is an "file" resource
     if ($resource->hasMetadata('file')) {
         return true;
     }
     return false;
 }
 private function calculateDirVersion(Resource $resource)
 {
     // Adjust finder
     $dir = $resource->getMetadata('dir');
     if (!is_dir($dir)) {
         throw new \InvalidArgumentException(sprintf('Directory "%s" not found.', $dir));
     }
     $this->finder->files()->in($dir);
     if ($resource->hasMetadata('filter')) {
         $this->finder->name($resource->getMetadata('filter'));
     }
     if ($resource->hasMetadata('depth')) {
         $this->finder->depth($resource->getMetadata('depth'));
     } else {
         $this->finder->depth('>= 0');
     }
     $version = array();
     /** @var \SplFileInfo $file */
     foreach ($this->finder->getIterator() as $file) {
         $version[md5($file->getRealPath())] = filemtime($file);
     }
     return $version;
 }
示例#11
0
 /**
  * @inheritdoc
  */
 public function open(Resource $resource)
 {
     $file = $resource->getMetadata('file');
     if (!is_file($file)) {
         throw new \InvalidArgumentException(sprintf('File "%s" not found.', $file));
     }
     try {
         $annotation = $resource->hasMetadata('annotation') ? $resource->getMetadata('annotation') : '';
         $data = $this->getData($file, $annotation);
     } catch (\Exception $e) {
         throw new \InvalidArgumentException($e->getMessage(), 0, $e);
     }
     $this->inMemoryReader = new InMemoryReader();
     $this->inMemoryReader->open(new Resource(array('data' => $data), 'in_memory'));
 }
示例#12
0
 private function prepareFinder()
 {
     if (!isset($this->resource)) {
         throw new \RuntimeException('Resource not set.');
     }
     $dir = $this->resource->getMetadata('dir');
     if (!is_dir($dir)) {
         throw new \InvalidArgumentException(sprintf('Directory "%s" not found.', $dir));
     }
     $this->finder->files()->in($dir);
     if ($this->resource->hasMetadata('filter')) {
         $this->finder->name($this->resource->getMetadata('filter'));
     }
     if ($this->resource->hasMetadata('depth')) {
         $this->finder->depth($this->resource->getMetadata('depth'));
     } else {
         $this->finder->depth('>= 0');
     }
     $this->iterator = $this->finder->getIterator();
     $this->iterator->rewind();
 }