Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
91.67% |
11 / 12 |
AbstractXpathProvider | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
5.01 | |
91.67% |
11 / 12 |
__construct | |
0.00% |
0 / 1 |
5.01 | |
91.67% |
11 / 12 |
<?php | |
namespace Alxvng\QATracker\DataProvider; | |
use RuntimeException; | |
use SimpleXMLElement; | |
use Symfony\Component\Filesystem\Filesystem; | |
abstract class AbstractXpathProvider implements DataProviderInterface | |
{ | |
public const MIME_TYPES = [ | |
'application/xml', | |
'text/xml', | |
'text/plain', | |
]; | |
public const NS_PREFIX = 'prefix'; | |
public const NS_VALUE = 'namespace'; | |
protected string $inputFilePath; | |
protected string $xpathQuery; | |
protected array $namespaceParameters; | |
/** | |
* XpathProvider constructor. | |
* | |
* @param string $baseDir | |
* @param string $inputFilePath | |
* @param string $xpathQuery | |
* @param array $namespaceParameters | |
*/ | |
public function __construct(string $baseDir, string $inputFilePath, string $xpathQuery, array $namespaceParameters = []) | |
{ | |
$fs = new Filesystem(); | |
$this->inputFilePath = $fs->isAbsolutePath($inputFilePath) ? $inputFilePath : $baseDir.'/'.$inputFilePath; | |
$this->xpathQuery = $xpathQuery; | |
$this->namespaceParameters = $namespaceParameters; | |
if (!file_exists($this->inputFilePath)) { | |
throw new RuntimeException(sprintf('Unable to find file at %s', $this->inputFilePath)); | |
} | |
if (!in_array(mime_content_type($this->inputFilePath), static::MIME_TYPES, true)) { | |
throw new RuntimeException(sprintf('The file %s (%s) must have one the mime types : %s', $this->inputFilePath, mime_content_type($this->inputFilePath), implode(',', static::MIME_TYPES))); | |
} | |
try { | |
$xml = new SimpleXMLElement(file_get_contents($this->inputFilePath)); | |
} catch (\Exception $e) { | |
throw new \RuntimeException(sprintf('The file %s seems does not contain valid xml data', $this->inputFilePath)); | |
} | |
} | |
} |