[Translation] Loader should only load local files
This commit is contained in:
parent
50c47aa687
commit
ae0685a314
@ -35,6 +35,10 @@ class CsvFileLoader extends ArrayLoader implements LoaderInterface
|
||||
{
|
||||
$messages = array();
|
||||
|
||||
if (!stream_is_local($resource)) {
|
||||
throw new \InvalidArgumentException(sprintf('This is not a local file "%s".', $resource));
|
||||
}
|
||||
|
||||
try {
|
||||
$file = new \SplFileObject($resource, 'rb');
|
||||
} catch(\RuntimeException $e) {
|
||||
|
@ -29,6 +29,10 @@ class PhpFileLoader extends ArrayLoader implements LoaderInterface
|
||||
*/
|
||||
public function load($resource, $locale, $domain = 'messages')
|
||||
{
|
||||
if (!stream_is_local($resource)) {
|
||||
throw new \InvalidArgumentException(sprintf('This is not a local file "%s".', $resource));
|
||||
}
|
||||
|
||||
$messages = require($resource);
|
||||
|
||||
$catalogue = parent::load($messages, $locale, $domain);
|
||||
|
@ -30,6 +30,10 @@ class XliffFileLoader implements LoaderInterface
|
||||
*/
|
||||
public function load($resource, $locale, $domain = 'messages')
|
||||
{
|
||||
if (!stream_is_local($resource)) {
|
||||
throw new \InvalidArgumentException(sprintf('This is not a local file "%s".', $resource));
|
||||
}
|
||||
|
||||
$xml = $this->parseFile($resource);
|
||||
$xml->registerXPathNamespace('xliff', 'urn:oasis:names:tc:xliff:document:1.2');
|
||||
|
||||
|
@ -47,4 +47,14 @@ class CsvFileLoaderTest extends \PHPUnit_Framework_TestCase
|
||||
$resource = __DIR__.'/../fixtures/not-exists.csv';
|
||||
$loader->load($resource, 'en', 'domain1');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testLoadThrowsAnExceptionIfFileNotLocal()
|
||||
{
|
||||
$loader = new CsvFileLoader();
|
||||
$resource = 'http://example.com/resources.csv';
|
||||
$loader->load($resource, 'en', 'domain1');
|
||||
}
|
||||
}
|
||||
|
@ -26,4 +26,14 @@ class PhpFileLoaderTest extends \PHPUnit_Framework_TestCase
|
||||
$this->assertEquals('en', $catalogue->getLocale());
|
||||
$this->assertEquals(array(new FileResource($resource)), $catalogue->getResources());
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testLoadThrowsAnExceptionIfFileNotLocal()
|
||||
{
|
||||
$loader = new PhpFileLoader();
|
||||
$resource = 'http://example.com/resources.php';
|
||||
$loader->load($resource, 'en', 'domain1');
|
||||
}
|
||||
}
|
||||
|
@ -44,4 +44,14 @@ class XliffFileLoaderTest extends \PHPUnit_Framework_TestCase
|
||||
$loader = new XliffFileLoader();
|
||||
$catalogue = $loader->load(__DIR__.'/../fixtures/non-valid.xliff', 'en', 'domain1');
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException \InvalidArgumentException
|
||||
*/
|
||||
public function testLoadThrowsAnExceptionIfFileNotLocal()
|
||||
{
|
||||
$loader = new XliffFileLoader();
|
||||
$resource = 'http://example.com/resources.xliff';
|
||||
$loader->load($resource, 'en', 'domain1');
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user