32 lines
756 B
PHP
32 lines
756 B
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Api;
|
|
|
|
use App\MetadataResolver\DeniedHostException;
|
|
use App\Services\MetadataResolveService;
|
|
use Illuminate\Http\Request;
|
|
|
|
class CardController
|
|
{
|
|
public function show(Request $request, MetadataResolveService $service)
|
|
{
|
|
$request->validate([
|
|
'url:required|url'
|
|
]);
|
|
|
|
try {
|
|
$metadata = $service->execute($request->input('url'));
|
|
} catch (DeniedHostException $e) {
|
|
abort(403, $e->getMessage());
|
|
}
|
|
$metadata->load('tags');
|
|
|
|
$response = response($metadata);
|
|
if (!config('app.debug')) {
|
|
$response = $response->setCache(['public' => true, 'max_age' => 86400]);
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
}
|