Strumenti per acquisire e convertire il Web

Utilizzo di Symfony Framework di PHP con l'API di acquisizione di GrabzIt

Mentre la libreria PHP di GrabzIt si concentra sulla fornitura di una libreria che può essere utilizzata in qualsiasi progetto PHP. symfony I progetti PHP sono messi insieme in un modo unico che richiede un po’ più di lavoro.

Symfony è uno dei più grandi framework PHP attualmente utilizzati e accelera lo sviluppo web fornendo un set riutilizzabile di librerie e componenti. Di cui GrabzIt fa ora parte, grazie a Torben Lundsgaard TLAMedia che ha creato un bundle di GrabzIt per Symfony. Questo software open source utilizza il file MIT License.

Per ottenere il pacchetto GrabzIt devi prima installarlo con il compositore.

composer require tlamedia/grabzit-bundle

Quindi aggiungilo al tuo kernel.

public function registerBundles()
{
$bundles = array(
//...
new Tla\GrabzitBundle\TlaGrabzitBundle(),
//…

Configurazione

Ottenete il vostro Chiave API e segreto e aggiungili al tuo file di configurazione in questo modo.

# config.yml
tla_grabzit:
    key: 'Sign in to view your Application Key'
    secret: 'Sign in to view your Application Secret'

Il bundle registra diversi servizi che, quando chiamati, restituiscono la classe GrabzIt appropriata.

Identificatore del servizio Classe GrabzIt
tla_grabzit.client GrabzItClient
tla_grabzit.imageoptions GrabzItImageOptions
tla_grabzit.pdfopzioni GrabzItPDFOptions
tla_grabzit.docxoptions GrabzItDOCXOptions
tla_grabzit.animationoptions GrabzItAnimationOptions
tla_grabzit.tableoptions GrabzItTableOptions

Come generare acquisizioni

Un esempio di come generare una miniatura nel framework Symfony.

namespace App\Service;

use Symfony\Component\DependencyInjection\ContainerInterface as Container;

class ThumbnailGenerator
{
    private $container;

    public function __construct(Container $container)
    {
        $this->router = $router;
        $this->container = $container;
    }

    public function generateThumbnail($url)
    {
        $grabzItHandlerUrl = 'https://www.my-grabzit-thumbnail-site.com/api/thumbmail-ready';

        $options = $this->container->get('tla_grabzit.imageoptions');
        $options->setBrowserWidth(1366);
        $options->setBrowserHeight(768);
        $options->setFormat("png");
        $options->setWidth(320);
        $options->setHeight(240);
        $options->setCustomId($domain);

        $grabzIt = $this->container->get('tla_grabzit.client');
        $grabzIt->URLToImage($url, $options);
        $grabzIt->Save($grabzItHandlerUrl);

        try {
            $grabzIt->URLToImage($url, $options);
            $grabzIt->Save($grabzItHandlerUrl);
            $result = true;
        } catch (\Throwable $t) {
            $result = false;
        }

        return $result;
    }
}

Come ricevere acquisizioni con un handler

Un esempio di come ricevere acquisizioni da GrabzIt utilizzando un gestore nel framework Symfony. Ovviamente dovrai modificarlo per adattarlo alle tue esigenze.

namespace App\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class ApiController extends Controller
{
    public function thumbnailReadyAction(Request $request)
    {
        $id = urldecode($request->query->get('id'));
        $customId = $request->query->get('customid');
        $thumbnailFormat = $request->query->get('format');

        if ($id && $customId && $thumbnailFormat) {

            $grabzItApplicationKey = $this->container->getParameter('tla_grabzit.key');

            if (0 === strpos($id, $grabzItApplicationKey)) {

                $grabzIt = $this->container->get('tla_grabzit.client');
                $result = $grabzIt->GetResult($id);

                if ($result) {
                    $rootPath = $this->get('kernel')->getRootDir() . '/../';
                    $thumbnailsPath = $rootPath . 'var/thumbnails/';
                    $fileName = $customId. '.' .$thumbnailFormat;
                    
                    file_put_contents($thumbnailsPath . $fileName, $result);
                } else {
                    throw $this->createNotFoundException('GrabzIt did not return a file');
                }
            } else {
                throw $this->createNotFoundException('Wrong key - Unauthorized access');
            }
        } else {
            throw $this->createNotFoundException('Missing parameters');
        }
        return new Response(null, 200);
    }
}

Questo articolo della guida è stato ampliato da aiuto per questo pacchetto dettagliato su GitHub.