From 7b841c060d51ea65863c921be056b71398af4765 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Fri, 30 Sep 2022 18:13:45 +0200 Subject: [PATCH] Add a capability for the reference API and expose the regex to clients Signed-off-by: Joas Schilling --- lib/private/OCS/CoreCapabilities.php | 5 ++++- lib/public/IURLGenerator.php | 11 ++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/private/OCS/CoreCapabilities.php b/lib/private/OCS/CoreCapabilities.php index ab06b04cc9115..578152ff10894 100644 --- a/lib/private/OCS/CoreCapabilities.php +++ b/lib/private/OCS/CoreCapabilities.php @@ -24,6 +24,7 @@ use OCP\Capabilities\ICapability; use OCP\IConfig; +use OCP\IURLGenerator; /** * Class Capabilities @@ -52,7 +53,9 @@ public function getCapabilities() { 'core' => [ 'pollinterval' => $this->config->getSystemValue('pollinterval', 60), 'webdav-root' => $this->config->getSystemValue('webdav-root', 'remote.php/webdav'), - ] + 'reference-api' => true, + 'reference-regex' => IURLGenerator::URL_REGEX_NO_MODIFIERS, + ], ]; } } diff --git a/lib/public/IURLGenerator.php b/lib/public/IURLGenerator.php index be0edf61025bc..b6d78876478af 100644 --- a/lib/public/IURLGenerator.php +++ b/lib/public/IURLGenerator.php @@ -43,7 +43,16 @@ interface IURLGenerator { * * @since 25.0.0 */ - public const URL_REGEX = '/(\s|\n|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|\n|$)/mi'; + public const URL_REGEX = '/' . self::URL_REGEX_NO_MODIFIERS . '/mi'; + + /** + * Regex for matching http(s) urls (without modifiers for client compatibility) + * + * This is a copy of the frontend regex in core/src/OCP/comments.js, make sure to adjust both when changing + * + * @since 25.0.0 + */ + public const URL_REGEX_NO_MODIFIERS = '(\s|\n|^)(https?:\/\/)((?:[-A-Z0-9+_]+\.)+[-A-Z]+(?:\/[-A-Z0-9+&@#%?=~_|!:,.;()]*)*)(\s|\n|$)'; /** * Returns the URL for a route