Psalm: Fix typings

Signed-off-by: Marcel Klehr <mklehr@gmx.net>
This commit is contained in:
Marcel Klehr 2021-01-20 17:38:11 +01:00
parent 130635a40e
commit e02b440909
23 changed files with 140 additions and 120 deletions

View File

@ -28,10 +28,16 @@
"optimize-autoloader": true, "optimize-autoloader": true,
"classmap-authoritative": true "classmap-authoritative": true
}, },
"autoload": {
"psr-4": {
"OCA\\Bookmarks\\": "lib/"
}
},
"scripts": { "scripts": {
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l", "lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
"cs:check": "php-cs-fixer fix --dry-run --diff", "cs:check": "php-cs-fixer fix --dry-run --diff",
"cs:fix": "php-cs-fixer fix", "cs:fix": "php-cs-fixer fix",
"psalm": "psalm --output-format=github --no-progress --show-info=true" "psalm": "psalm --output-format=github --no-progress --no-cache",
"psalm-ui": "psalm --no-cache"
} }
} }

View File

@ -236,7 +236,7 @@ class BookmarkController extends ApiController {
/** /**
* @param int $page * @param int $page
* @param null $tags * @param string[] $tags
* @param string $conjunction * @param string $conjunction
* @param string $sortby * @param string $sortby
* @param array $search * @param array $search

View File

@ -13,25 +13,24 @@ use OCP\AppFramework\Db\Entity;
* Class Bookmark * Class Bookmark
* *
* @package OCA\Bookmarks\Db * @package OCA\Bookmarks\Db
* @method getUrl * @method string getUrl()
* @method setUrl(string $url) * @method setUrl(string $url)
* @method getTitle * @method string getTitle()
* @method setTitle(string $title) * @method string getDescription()
* @method getDescription
* @method setDescription(string $description) * @method setDescription(string $description)
* @method getLastmodified * @method int getLastmodified()
* @method setLastmodified(int $lastmodified) * @method setLastmodified(int $lastmodified)
* @method getAdded * @method int getAdded()
* @method setAdded(int $added) * @method setAdded(int $added)
* @method getClickcount * @method int getClickcount
* @method setClickcount(int $count) * @method setClickcount(int $count)
* @method getLastPreview * @method int getLastPreview()
* @method setLastPreview(int $lastpreview) * @method setLastPreview(int $lastpreview)
* @method getAvailable * @method bool getAvailable()
* @method setAvailable(boolean $available) * @method setAvailable(boolean $available)
* @method getArchivedFile * @method int getArchivedFile()
* @method setArchivedFile(int $fileId) * @method setArchivedFile(int $fileId)
* @method getUserId * @method string getUserId()
* @method setUserId(string $userId) * @method setUserId(string $userId)
*/ */
class Bookmark extends Entity { class Bookmark extends Entity {
@ -94,6 +93,6 @@ class Bookmark extends Entity {
if (mb_strlen($title) > 255) { if (mb_strlen($title) > 255) {
$title = mb_substr($title, 0, 254) . '…'; $title = mb_substr($title, 0, 254) . '…';
} }
parent::setTitle($title); $this->setter('title', [$title]);
} }
} }

View File

@ -197,15 +197,9 @@ class BookmarkMapper extends QBMapper {
$qb $qb
->from('bookmarks', 'b') ->from('bookmarks', 'b')
->leftJoin('b', 'bookmarks_tree', 'tr', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 'tr', 'tr.id = b.id AND tr.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
$qb->expr()->eq('tr.id', 'b.id'),
$qb->expr()->eq('tr.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
))
->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id')) ->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id'))
->leftJoin('tr', 'bookmarks_tree', 'tr2', $qb->expr()->andX( ->leftJoin('tr', 'bookmarks_tree', 'tr2', 'tr2.id = tr.parent_folder AND tr2.type = '. $qb->createPositionalParameter(TreeMapper::TYPE_FOLDER))
$qb->expr()->eq('tr2.id', 'tr.parent_folder'),
$qb->expr()->eq('tr2.type', $qb->createPositionalParameter(TreeMapper::TYPE_FOLDER))
))
->leftJoin('tr2', 'bookmarks_shared_folders', 'sf2', $qb->expr()->eq('tr2.parent_folder', 'sf.folder_id')) ->leftJoin('tr2', 'bookmarks_shared_folders', 'sf2', $qb->expr()->eq('tr2.parent_folder', 'sf.folder_id'))
->where( ->where(
$qb->expr()->orX( $qb->expr()->orX(
@ -394,10 +388,7 @@ class BookmarkMapper extends QBMapper {
$qb $qb
->from('bookmarks', 'b') ->from('bookmarks', 'b')
->leftJoin('b', 'bookmarks_tree', 'tr', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 'tr', 'b.id = tr.id AND tr.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
$qb->expr()->eq('b.id', 'tr.id'),
$qb->expr()->eq('tr.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
))
->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id')) ->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id'))
->where($qb->expr()->orX( ->where($qb->expr()->orX(
$qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId)), $qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId)),
@ -418,10 +409,7 @@ class BookmarkMapper extends QBMapper {
$qb $qb
->from('bookmarks', 'b') ->from('bookmarks', 'b')
->leftJoin('b', 'bookmarks_tree', 'tr', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 'tr', 'b.id = tr.id AND tr.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
$qb->expr()->eq('b.id', 'tr.id'),
$qb->expr()->eq('tr.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
))
->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id')) ->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id'))
->where($qb->expr()->orX( ->where($qb->expr()->orX(
$qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId)), $qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId)),
@ -463,14 +451,8 @@ class BookmarkMapper extends QBMapper {
$qb $qb
->from('bookmarks', 'b') ->from('bookmarks', 'b')
->leftJoin('b', 'bookmarks_tree', 'tr', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 'tr', 'tr.id = b.id AND tr.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
$qb->expr()->eq('tr.id', 'b.id'), ->leftJoin('tr', 'bookmarks_tree', 'tr2', 'tr2.id = tr.parent_folder AND tr2.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_FOLDER))
$qb->expr()->eq('tr.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
))
->leftJoin('tr', 'bookmarks_tree', 'tr2', $qb->expr()->andX(
$qb->expr()->eq('tr2.id', 'tr.parent_folder'),
$qb->expr()->eq('tr2.type', $qb->createPositionalParameter(TreeMapper::TYPE_FOLDER))
))
->where( ->where(
$qb->expr()->orX( $qb->expr()->orX(
$qb->expr()->eq('tr.parent_folder', $qb->createPositionalParameter($publicFolder->getFolderId(), IQueryBuilder::PARAM_INT)), $qb->expr()->eq('tr.parent_folder', $qb->createPositionalParameter($publicFolder->getFolderId(), IQueryBuilder::PARAM_INT)),
@ -635,10 +617,7 @@ class BookmarkMapper extends QBMapper {
* @param IQueryBuilder $qb * @param IQueryBuilder $qb
*/ */
private function _selectFolders(IQueryBuilder $qb): void { private function _selectFolders(IQueryBuilder $qb): void {
$qb->leftJoin('b', 'bookmarks_tree', 'tree', $qb->expr()->andX( $qb->leftJoin('b', 'bookmarks_tree', 'tree', 'b.id =tree.id AND tree.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK));
$qb->expr()->eq('b.id', 'tree.id'),
$qb->expr()->eq('tree.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
));
if ($this->getDbType() === 'pgsql') { if ($this->getDbType() === 'pgsql') {
$folders = $qb->createFunction('array_to_string(array_agg(' . $qb->getColumnName('tree.parent_folder') . "), ',')"); $folders = $qb->createFunction('array_to_string(array_agg(' . $qb->getColumnName('tree.parent_folder') . "), ',')");
} else { } else {

View File

@ -13,9 +13,9 @@ use OCP\AppFramework\Db\Entity;
* Class Folder * Class Folder
* *
* @package OCA\Bookmarks\Db * @package OCA\Bookmarks\Db
* @method getTitle() * @method string getTitle()
* @method setTitle(string $title) * @method setTitle(string $title)
* @method getUserId * @method string getUserId()
* @method setUserId(string $userId) * @method setUserId(string $userId)
*/ */
class Folder extends Entity { class Folder extends Entity {
@ -27,10 +27,6 @@ class Folder extends Entity {
* @var string * @var string
*/ */
protected $userId; protected $userId;
/**
* @var int
*/
protected $index;
public static $columns = ['id', 'title', 'user_id']; public static $columns = ['id', 'title', 'user_id'];

View File

@ -14,14 +14,19 @@ use OCP\AppFramework\Db\Entity;
* *
* @package OCA\Bookmarks\Db * @package OCA\Bookmarks\Db
* *
* @method getFolderId() * @method string getId()
* @method int getFolderId()
* @method setFolderId(int $folderId) * @method setFolderId(int $folderId)
* @method getDescription * @method string getDescription()
* @method setDescription(string $description) * @method setDescription(string $description)
* @method getCreatedAt * @method int getCreatedAt()
* @method setCreatedAt(int $createdAt) * @method setCreatedAt(int $createdAt)
*/ */
class PublicFolder extends Entity { class PublicFolder extends Entity {
/**
* @var string
*/
public $id;
protected $folderId; protected $folderId;
protected $description; protected $description;
protected $createdAt; protected $createdAt;

View File

@ -14,19 +14,19 @@ use OCP\AppFramework\Db\Entity;
* *
* @package OCA\Bookmarks\Db * @package OCA\Bookmarks\Db
* *
* @method getFolderId * @method int getFolderId()
* @method setFolderId(int $folderId) * @method setFolderId(int $folderId)
* @method getOwner * @method string getOwner()
* @method setOwner(string $owner) * @method setOwner(string $owner)
* @method getParticipant * @method string getParticipant
* @method setParticipant(string $participant) * @method setParticipant(string $participant)
* @method getType * @method string getType()
* @method setType(string $type) * @method setType(string $type)
* @method getCanWrite * @method bool getCanWrite()
* @method setCanWrite(bool $canWrite) * @method setCanWrite(bool $canWrite)
* @method getCanShare * @method bool getCanShare()
* @method setCanShare(bool $canShare) * @method setCanShare(bool $canShare)
* @method getCreatedAt * @method int getCreatedAt()
* @method setCreatedAt(int $createdAt) * @method setCreatedAt(int $createdAt)
*/ */
class Share extends Entity { class Share extends Entity {

View File

@ -14,12 +14,12 @@ use OCP\AppFramework\Db\Entity;
* *
* @package OCA\Bookmarks\Db * @package OCA\Bookmarks\Db
* *
* @method getShareId * @method int getShareId()
* @method setFolderId(int $shareId) * @method setFolderId(int $shareId)
* @method getFolderId() * @method int getFolderId()
* @method getUserId * @method string getUserId()
* @method setUserId(string $userId) * @method setUserId(string $userId)
* @method getTitle * @method string getTitle()
* @method setTitle(string $title) * @method setTitle(string $title)
*/ */
class SharedFolder extends Entity { class SharedFolder extends Entity {

View File

@ -44,10 +44,7 @@ class TagMapper {
->selectAlias($qb->createFunction('COUNT(DISTINCT ' . $qb->getColumnName('t.bookmark_id') . ')'), 'count') ->selectAlias($qb->createFunction('COUNT(DISTINCT ' . $qb->getColumnName('t.bookmark_id') . ')'), 'count')
->from('bookmarks_tags', 't') ->from('bookmarks_tags', 't')
->innerJoin('t', 'bookmarks', 'b', $qb->expr()->eq('b.id', 't.bookmark_id')) ->innerJoin('t', 'bookmarks', 'b', $qb->expr()->eq('b.id', 't.bookmark_id'))
->leftJoin('b', 'bookmarks_tree', 'tr', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 'tr', 'b.id = tr.id AND tr.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
$qb->expr()->eq('b.id', 'tr.id'),
$qb->expr()->eq('tr.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
))
->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id')) ->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id'))
->where($qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId))) ->where($qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId)))
->orWhere($qb->expr()->andX( ->orWhere($qb->expr()->andX(
@ -70,10 +67,7 @@ class TagMapper {
->select('t.tag') ->select('t.tag')
->from('bookmarks_tags', 't') ->from('bookmarks_tags', 't')
->innerJoin('t', 'bookmarks', 'b', $qb->expr()->eq('b.id', 't.bookmark_id')) ->innerJoin('t', 'bookmarks', 'b', $qb->expr()->eq('b.id', 't.bookmark_id'))
->leftJoin('b', 'bookmarks_tree', 'tr', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 'tr', 'b.id = tr.id AND tr.type = '.$qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
$qb->expr()->eq('b.id', 'tr.id'),
$qb->expr()->eq('tr.type', $qb->createPositionalParameter(TreeMapper::TYPE_BOOKMARK))
))
->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id')) ->leftJoin('tr', 'bookmarks_shared_folders', 'sf', $qb->expr()->eq('tr.parent_folder', 'sf.folder_id'))
->where($qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId))) ->where($qb->expr()->eq('b.user_id', $qb->createPositionalParameter($userId)))
->orWhere($qb->expr()->andX( ->orWhere($qb->expr()->andX(

View File

@ -388,10 +388,7 @@ class TreeMapper extends QBMapper {
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
$qb->select('b.id') $qb->select('b.id')
->from('bookmarks', 'b') ->from('bookmarks', 'b')
->leftJoin('b', 'bookmarks_tree', 't', $qb->expr()->andX( ->leftJoin('b', 'bookmarks_tree', 't', 'b.id = t.id AND t.type = '.$qb->createPositionalParameter(self::TYPE_BOOKMARK))
$qb->expr()->eq('b.id', 't.id'),
$qb->expr()->eq('t.type', $qb->createPositionalParameter(self::TYPE_BOOKMARK))
))
->where($qb->expr()->isNull('t.id')); ->where($qb->expr()->isNull('t.id'));
$orphanedBookmarks = $qb->execute(); $orphanedBookmarks = $qb->execute();
while ($bookmark = $orphanedBookmarks->fetchColumn()) { while ($bookmark = $orphanedBookmarks->fetchColumn()) {

View File

@ -39,10 +39,7 @@ class DeduplicateSharedFoldersRepairStep implements IRepairStep {
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
$qb->select('p1.id') $qb->select('p1.id')
->from('bookmarks_shared_folders', 'p1') ->from('bookmarks_shared_folders', 'p1')
->leftJoin('p1', 'bookmarks_shared_folders', 'p2', $qb->expr()->andX( ->leftJoin('p1', 'bookmarks_shared_folders', 'p2', 'p1.folder_id = p2.folder_id AND p1.user_id = p2.user_id')
$qb->expr()->eq('p1.folder_id', 'p2.folder_id'),
$qb->expr()->eq('p1.user_id', 'p2.user_id')
))
->where($qb->expr()->lt('p2.id', 'p1.id')); ->where($qb->expr()->lt('p2.id', 'p1.id'));
$duplicateSharedFolders = $qb->execute(); $duplicateSharedFolders = $qb->execute();
$i = 0; $i = 0;

View File

@ -102,7 +102,7 @@ class Version000014000Date20181029094721 extends SimpleMigrationStep {
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
$qb $qb
->update('bookmarks_folders_bookmarks') ->update('bookmarks_folders_bookmarks')
->set(['index' => $qb->createPositionalParameter($i)]) ->set('index', $qb->createPositionalParameter($i))
->where($qb->expr()->eq('bookmark_id', $qb->createPositionalParameter($child['id']))) ->where($qb->expr()->eq('bookmark_id', $qb->createPositionalParameter($child['id'])))
->andWhere($qb->expr()->eq('folder_id', $qb->createPositionalParameter($folder))); ->andWhere($qb->expr()->eq('folder_id', $qb->createPositionalParameter($folder)));
$qb->execute(); $qb->execute();
@ -110,7 +110,7 @@ class Version000014000Date20181029094721 extends SimpleMigrationStep {
$qb = $this->db->getQueryBuilder(); $qb = $this->db->getQueryBuilder();
$qb $qb
->update('bookmarks_folders') ->update('bookmarks_folders')
->set(['index' => $qb->createPositionalParameter($i)]) ->set('index', $qb->createPositionalParameter($i))
->where($qb->expr()->eq('id', $qb->createPositionalParameter($child['id']))) ->where($qb->expr()->eq('id', $qb->createPositionalParameter($child['id'])))
->andWhere($qb->expr()->eq('parent_folder', $qb->createPositionalParameter($folder))); ->andWhere($qb->expr()->eq('parent_folder', $qb->createPositionalParameter($folder)));
$qb->execute(); $qb->execute();

View File

@ -97,13 +97,13 @@ class QueryParameters {
/** /**
* @param string|null $default * @param string|null $default
* @param array|null $columns * @param array|null $columns
* @return string * @return string|null
*/ */
public function getSortBy(string $default = null, array $columns = null): string { public function getSortBy(string $default = null, array $columns = null): ?string {
if (isset($default) && !isset($this->sortBy)) { if (isset($default) && !isset($this->sortBy)) {
return $default; return $default;
} }
if (isset($columns) && !in_array($this->sortBy, $columns, true)) { if (isset($default, $columns) && !in_array($this->sortBy, $columns, true)) {
return $default; return $default;
} }
return $this->sortBy; return $this->sortBy;

View File

@ -249,13 +249,15 @@ class BookmarksParser {
*/ */
private function getAttributes(DOMNode $node): array { private function getAttributes(DOMNode $node): array {
$attributes = []; $attributes = [];
$length = $node->attributes->length; if ($node->attributes) {
for ($i = 0; $i < $length; ++$i) { $length = $node->attributes->length;
$item = $node->attributes->item($i); for ($i = 0; $i < $length; ++$i) {
if ($item === null) { $item = $node->attributes->item($i);
continue; if ($item === null) {
continue;
}
$attributes[strtolower($item->nodeName)] = $item->nodeValue;
} }
$attributes[strtolower($item->nodeName)] = $item->nodeValue;
} }
$lastModified = null; $lastModified = null;
if (isset($attributes['time_added'])) { if (isset($attributes['time_added'])) {

View File

@ -59,7 +59,7 @@ class FileCache implements ICache {
* @param string $key * @param string $key
* @param mixed $value * @param mixed $value
* @param int $ttl * @param int $ttl
* @return bool|mixed * @return bool
* @throws NotFoundException * @throws NotFoundException
* @throws NotPermittedException * @throws NotPermittedException
*/ */
@ -82,12 +82,12 @@ class FileCache implements ICache {
/** /**
* @param string $key * @param string $key
* @return bool|mixed * @return bool
* @throws NotFoundException * @throws NotFoundException
* @throws NotPermittedException * @throws NotPermittedException
*/ */
public function remove($key) { public function remove($key) {
return $this->storage->getFile($key)->delete(); return (boolean) $this->storage->getFile($key)->delete();
} }
/** /**

View File

@ -210,10 +210,10 @@ class FolderService {
} }
/** /**
* @param $userId * @param string $userId
* @param $folderId * @param int $folderId
* @param null $title * @param string $title
* @param null $parent_folder * @param int $parent_folder
* @return Folder|SharedFolder * @return Folder|SharedFolder
* @throws DoesNotExistException * @throws DoesNotExistException
* @throws MultipleObjectsReturnedException * @throws MultipleObjectsReturnedException
@ -271,6 +271,7 @@ class FolderService {
public function createFolderPublicToken($folderId): string { public function createFolderPublicToken($folderId): string {
$this->folderMapper->find($folderId); $this->folderMapper->find($folderId);
try { try {
/** @var PublicFolder $publicFolder */
$publicFolder = $this->publicFolderMapper->findByFolder($folderId); $publicFolder = $this->publicFolderMapper->findByFolder($folderId);
} catch (DoesNotExistException $e) { } catch (DoesNotExistException $e) {
$publicFolder = new PublicFolder(); $publicFolder = new PublicFolder();
@ -370,7 +371,7 @@ class FolderService {
/** /**
* @param string $userId * @param string $userId
* @param $file * @param $file
* @param null $folder * @param int $folder
* @return array * @return array
* @throws DoesNotExistException * @throws DoesNotExistException
* @throws MultipleObjectsReturnedException * @throws MultipleObjectsReturnedException

View File

@ -197,7 +197,7 @@ class HtmlImporter {
* @param string $userId * @param string $userId
* @param int $folderId * @param int $folderId
* @param array $bookmark * @param array $bookmark
* @param null $index * @param null|int $index
* @return Bookmark|Entity * @return Bookmark|Entity
* @throws UrlParseError * @throws UrlParseError
* @throws AlreadyExistsError * @throws AlreadyExistsError

View File

@ -33,7 +33,7 @@ class PageresBookmarkPreviewer implements IBookmarkPreviewer {
} }
/** /**
* @param Bookmark $bookmark * @param Bookmark|null $bookmark
* *
* @return Image|null * @return Image|null
*/ */

View File

@ -12,7 +12,7 @@ use OCA\Bookmarks\Contract\IBookmarkPreviewer;
use OCA\Bookmarks\Contract\IImage; use OCA\Bookmarks\Contract\IImage;
use OCA\Bookmarks\Db\Bookmark; use OCA\Bookmarks\Db\Bookmark;
use OCA\Bookmarks\Image; use OCA\Bookmarks\Image;
use OCA\Bookmarks\Service\FileCache; use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService; use OCP\Http\Client\IClientService;
use OCP\IConfig; use OCP\IConfig;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -22,28 +22,36 @@ class ScreeenlyBookmarkPreviewer implements IBookmarkPreviewer {
public const HTTP_TIMEOUT = 10 * 1000; public const HTTP_TIMEOUT = 10 * 1000;
/**
* @var string
*/
private $apiKey; private $apiKey;
/**
* @var IClient
*/
private $client; private $client;
/** @var IConfig */
private $config;
private $cache;
/** @var LoggerInterface */ /** @var LoggerInterface */
private $logger; private $logger;
/**
* @var int
*/
private $width = 800; private $width = 800;
/**
* @var int
*/
private $height = 800; private $height = 800;
/** /**
* @var string * @var string
*/ */
private $apiUrl; private $apiUrl;
public function __construct(FileCache $cache, IConfig $config, IClientService $clientService, LoggerInterface $logger) { public function __construct(IConfig $config, IClientService $clientService, LoggerInterface $logger) {
$this->config = $config;
$this->apiUrl = $config->getAppValue('bookmarks', 'previews.screenly.url', 'http://screeenly.com/api/v1/fullsize'); $this->apiUrl = $config->getAppValue('bookmarks', 'previews.screenly.url', 'http://screeenly.com/api/v1/fullsize');
$this->apiKey = $config->getAppValue('bookmarks', 'previews.screenly.token', ''); $this->apiKey = $config->getAppValue('bookmarks', 'previews.screenly.token', '');
$this->client = $clientService->newClient(); $this->client = $clientService->newClient();
@ -51,7 +59,7 @@ class ScreeenlyBookmarkPreviewer implements IBookmarkPreviewer {
} }
/** /**
* @param Bookmark $bookmark * @param Bookmark|null $bookmark
* *
* @return Image|null * @return Image|null
*/ */
@ -69,7 +77,7 @@ class ScreeenlyBookmarkPreviewer implements IBookmarkPreviewer {
} }
/** /**
* @param $url * @param string $url
* @return Image|null * @return Image|null
*/ */
public function fetchImage($url): ?Image { public function fetchImage($url): ?Image {

View File

@ -12,7 +12,7 @@ use OCA\Bookmarks\Contract\IBookmarkPreviewer;
use OCA\Bookmarks\Contract\IImage; use OCA\Bookmarks\Contract\IImage;
use OCA\Bookmarks\Db\Bookmark; use OCA\Bookmarks\Db\Bookmark;
use OCA\Bookmarks\Image; use OCA\Bookmarks\Image;
use OCA\Bookmarks\Service\FileCache; use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService; use OCP\Http\Client\IClientService;
use OCP\IConfig; use OCP\IConfig;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -22,34 +22,38 @@ class ScreenshotMachineBookmarkPreviewer implements IBookmarkPreviewer {
public const HTTP_TIMEOUT = 10 * 1000; public const HTTP_TIMEOUT = 10 * 1000;
/**
* @var string
*/
private $apiKey; private $apiKey;
/**
* @var IClient
*/
private $client; private $client;
/** @var IConfig */
private $config;
/** @var LoggerInterface */ /** @var LoggerInterface */
private $logger; private $logger;
/**
* @var int
*/
private $width = 800; private $width = 800;
private $height = 800;
/** /**
* @var FileCache * @var int
*/ */
private $cache; private $height = 800;
public function __construct(FileCache $cache, IConfig $config, IClientService $clientService, LoggerInterface $logger) {
$this->config = $config; public function __construct(IConfig $config, IClientService $clientService, LoggerInterface $logger) {
$this->apiKey = $config->getAppValue('bookmarks', 'previews.screenshotmachine.key', ''); $this->apiKey = $config->getAppValue('bookmarks', 'previews.screenshotmachine.key', '');
$this->cache = $cache;
$this->client = $clientService->newClient(); $this->client = $clientService->newClient();
$this->logger = $logger; $this->logger = $logger;
} }
/** /**
* @param Bookmark $bookmark * @param Bookmark|null $bookmark
* *
* @return Image|null * @return Image|null
*/ */

View File

@ -13,6 +13,7 @@ use OCA\Bookmarks\Contract\IImage;
use OCA\Bookmarks\Db\Bookmark; use OCA\Bookmarks\Db\Bookmark;
use OCA\Bookmarks\Image; use OCA\Bookmarks\Image;
use OCA\Bookmarks\Service\FileCache; use OCA\Bookmarks\Service\FileCache;
use OCP\Http\Client\IClient;
use OCP\Http\Client\IClientService; use OCP\Http\Client\IClientService;
use OCP\IConfig; use OCP\IConfig;
use Psr\Log\LoggerInterface; use Psr\Log\LoggerInterface;
@ -22,18 +23,30 @@ class WebshotBookmarkPreviewer implements IBookmarkPreviewer {
public const HTTP_TIMEOUT = 10 * 1000; public const HTTP_TIMEOUT = 10 * 1000;
/**
* @var IClient
*/
private $client; private $client;
/** @var IConfig */ /** @var IConfig */
private $config; private $config;
/**
* @var FileCache
*/
private $cache; private $cache;
/** @var LoggerInterface */ /** @var LoggerInterface */
private $logger; private $logger;
/**
* @var int
*/
private $width = 800; private $width = 800;
/**
* @var int
*/
private $height = 800; private $height = 800;
/** /**
* @var string * @var string

View File

@ -12,6 +12,7 @@ use Rowbot\URL\Exception\TypeError;
use Rowbot\URL\URL; use Rowbot\URL\URL;
class UrlNormalizer { class UrlNormalizer {
/** @var array<string, string> */
private $cache = []; private $cache = [];
public function __construct() { public function __construct() {

View File

@ -5,7 +5,7 @@
~ This file is licensed under the Affero General Public License version 3 or later. See the COPYING file. ~ This file is licensed under the Affero General Public License version 3 or later. See the COPYING file.
--> -->
<psalm <psalm
errorLevel="1" errorLevel="5"
resolveFromConfigFile="true" resolveFromConfigFile="true"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="https://getpsalm.org/schema/config" xmlns="https://getpsalm.org/schema/config"
@ -21,6 +21,24 @@
<directory name="vendor" /> <directory name="vendor" />
<ignoreFiles> <ignoreFiles>
<directory name="vendor/phpunit/php-code-coverage" /> <directory name="vendor/phpunit/php-code-coverage" />
<directory name="vendor/vimeo" />
</ignoreFiles> </ignoreFiles>
</extraFiles> </extraFiles>
<issueHandlers>
<UndefinedClass>
<errorLevel type="suppress">
<referencedClass name="OC" />
<referencedClass name="Doctrine\DBAL\Types\Type" />
</errorLevel>
</UndefinedClass>
<UndefinedDocblockClass>
<errorLevel type="suppress">
<referencedClass name="Doctrine\DBAL\Schema\Schema" />
<referencedClass name="Doctrine\DBAL\Schema\SchemaException" />
<referencedClass name="Doctrine\DBAL\Driver\Statement" />
<referencedClass name="Doctrine\DBAL\Schema\Table" />
<referencedClass name="Doctrine\DBAL\Types\Type" />
</errorLevel>
</UndefinedDocblockClass>
</issueHandlers>
</psalm> </psalm>