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