<?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;
    }
}