From a0c8fc6d6ee7f930422929da66ab23b880215f6c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Roland=20H=C3=A4der?= Date: Mon, 20 Jun 2022 00:51:59 +0200 Subject: [PATCH] Changes: - added more type-hints --- src/Core/Renderer.php | 2 +- src/Protocol/Salmon.php | 10 +++--- src/Render/FriendicaSmartyEngine.php | 2 +- src/Render/TemplateEngine.php | 5 +-- src/Util/Strings.php | 54 +++++++++++----------------- 5 files changed, 31 insertions(+), 42 deletions(-) diff --git a/src/Core/Renderer.php b/src/Core/Renderer.php index 29bbb2b894..879fdfe19e 100644 --- a/src/Core/Renderer.php +++ b/src/Core/Renderer.php @@ -71,7 +71,7 @@ class Renderer * @return string * @throws ServiceUnavailableException */ - public static function replaceMacros(string $template, array $vars = []) + public static function replaceMacros(string $template, array $vars = []): string { DI::profiler()->startRecording('rendering'); diff --git a/src/Protocol/Salmon.php b/src/Protocol/Salmon.php index 9724f82df7..98af26c15c 100644 --- a/src/Protocol/Salmon.php +++ b/src/Protocol/Salmon.php @@ -43,7 +43,7 @@ class Salmon * @return mixed * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function getKey($uri, $keyhash) + public static function getKey(string $uri, string $keyhash) { $ret = []; @@ -109,18 +109,18 @@ class Salmon * @return integer * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ - public static function slapper($owner, $url, $slap) + public static function slapper(array $owner, string $url, string $slap): int { // does contact have a salmon endpoint? if (!strlen($url)) { - return; + return -1; } if (!$owner['sprvkey']) { Logger::notice(sprintf("user '%s' (%d) does not have a salmon private key. Send failed.", $owner['name'], $owner['uid'])); - return; + return -1; } Logger::info('slapper called for '.$url.'. Data: ' . $slap); @@ -229,7 +229,7 @@ class Salmon * @return string * @throws \Exception */ - public static function salmonKey($pubkey) + public static function salmonKey(string $pubkey): string { Crypto::pemToMe($pubkey, $modulus, $exponent); return 'RSA' . '.' . Strings::base64UrlEncode($modulus, true) . '.' . Strings::base64UrlEncode($exponent, true); diff --git a/src/Render/FriendicaSmartyEngine.php b/src/Render/FriendicaSmartyEngine.php index 6fc8f44806..9f35fbcc44 100644 --- a/src/Render/FriendicaSmartyEngine.php +++ b/src/Render/FriendicaSmartyEngine.php @@ -69,7 +69,7 @@ final class FriendicaSmartyEngine extends TemplateEngine /** * @inheritDoc */ - public function replaceMacros(string $template, array $vars) + public function replaceMacros(string $template, array $vars): string { if (!Strings::startsWith($template, self::FILE_PREFIX)) { $template = self::STRING_PREFIX . $template; diff --git a/src/Render/TemplateEngine.php b/src/Render/TemplateEngine.php index 6bfbe31971..e160192d36 100644 --- a/src/Render/TemplateEngine.php +++ b/src/Render/TemplateEngine.php @@ -45,6 +45,7 @@ abstract class TemplateEngine * parameter or displays them directly if it's null. * * @param array|null $errors + * @return void */ abstract public function testInstall(array &$errors = null); @@ -53,9 +54,9 @@ abstract class TemplateEngine * * @param string $template * @param array $vars - * @return string + * @return string Template output with replaced macros */ - abstract public function replaceMacros(string $template, array $vars); + abstract public function replaceMacros(string $template, array $vars): string; /** * Returns the template string from a file path and an optional sub-directory from the project root diff --git a/src/Util/Strings.php b/src/Util/Strings.php index d2555132a0..44ddc73259 100644 --- a/src/Util/Strings.php +++ b/src/Util/Strings.php @@ -32,11 +32,11 @@ class Strings /** * Generates a pseudo-random string of hexadecimal characters * - * @param int $size - * @return string + * @param int $size Size of string (default: 64) + * @return string Pseudo-random string * @throws \Exception */ - public static function getRandomHex($size = 64) + public static function getRandomHex(int $size = 64): string { $byte_size = ceil($size / 2); @@ -51,10 +51,9 @@ class Strings * Checks, if the given string is a valid hexadecimal code * * @param string $hexCode - * * @return bool */ - public static function isHex($hexCode) + public static function isHex(string $hexCode): bool { return !empty($hexCode) ? @preg_match("/^[a-f0-9]{2,}$/i", $hexCode) && !(strlen($hexCode) & 1) : false; } @@ -75,10 +74,9 @@ class Strings * Generate a string that's random, but usually pronounceable. Used to generate initial passwords * * @param int $len length - * * @return string */ - public static function getRandomName($len) + public static function getRandomName(int $len): string { if ($len <= 0) { return ''; @@ -161,7 +159,6 @@ class Strings * * @param string $network Network name of the contact (e.g. dfrn, rss and so on) * @param string $url The contact url - * * @return string Formatted network name * @throws \Friendica\Network\HTTPException\InternalServerErrorException */ @@ -189,7 +186,7 @@ class Strings * * @return string Transformed string. */ - public static function deindent(string $text, string $chr = "[\t ]", int $count = null) + public static function deindent(string $text, string $chr = "[\t ]", int $count = null): string { $lines = explode("\n", $text); @@ -218,7 +215,7 @@ class Strings * * @return string Size with measured units. */ - public static function formatBytes($bytes, $precision = 2) + public static function formatBytes(int $bytes, int $precision = 2): string { $units = ['B', 'KB', 'MB', 'GB', 'TB']; $bytes = max($bytes, 0); @@ -233,10 +230,9 @@ class Strings * Protect percent characters in sprintf calls * * @param string $s String to transform. - * * @return string Transformed string. */ - public static function protectSprintf($s) + public static function protectSprintf(string $s): string { return str_replace('%', '%%', $s); } @@ -246,10 +242,9 @@ class Strings * * @param string $s URL to encode * @param boolean $strip_padding Optional. Default false - * * @return string Encoded URL */ - public static function base64UrlEncode($s, $strip_padding = false) + public static function base64UrlEncode(string $s, bool $strip_padding = false): string { $s = strtr(base64_encode($s), '+/', '-_'); @@ -262,18 +257,13 @@ class Strings /** * Decode Base64 Encoded URL and translate -_ to +/ - * @param string $s URL to decode * + * @param string $s URL to decode * @return string Decoded URL * @throws \Exception */ - public static function base64UrlDecode($s) + public static function base64UrlDecode(string $s): string { - if (is_array($s)) { - Logger::notice('base64url_decode: illegal input: ', ['backtrace' => debug_backtrace()]); - return $s; - } - /* * // Placeholder for new rev of salmon which strips base64 padding. * // PHP base64_decode handles the un-padded input without requiring this step @@ -297,10 +287,9 @@ class Strings * Normalize url * * @param string $url URL to be normalized. - * * @return string Normalized URL. */ - public static function normaliseLink($url) + public static function normaliseLink(string $url): string { $ret = str_replace(['https:', '//www.'], ['http:', '//'], $url); return rtrim($ret, '/'); @@ -310,10 +299,9 @@ class Strings * Normalize OpenID identity * * @param string $s OpenID Identity - * * @return string normalized OpenId Identity */ - public static function normaliseOpenID($s) + public static function normaliseOpenID(string $s): string { return trim(str_replace(['http://', 'https://'], ['', ''], $s), '/'); } @@ -329,7 +317,7 @@ class Strings * @return boolean True if the URLs match, otherwise False * */ - public static function compareLink($a, $b) + public static function compareLink(string $a, string $b): bool { return (strcasecmp(self::normaliseLink($a), self::normaliseLink($b)) === 0); } @@ -340,7 +328,7 @@ class Strings * @param string $uri * @return string */ - public static function ensureQueryParameter($uri) + public static function ensureQueryParameter(string $uri): string { if (strpos($uri, '?') === false && ($pos = strpos($uri, '&')) !== false) { $uri = substr($uri, 0, $pos) . '?' . substr($uri, $pos + 1); @@ -356,7 +344,7 @@ class Strings * @param array $chars * @return bool */ - public static function startsWithChars($string, array $chars) + public static function startsWithChars(string $string, array $chars): bool { $return = in_array(substr(trim($string), 0, 1), $chars); @@ -371,7 +359,7 @@ class Strings * @param string $start * @return bool */ - public static function startsWith(string $string, string $start) + public static function startsWith(string $string, string $start): bool { $return = substr_compare($string, $start, 0, strlen($start)) === 0; @@ -386,7 +374,7 @@ class Strings * @param string $end * @return bool */ - public static function endsWith(string $string, string $end) + public static function endsWith(string $string, string $end): string { $return = substr_compare($string, $end, -strlen($end)) === 0; @@ -399,7 +387,7 @@ class Strings * @return string * @see https://daringfireball.net/2010/07/improved_regex_for_matching_urls */ - public static function autoLinkRegEx() + public static function autoLinkRegEx(): string { return '@ (?