diff options
Diffstat (limited to 'resolve.php')
| -rw-r--r-- | resolve.php | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/resolve.php b/resolve.php new file mode 100644 index 0000000..4df1c8c --- /dev/null +++ b/resolve.php @@ -0,0 +1,30 @@ +<?php +# TODO rate limiting +require_once __DIR__ . '/vendor/autoload.php'; + +use GuzzleHttp\Client; + +function resolveURL($url) { + + $client = new Client(); + + try { + $response = $client->request('HEAD', $url, [ 'on_stats' => function( GuzzleHttp\TransferStats $stats ) use ( &$effectiveURL ){ $effectiveURL = $stats->getEffectiveUri(); }]) + ->getBody()->getContents(); + } catch(\Exception $e) { + return $url; + } + + return $effectiveURL->__toString(); +} + +function getURL() { + if ( empty($_REQUEST['url']) ) { + $data = json_decode(file_get_contents('php://input'), true); + return $data['url']; + } else { + return $_REQUEST['url']; + } +} + +echo json_encode( ['url' => resolveURL( getURL() ) ]); |
