FileUrlGenerator.php 1.46 KB
Newer Older
<?php

/*
 * Copyright (C) 2015 IRSTEA
 * All rights reserved.
 */

namespace Irstea\FileUploadBundle\Service;

use Irstea\FileUploadBundle\Controller\UploadController;
use Irstea\FileUploadBundle\Model\UploadedFileInterface;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;

/**
 * Implémentation de FileUrlInterface utilisant les services de Symfony.
 *
 * @author Guillaume Perréal <guillaume.perreal@irstea.fr>
 */
class FileUrlGenerator implements FileUrlGeneratorInterface
{
    /**
     * @var UrlGeneratorInterface
     */
    protected $urlGenerator;

    /**
     * @var CsrfTokenManagerInterface
     */
    protected $tokenManager;

    /**
     * @param UrlGeneratorInterface $urlGenerator
     * @param CsrfTokenManagerInterface $tokenManager
     */
    public function __construct(UrlGeneratorInterface $urlGenerator, CsrfTokenManagerInterface $tokenManager)
    {
        $this->urlGenerator = $urlGenerator;
        $this->tokenManager = $tokenManager;
    }

    /**
     * {@inheritdoc}
     */
    public function generate($idFile, $referenceType = UrlGeneratorInterface::ABSOLUTE_PATH)
    {
        $token = $this->tokenManager->getToken(UploadController::CSRF_INTENTION);

        $url = $this->urlGenerator->generate(
            'file_upload_get_content',
            ['id' => $idFile, 'token' => $token->getValue()],
            $referenceType
        );

        return $url;
    }
}