<?php
declare(strict_types=1);
namespace Harmonizely\Controller;
use Harmonizely\CustomDomain\RequestHandlerResolver;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\RequestStack;
use Symfony\Component\HttpFoundation\Response;
class CustomDomainController extends AbstractController
{
/**
* @var RequestStack
*/
private RequestStack $requestStack;
/**
* @var RequestHandlerResolver
*/
private RequestHandlerResolver $requestHandlerResolver;
/**
* @param RequestStack $requestStack
* @param RequestHandlerResolver $requestHandlerResolver
*/
public function __construct(RequestStack $requestStack, RequestHandlerResolver $requestHandlerResolver)
{
$this->requestStack = $requestStack;
$this->requestHandlerResolver = $requestHandlerResolver;
}
/**
* @return Response
*/
public function forwardToSchedulingPage(): Response
{
$request = $this->requestStack->getMasterRequest();
$domain = $request->headers->get(RequestHandlerResolver::CUSTOM_DOMAIN_HEADER);
$path = (string)$request->headers->get(RequestHandlerResolver::CUSTOM_DOMAIN_PATH_HEADER);
$requestHandler = $this->requestHandlerResolver->resolve($domain, $path);
if (null === $requestHandler) {
throw $this->createNotFoundException();
}
return $this->forward($requestHandler->getController(), $requestHandler->getParameters(), $request->query->all());
}
}