12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Downloadable\Model\Sample;
- use Magento\Downloadable\Api\Data\SampleInterface;
- use Magento\Downloadable\Model\File\ContentValidator as FileContentValidator;
- use Magento\Framework\Exception\InputException;
- use Magento\Framework\Url\Validator as UrlValidator;
- class ContentValidator
- {
- /**
- * @var UrlValidator
- */
- protected $urlValidator;
- /**
- * @var FileContentValidator
- */
- protected $fileContentValidator;
- /**
- * @param FileContentValidator $fileContentValidator
- * @param UrlValidator $urlValidator
- */
- public function __construct(
- FileContentValidator $fileContentValidator,
- UrlValidator $urlValidator
- ) {
- $this->fileContentValidator = $fileContentValidator;
- $this->urlValidator = $urlValidator;
- }
- /**
- * Check if sample content is valid
- *
- * @param SampleInterface $sample
- * @param bool $validateSampleContent
- * @return bool
- * @throws InputException
- */
- public function isValid(SampleInterface $sample, $validateSampleContent = true)
- {
- if (filter_var($sample->getSortOrder(), FILTER_VALIDATE_INT) === false || $sample->getSortOrder() < 0) {
- throw new InputException(__('Sort order must be a positive integer.'));
- }
- if ($validateSampleContent) {
- $this->validateSampleResource($sample);
- }
- return true;
- }
- /**
- * Validate sample resource (file or URL)
- *
- * @param SampleInterface $sample
- * @throws InputException
- * @return void
- */
- protected function validateSampleResource(SampleInterface $sample)
- {
- $sampleFile = $sample->getSampleFileContent();
- if ($sample->getSampleType() == 'file'
- && (!$sampleFile || !$this->fileContentValidator->isValid($sampleFile))
- ) {
- throw new InputException(__('Provided file content must be valid base64 encoded data.'));
- }
- if ($sample->getSampleType() == 'url'
- && !$this->urlValidator->isValid($sample->getSampleUrl())
- ) {
- throw new InputException(__('Sample URL must have valid format.'));
- }
- }
- }
|