load(); function isValidUrl( ? string $url, ? string $hostname) : bool { if ($url === null) { return false; } if (trim($url) === '') { return false; } if (filter_var($url, FILTER_VALIDATE_URL) === false) { return false; } echo '
', var_dump($hostname), '
'; die; return parse_url($url)['host'] !== $hostname; } function graby(string $url) : array { $graby = new Graby(); $result = $graby->fetchContent($url); if (isset($result['headers'])) { unset($result['headers']); } return $result; } function opengraph(string $url) : array { $consumer = new Consumer(); $object = $consumer->loadUrl($url); return json_decode(json_encode($object), true); } SimpleRouter::get('/do/{parser}', function ($parser) { $url = input()->get('url')->value; if (!isValidUrl($url, getenv('API_HOSTNAME'))) { return response() ->httpCode(400) ->json(['error' => 'Invalid URL']); } $parsers = [ 'graby' => 'graby', 'opengraph' => 'opengraph', ]; if (!isset($parsers[$parser])) { return response() ->httpCode(400) ->json(['error' => 'Invalid parser']); } try { $result = call_user_func_array($parsers[$parser], [$url]); return response() ->httpCode(200) ->json($result); } catch (\Exception $e) { return response() ->httpCode(500) ->json(['error' => $e->getMessage()]); } }); SimpleRouter::start();