/**
  * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  */
 public function onKernelRequest(GetResponseEvent $event)
 {
     if ($event->getRequestType() != HttpKernelInterface::MASTER_REQUEST) {
         return;
     }
     // @todo make endpoint(s) customizable
     if ($event->getRequest()->getMethod() !== 'POST') {
         return;
     }
     if ($event->getRequest()->getPathInfo() != '/xmlrpc' && $event->getRequest()->getPathInfo() != '/xmlrpc.php') {
         return;
     }
     try {
         $request = $this->requestGenerator->generateFromRequest($event->getRequest());
         if (isset($this->logger)) {
             $this->logger->debug((string) $request);
         }
     } catch (UnexpectedValueException $e) {
         $event->setResponse(new Response("Invalid request XML\n" . $e->getMessage(), 400));
         return;
     }
     // @todo refactor to dynamically set follow-up events instead of testing (cors bundle like)
     $request->attributes->set('IsXmlRpcRequest', true);
     $requestContext = new RequestContext();
     $requestContext->fromRequest($request);
     $originalContext = $this->router->getContext();
     $this->router->setContext($requestContext);
     $response = $this->httpKernel->handle($request);
     $event->setResponse($response);
     $this->router->setContext($originalContext);
     if ($response instanceof Response) {
         $event->setResponse($response);
     }
 }
Beispiel #2
0
 public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
 {
     $baseContext = $this->router->getContext();
     try {
         $this->router->setContext(new RequestContext('', 'GET', $baseContext->getHost(), $baseContext->getScheme(), $baseContext->getHttpPort(), $baseContext->getHttpsPort()));
         return $this->router->generate($name, $parameters, $referenceType);
     } finally {
         $this->router->setContext($baseContext);
     }
 }
 public function __construct(Registry $doctrine, \Swift_Mailer $mailer, EngineInterface $templateEngine, RouterInterface $router, BatchLimiterInterface $limiter)
 {
     $this->em = $doctrine->getManager();
     $this->mailer = $mailer;
     $this->templateEngine = $templateEngine;
     $this->router = $router;
     $this->limiter = $limiter;
     $this->debugOut = new NullOutput();
     $this->router->setContext(new RequestContext('', 'GET', 'www.gotchosen.com', 'https'));
 }
Beispiel #4
0
 public function match($pathInfo)
 {
     $baseContext = $this->router->getContext();
     $pathInfo = str_replace($baseContext->getBaseUrl(), '', $pathInfo);
     $request = Request::create($pathInfo);
     $context = (new RequestContext())->fromRequest($request);
     $context->setPathInfo($pathInfo);
     try {
         $this->router->setContext($context);
         return $this->router->match($request->getPathInfo());
     } finally {
         $this->router->setContext($baseContext);
     }
 }
Beispiel #5
0
 public function generate($name, $parameters = [], $referenceType = self::ABSOLUTE_PATH)
 {
     if (is_object($name)) {
         if ($name instanceof ResourceInterface) {
             $embedRouteName = $this->getEmbedRouteName($name, $parameters);
             $name = $embedRouteName === false ? $this->getItemRouteName($name, 'collection') : $embedRouteName;
         } else {
             $parameters = $this->getParamsByResource($name);
         }
     }
     if (isset($parameters['id']) && $parameters['id'] === 0) {
         return null;
     }
     $baseContext = $this->router->getContext();
     try {
         $this->router->setContext(new RequestContext('', 'GET', $baseContext->getHost(), $baseContext->getScheme(), $baseContext->getHttpPort(), $baseContext->getHttpsPort()));
         try {
             return $this->router->generate($name, $parameters, $referenceType);
         } catch (\Exception $e) {
             throw new \Exception($e->getMessage(), $e->getCode());
         }
     } finally {
         $this->router->setContext($baseContext);
     }
 }
Beispiel #6
0
 /**
  * Checks if it's needed to redirect to setup wizard.
  *
  * @param \Symfony\Component\HttpKernel\Event\GetResponseEvent $event
  */
 public function onKernelRequestSetup(GetResponseEvent $event)
 {
     if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) {
         if ($this->defaultSiteAccess !== 'setup') {
             return;
         }
         $request = $event->getRequest();
         $requestContext = $this->router->getContext();
         $requestContext->fromRequest($request);
         $this->router->setContext($requestContext);
         $setupURI = $this->router->generate('ezpublishSetup');
         if ($requestContext->getBaseUrl() . $request->getPathInfo() === $setupURI) {
             return;
         }
         $event->setResponse(new RedirectResponse($setupURI));
     }
 }
 /**
  * Add a Router to the index
  *
  * @param RouterInterface $router
  * @param integer         $priority
  */
 public function add(RouterInterface $router, $priority = 0)
 {
     if (empty($this->routers[$priority])) {
         $this->routers[$priority] = array();
     }
     if ($router instanceof RequestContextAwareInterface) {
         $context = $this->getContext();
         if (null !== $context) {
             $router->setContext($context);
         }
     }
     $this->routers[$priority][] = $router;
     $this->sortedRouters = array();
 }
 /**
  * {@inheritdoc}
  */
 public function setContext(RequestContext $context)
 {
     $this->router->setContext($context);
 }