fetchGlobals(); $parsed = $requestUrl ? parse_url($requestUrl) : null; $relativePath = $parsed['path'] ?? null; if (!$requestUrl || $relativePath === '/') $this->sendResponse($this->buildResponse( $globals['site_name'], $globals['url'], $globals['avatar'], $globals )); if (!$relativePath) $this->sendErrorResponse('Invalid url', 400); $relativePath = '/' . ltrim($relativePath ?? '', '/'); if ($relativePath !== '/' && str_ends_with($relativePath, '/')) $relativePath = rtrim($relativePath, '/'); $cacheKey = 'oembed:' . md5($relativePath); if ($this->cache && $this->cache->exists($cacheKey)) { $cachedItem = json_decode($this->cache->get($cacheKey), true); $this->sendResponse($this->buildResponse( $cachedItem['title'], $cachedItem['url'], $cachedItem['image_url'], $globals, $cachedItem['description'] ?? '' )); } $results = $this->fetchFromApi('optimized_oembed', 'url=eq.' . urlencode($relativePath)); if (!empty($results)) { $item = $results[0]; if ($this->cache) $this->cache->setex($cacheKey, 300, json_encode($item)); $this->sendResponse($this->buildResponse( $item['title'], $item['url'], $item['image_url'], $globals, $item['description'] ?? '' )); } $segments = explode('/', trim($relativePath, '/')); if (count($segments) === 1 && $segments[0] !== '') { $title = ucwords(str_replace('-', ' ', $segments[0])) . ' • ' . $globals['author']; $this->sendResponse($this->buildResponse( $title, $relativePath, $globals['avatar'], $globals )); } $this->sendErrorResponse('No match found', 404); } private function buildResponse(string $title, string $url, string $imagePath, array $globals, string $description = ''): array { $safeDescription = truncateText(strip_tags(parseMarkdown($description)), 175); $html = '

' . htmlspecialchars($title) . '

'; if ($description) $html .= '

' . htmlspecialchars($safeDescription, ENT_QUOTES, 'UTF-8') . '

'; return [ 'version' => '1.0', 'type' => 'link', 'title' => $title, 'author_name' => $globals['author'], 'provider_name' => $globals['site_name'], 'provider_url' => $globals['url'], 'thumbnail_url' => $globals['url'] . '/og/w800' . $imagePath, 'html' => $html, 'description' => $safeDescription, ]; } private function fetchGlobals(): array { $cacheKey = 'globals_data'; if ($this->cache && $this->cache->exists($cacheKey)) return json_decode($this->cache->get($cacheKey), true); $globals = $this->fetchFromApi('optimized_globals', 'limit=1')[0] ?? [ 'author' => 'Cory Dransfeldt', 'site_name' => 'coryd.dev', 'url' => 'https://www.coryd.dev', 'avatar' => '' ]; if ($this->cache) $this->cache->setex($cacheKey, 3600, json_encode($globals)); return $globals; } } $handler = new OembedHandler(); $handler->handleRequest();