Fix exception, when a provided URI is invalid
This commit is contained in:
parent
49819b64db
commit
7b1b3fe8cf
|
@ -25,6 +25,7 @@ use Friendica\BaseFactory;
|
||||||
use Friendica\Capabilities\ICanCreateFromTableRow;
|
use Friendica\Capabilities\ICanCreateFromTableRow;
|
||||||
use Friendica\Content\Post\Entity;
|
use Friendica\Content\Post\Entity;
|
||||||
use Friendica\Network;
|
use Friendica\Network;
|
||||||
|
use Friendica\Util\Network as UtilNetwork;
|
||||||
use GuzzleHttp\Psr7\Uri;
|
use GuzzleHttp\Psr7\Uri;
|
||||||
use Psr\Log\LoggerInterface;
|
use Psr\Log\LoggerInterface;
|
||||||
use stdClass;
|
use stdClass;
|
||||||
|
@ -48,24 +49,24 @@ class PostMedia extends BaseFactory implements ICanCreateFromTableRow
|
||||||
{
|
{
|
||||||
return new Entity\PostMedia(
|
return new Entity\PostMedia(
|
||||||
$row['uri-id'],
|
$row['uri-id'],
|
||||||
$row['url'] ? new Uri($row['url']) : null,
|
UtilNetwork::isValidUri($row['url']) ? new Uri($row['url']) : '',
|
||||||
$row['type'],
|
$row['type'],
|
||||||
$this->mimeTypeFactory->createFromContentType($row['mimetype']),
|
$this->mimeTypeFactory->createFromContentType($row['mimetype']),
|
||||||
$row['media-uri-id'],
|
$row['media-uri-id'],
|
||||||
$row['width'],
|
$row['width'],
|
||||||
$row['height'],
|
$row['height'],
|
||||||
$row['size'],
|
$row['size'],
|
||||||
$row['preview'] ? new Uri($row['preview']) : null,
|
UtilNetwork::isValidUri($row['preview']) ? new Uri($row['preview']) : null,
|
||||||
$row['preview-width'],
|
$row['preview-width'],
|
||||||
$row['preview-height'],
|
$row['preview-height'],
|
||||||
$row['description'],
|
$row['description'],
|
||||||
$row['name'],
|
$row['name'],
|
||||||
$row['author-url'] ? new Uri($row['author-url']) : null,
|
UtilNetwork::isValidUri($row['author-url']) ? new Uri($row['author-url']) : null,
|
||||||
$row['author-name'],
|
$row['author-name'],
|
||||||
$row['author-image'] ? new Uri($row['author-image']) : null,
|
UtilNetwork::isValidUri($row['author-image']) ? new Uri($row['author-image']) : null,
|
||||||
$row['publisher-url'] ? new Uri($row['publisher-url']) : null,
|
UtilNetwork::isValidUri($row['publisher-url']) ? new Uri($row['publisher-url']) : null,
|
||||||
$row['publisher-name'],
|
$row['publisher-name'],
|
||||||
$row['publisher-image'] ? new Uri($row['publisher-image']) : null,
|
UtilNetwork::isValidUri($row['publisher-image']) ? new Uri($row['publisher-image']) : null,
|
||||||
$row['blurhash'],
|
$row['blurhash'],
|
||||||
$row['id']
|
$row['id']
|
||||||
);
|
);
|
||||||
|
|
|
@ -658,4 +658,25 @@ class Network
|
||||||
$scheme = parse_url($url, PHP_URL_SCHEME);
|
$scheme = parse_url($url, PHP_URL_SCHEME);
|
||||||
return !empty($scheme) && in_array($scheme, ['http', 'https']) && parse_url($url, PHP_URL_HOST);
|
return !empty($scheme) && in_array($scheme, ['http', 'https']) && parse_url($url, PHP_URL_HOST);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a provided URI is valid
|
||||||
|
*
|
||||||
|
* @param string|null $uri
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public static function isValidUri(string $uri = null): bool
|
||||||
|
{
|
||||||
|
if (empty($uri)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
new Uri($uri);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
Logger::debug('Invalid URI', ['code' => $e->getCode(), 'message' => $e->getMessage(), 'uri' => $uri]);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user