From 46c2fe3aad44eddc76a0a5045f6d47a547d89e76 Mon Sep 17 00:00:00 2001 From: Marc Date: Sun, 8 Feb 2026 17:56:40 +0100 Subject: [PATCH] Implement URLHandlerInfoProviderInterface in BuerklinProvider Added URL handling capabilities to BuerklinProvider. --- .../Providers/BuerklinProvider.php | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php b/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php index 07125c73..c2177495 100644 --- a/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php +++ b/src/Services/InfoProviderSystem/Providers/BuerklinProvider.php @@ -34,7 +34,7 @@ use App\Settings\InfoProviderSystem\BuerklinSettings; use Psr\Cache\CacheItemPoolInterface; use Symfony\Contracts\HttpClient\HttpClientInterface; -class BuerklinProvider implements BatchInfoProviderInterface +class BuerklinProvider implements BatchInfoProviderInterface, URLHandlerInfoProviderInterface { private const ENDPOINT_URL = 'https://www.buerklin.com/buerklinws/v2/buerklin'; @@ -636,4 +636,35 @@ class BuerklinProvider implements BatchInfoProviderInterface ); } + public function getHandledDomains(): array + { + return ['buerklin.com']; + } + + public function getIDFromURL(string $url): ?string + { + //Inputs: + //https://www.buerklin.com/de/p/bkl-electronic/niedervoltsteckverbinder/072341-l/40F1332/ + //https://www.buerklin.com/de/p/40F1332/ + //https://www.buerklin.com/en/p/bkl-electronic/dc-connectors/072341-l/40F1332/ + //https://www.buerklin.com/en/p/40F1332/ + //The ID is the last part after the manufacturer/category/mpn segment and before the final slash + //https://www.buerklin.com/de/p/bkl-electronic/niedervoltsteckverbinder/072341-l/40F1332/#download should also work + + $path = parse_url($url, PHP_URL_PATH); + + if (!$path) { + return null; + } + + // Ensure it's actually a product URL + if (strpos($path, '/p/') === false) { + return null; + } + + $id = basename(rtrim($path, '/')); + + return $id !== '' ? $id : null; + } + }