[StoreRemoteMedia] Increase type strictness

This commit is contained in:
Diogo Peralta Cordeiro 2021-04-11 21:16:11 +01:00
parent 844ecbf71e
commit edc9fd203d
1 changed files with 14 additions and 9 deletions

View File

@ -47,8 +47,6 @@ class StoreRemoteMediaPlugin extends Plugin
public $crop = null; public $crop = null;
public $max_size = null; public $max_size = null;
protected $imgData = [];
/** /**
* Initialize the StoreRemoteMedia plugin and set up the environment it needs for it. * Initialize the StoreRemoteMedia plugin and set up the environment it needs for it.
* Returns true if it initialized properly, the exception object if it * Returns true if it initialized properly, the exception object if it
@ -72,8 +70,8 @@ class StoreRemoteMediaPlugin extends Plugin
* the database. We glom onto this to fetch remote attachments. * the database. We glom onto this to fetch remote attachments.
* *
* @param $file File the file of the created thumbnail * @param $file File the file of the created thumbnail
* @param &$imgPath string = the path to the created thumbnail * @param &$imgPath null|string = out the path to the created thumbnail (output parameter)
* @param $media string = media type * @param $media string = media type (unused)
* @return bool * @return bool
* @throws AlreadyFulfilledException * @throws AlreadyFulfilledException
* @throws FileNotFoundException * @throws FileNotFoundException
@ -81,7 +79,7 @@ class StoreRemoteMediaPlugin extends Plugin
* @throws HTTP_Request2_Exception * @throws HTTP_Request2_Exception
* @throws ServerException * @throws ServerException
*/ */
public function onCreateFileImageThumbnailSource(File $file, &$imgPath, string $media): bool public function onCreateFileImageThumbnailSource(File $file, ?string &$imgPath = null, ?string $media=null): bool
{ {
// If we are on a private node, we won't do any remote calls (just as a precaution until // If we are on a private node, we won't do any remote calls (just as a precaution until
// we can configure this from config.php for the private nodes) // we can configure this from config.php for the private nodes)
@ -156,7 +154,7 @@ class StoreRemoteMediaPlugin extends Plugin
} }
} catch (UnsupportedMediaException $e) { } catch (UnsupportedMediaException $e) {
// Couldn't find anything that looks like an image, nothing to do // Couldn't find anything that looks like an image, nothing to do
common_debug("StoreRemoteMedia was not able to find an image for URL `{$url}`: " . $e->getMessage()); common_debug("StoreRemoteMedia was not able to find an image for URL `$url`: " . $e->getMessage());
return false; return false;
} }
} }
@ -220,7 +218,7 @@ class StoreRemoteMediaPlugin extends Plugin
$headers = $head->getHeader(); $headers = $head->getHeader();
$headers = array_change_key_case($headers, CASE_LOWER); $headers = array_change_key_case($headers, CASE_LOWER);
} }
return isset($headers['content-length']) ? $headers['content-length'] : false; return $headers['content-length'] ?? false;
} catch (Exception $err) { } catch (Exception $err) {
common_log(LOG_ERR, __CLASS__.': getRemoteFileSize on URL : '._ve($url). common_log(LOG_ERR, __CLASS__.': getRemoteFileSize on URL : '._ve($url).
' threw exception: '.$err->getMessage()); ' threw exception: '.$err->getMessage());
@ -234,7 +232,7 @@ class StoreRemoteMediaPlugin extends Plugin
* *
* @return bool true if the remote URL is an image, or false otherwise. * @return bool true if the remote URL is an image, or false otherwise.
*/ */
private function isRemoteImage($url, $headers = null) private function isRemoteImage($url, $headers = null): bool
{ {
if (empty($headers)) { if (empty($headers)) {
if (!common_valid_http_url($url)) { if (!common_valid_http_url($url)) {
@ -278,6 +276,13 @@ class StoreRemoteMediaPlugin extends Plugin
$original_name = HTTPClient::get_filename($url, $headers); $original_name = HTTPClient::get_filename($url, $headers);
} }
$filename = MediaFile::encodeFilename($original_name ?? _m('Untitled attachment'), $filehash); $filename = MediaFile::encodeFilename($original_name ?? _m('Untitled attachment'), $filehash);
} catch (Exception $err) {
common_log(LOG_ERR, "Went to write a thumbnail to disk in StoreRemoteMediaPlugin::storeRemoteThumbnail " .
"but encountered error: $err");
throw $err;
}
try {
$fullpath = $this->store_original ? File::path($filename) : File_thumbnail::path($filename); $fullpath = $this->store_original ? File::path($filename) : File_thumbnail::path($filename);
// Write the file to disk. Throw Exception on failure // Write the file to disk. Throw Exception on failure
if (!file_exists($fullpath)) { if (!file_exists($fullpath)) {
@ -318,7 +323,7 @@ class StoreRemoteMediaPlugin extends Plugin
// Carry on // Carry on
} catch (Exception $err) { } catch (Exception $err) {
common_log(LOG_ERR, "Went to write a thumbnail to disk in StoreRemoteMediaPlugin::storeRemoteThumbnail " . common_log(LOG_ERR, "Went to write a thumbnail to disk in StoreRemoteMediaPlugin::storeRemoteThumbnail " .
"but encountered error: {$err}"); "but encountered error: $err");
throw $err; throw $err;
} finally { } finally {
unset($imgData); unset($imgData);