Remove url_generator from ResourceResolver s

This commit is contained in:
Benoît Burnichon
2016-01-13 16:56:59 +01:00
parent 7713afeff6
commit a69ac51114
5 changed files with 35 additions and 61 deletions

View File

@@ -378,16 +378,14 @@ class Application extends SilexApplication
$resolvers = $this['alchemy_embed.resource_resolvers'];
$resolvers['datafile'] = $resolvers->share(function () {
return new DatafilesResolver($this->getApplicationBox(), $this['url_generator']);
return new DatafilesResolver($this->getApplicationBox());
});
$resolvers['permalinks_permalink'] = $resolvers->share(function () {
return new PermalinkMediaResolver($this->getApplicationBox(), $this['url_generator']);
return new PermalinkMediaResolver($this->getApplicationBox());
});
$resolvers['media_accessor'] = $resolvers->share(function () {
return new MediaAccessorResolver(
$this->getApplicationBox(),
$this['url_generator'],
$this['controller.media_accessor']
$this->getApplicationBox(), $this['controller.media_accessor']
);
});
}

View File

@@ -11,6 +11,7 @@
namespace Alchemy\Phrasea\Controller;
use Alchemy\Embed\Media\Media;
use Alchemy\Embed\Media\MediaInformation;
use Alchemy\Phrasea\Application;
use Alchemy\Phrasea\Application\Helper\ApplicationBoxAware;
use Alchemy\Phrasea\Authentication\ACLProvider;
@@ -70,17 +71,28 @@ class PermalinkController extends AbstractDelivery
public function deliverPermaview(Request $request, $sbas_id, $record_id, $subdef)
{
return $this->doDeliverPermaview($request, $sbas_id, $record_id, $request->query->get('token'), $subdef);
return $this->doDeliverPermaview($sbas_id, $record_id, $request->query->get('token'), $subdef);
}
private function doDeliverPermaview(Request $request, $sbas_id, $record_id, $token, $subdefName)
private function doDeliverPermaview($sbas_id, $record_id, $token, $subdefName)
{
$databox = $this->findDataboxById($sbas_id);
$record = $this->retrieveRecord($databox, $token, $record_id, $subdefName);
$metaData = $this->mediaService->getMetaData($request, $record, $subdefName);
$subdef = $record->get_subdef($subdefName);
$information = $this->mediaService->createMediaInformationFromResourceAndRoute(
$subdef,
'permalinks_permalink',
[
'sbas_id' => $sbas_id,
'record_id' => $record_id,
'subdef' => $subdefName,
'label' => $record->get_title(),
'token' => $token,
]
);
$metaData = $this->mediaService->getMetaData($information);
return $this->app['twig']->render('overview.html.twig', [
'ogMetaData' => $metaData['ogMetaData'],
'subdef' => $subdef,
@@ -89,19 +101,13 @@ class PermalinkController extends AbstractDelivery
'view' => 'overview',
'token' => $token,
'record' => $record,
'recordUrl' => $this->app->url('permalinks_permalink', [
'sbas_id' => $sbas_id,
'record_id' => $record_id,
'subdef' => $subdefName,
'label' => $record->get_title(),
'token' => $token,
])
'recordUrl' => $information->getUrl(),
]);
}
public function deliverPermaviewOldWay(Request $request, $sbas_id, $record_id, $token, $subdef)
{
return $this->doDeliverPermaview($request, $sbas_id, $record_id, $token, $subdef);
return $this->doDeliverPermaview($sbas_id, $record_id, $token, $subdef);
}
public function deliverPermalink(Request $request, $sbas_id, $record_id, $subdef)

View File

@@ -12,40 +12,29 @@ namespace Alchemy\Phrasea\Media;
use Alchemy\Embed\Media\MediaInformation;
use Alchemy\Embed\Media\ResourceResolver;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class DatafilesResolver implements ResourceResolver
{
/** @var \appbox */
private $appbox;
/** @var UrlGeneratorInterface */
private $urlGenerator;
public function __construct(\appbox $appbox, UrlGeneratorInterface $urlGenerator)
public function __construct(\appbox $appbox)
{
$this->appbox = $appbox;
$this->urlGenerator = $urlGenerator;
}
public function resolve(Request $request, $routeName, array $routeParameters)
{
$parameters = array_replace(
$request->query->all(),
array_intersect_key($routeParameters, [
$parameters = array_intersect_key($routeParameters, [
'sbas_id' => null,
'record_id' => null,
'subdef' => null,
])
);
]);
$databox = $this->appbox->get_databox((int) $parameters['sbas_id']);
$record = $databox->get_record((int)$parameters['record_id']);
$subdef = $record->get_subdef($parameters['subdef']);
$urlGenerator = $this->urlGenerator;
$url = $urlGenerator->generate($routeName, $parameters, $urlGenerator::ABSOLUTE_URL);
$embedUrl = $urlGenerator->generate('alchemy_embed_view', ['url' => $url], $urlGenerator::ABSOLUTE_URL);
return new MediaInformation($subdef, $url, $embedUrl);
return new MediaInformation($subdef, $request, $routeName, $routeParameters);
}
}

View File

@@ -13,7 +13,6 @@ use Alchemy\Embed\Media\MediaInformation;
use Alchemy\Embed\Media\ResourceResolver;
use Alchemy\Phrasea\Controller\MediaAccessorController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class MediaAccessorResolver implements ResourceResolver
{
@@ -21,24 +20,18 @@ class MediaAccessorResolver implements ResourceResolver
private $appbox;
/** @var MediaAccessorController */
private $controller;
/** @var UrlGeneratorInterface */
private $urlGenerator;
public function __construct(\appbox $appbox, UrlGeneratorInterface $urlGenerator, MediaAccessorController $controller)
public function __construct(\appbox $appbox, MediaAccessorController $controller)
{
$this->appbox = $appbox;
$this->urlGenerator = $urlGenerator;
$this->controller = $controller;
}
public function resolve(Request $request, $routeName, array $routeParameters)
{
$parameters = array_replace(
$request->query->all(),
array_intersect_key($routeParameters, [
$parameters = array_intersect_key($routeParameters, [
'token' => null,
])
);
]);
list ($sbas_id, $record_id, $subdefName) = $this->controller->validateToken($parameters['token']);
@@ -46,10 +39,6 @@ class MediaAccessorResolver implements ResourceResolver
$record = $databox->get_record($record_id);
$subdef = $record->get_subdef($subdefName);
$urlGenerator = $this->urlGenerator;
$url = $urlGenerator->generate($routeName, $parameters, $urlGenerator::ABSOLUTE_URL);
$embedUrl = $urlGenerator->generate('alchemy_embed_view', ['url' => $url], $urlGenerator::ABSOLUTE_URL);
return new MediaInformation($subdef, $url, $embedUrl);
return new MediaInformation($subdef, $request, $routeName, $routeParameters);
}
}

View File

@@ -12,19 +12,15 @@ namespace Alchemy\Phrasea\Media;
use Alchemy\Embed\Media\MediaInformation;
use Alchemy\Embed\Media\ResourceResolver;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
class PermalinkMediaResolver implements ResourceResolver
{
/** @var \appbox */
private $appbox;
/** @var UrlGeneratorInterface */
private $urlGenerator;
public function __construct(\appbox $appbox, UrlGeneratorInterface $urlGenerator)
public function __construct(\appbox $appbox)
{
$this->appbox = $appbox;
$this->urlGenerator = $urlGenerator;
}
public function resolve(Request $request, $routeName, array $routeParameters)
@@ -43,10 +39,6 @@ class PermalinkMediaResolver implements ResourceResolver
$record = $databox->get_record((int)$parameters['record_id']);
$subdef = $record->get_subdef($parameters['subdef']);
$urlGenerator = $this->urlGenerator;
$url = $urlGenerator->generate($routeName, $parameters, $urlGenerator::ABSOLUTE_URL);
$embedUrl = $urlGenerator->generate('alchemy_embed_view', ['url' => $url], $urlGenerator::ABSOLUTE_URL);
return new MediaInformation($subdef, $url, $embedUrl);
return new MediaInformation($subdef, $request, $routeName, $routeParameters);
}
}