puphpet/puphpet

View on GitHub
src/PuphpetBundle/Controller/NginxController.php

Summary

Maintainability
A
0 mins
Test Coverage
<?php

namespace PuphpetBundle\Controller;

use PuphpetBundle\Controller;
use PuphpetBundle\Helper;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;

use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class NginxController extends Controller
{
    /**
     * @param Request $request
     * @param array   $data
     * @return Response
     * @Route("/extension/nginx",
     *     name="puphpet.nginx.homepage")
     * @Method({"GET"})
     */
    public function indexAction(Request $request, array $data)
    {
        return $this->render('PuphpetBundle::nginx.html.twig', [
            'nginx' => $data,
        ]);
    }

    /**
     * @param Request $request
     * @return Response
     * @Route("/extension/nginx/vhost",
     *     name="puphpet.nginx.vhost")
     * @Method({"GET"})
     */
    public function vhostAction(Request $request)
    {
        $data = $this->getExtensionData('nginx');

        return $this->render('PuphpetBundle:nginx:vhost.html.twig', [
            'vhost' => $data['empty_vhost'],
        ]);
    }

    /**
     * @param Request $request
     * @param string  $vhostId
     * @return Response
     * @Route("/extension/nginx/vhost-rewrite/{vhostId}",
     *     name="puphpet.nginx.vhost_rewrite")
     * @Method({"GET"})
     */
    public function vhostRewriteAction(Request $request, string $vhostId)
    {
        $data = $this->getExtensionData('nginx');

        return $this->render('PuphpetBundle:nginx:vhost_rewrite.html.twig', [
            'vhostId' => $vhostId,
            'rewrite' => $data['empty_vhost_rewrite'],
        ]);
    }

    /**
     * @param Request $request
     * @param string  $vhostId
     * @param string  $pregenerated
     * @return Response
     * @Route("/extension/nginx/location/{vhostId}/{pregenerated}",
     *     name="puphpet.nginx.location")
     * @Method({"GET"})
     */
    public function locationAction(Request $request, string $vhostId, string $pregenerated = null)
    {
        $data = $this->getExtensionData('nginx');

        $pregenerated = empty($pregenerated) ? 'html' : $pregenerated;
        $locations    = empty($data['pregenerated_locations'][$pregenerated])
            ? $data['pregenerated_locations']['html']
            : $data['pregenerated_locations'][$pregenerated];

        $randString = Helper\Strings::randString(3);
        $rendered   = [];

        foreach ($locations as $uniqid => $location) {
            $rendered []= $this->renderView('PuphpetBundle:nginx:location.html.twig', [
                'uniqid'   => "{$uniqid}_{$randString}",
                'vhostId'  => $vhostId,
                'location' => $location,
            ]);
        }

        $response = new JsonResponse();
        $response->setContent(json_encode($rendered));

        return $response;
    }

    /**
     * @param Request $request
     * @param string  $vhostId
     * @param string  $locationId
     * @return Response
     * @Route("/extension/nginx/location-rewrite/{vhostId}/{locationId}",
     *     name="puphpet.nginx.location_rewrite")
     * @Method({"GET"})
     */
    public function locationRewriteAction(
        Request $request,
        string $vhostId,
        string $locationId
    ) {
        $data = $this->getExtensionData('nginx');

        return $this->render('PuphpetBundle:nginx:location_rewrite.html.twig', [
            'vhostId'    => $vhostId,
            'locationId' => $locationId,
            'rewrite'    => $data['empty_location_rewrite'],
        ]);
    }

    /**
     * @param Request $request
     * @return Response
     * @Route("/extension/nginx/upstream",
     *     name="puphpet.nginx.upstream")
     * @Method({"GET"})
     */
    public function upstreamAction(Request $request)
    {
        $data = $this->getExtensionData('nginx');

        return $this->render('PuphpetBundle:nginx:upstream.html.twig', [
            'upstream' => $data['empty_upstream'],
        ]);
    }

    /**
     * @param Request $request
     * @return Response
     * @Route("/extension/nginx/proxy",
     *     name="puphpet.nginx.proxy")
     * @Method({"GET"})
     */
    public function proxyAction(Request $request)
    {
        $data = $this->getExtensionData('nginx');

        return $this->render('PuphpetBundle:nginx:proxy.html.twig', [
            'proxy' => $data['empty_proxy'],
        ]);
    }
}