<?php
namespace App\Controller\FakeBus;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Cookie;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/debug/fakebus/cookie")
*/
class FakeBusCookieController extends AbstractController {
/**
* @Route("/", name="fakebus_cookie_index");
*/
public function homepage(Request $r) {
return $this->render('FakeBus/Cookie/homepage.html.twig');
}
/**
* @Route("/init", name="fakebus_cookie_init");
*/
public function init(Request $r) {
$depStopExt = $r->query->get('dep');
$arrStopExt = $r->query->get('arr');
$date = $r->query->get('date');
$cookie = new Cookie('Search', json_encode(['dep' => $depStopExt, 'arr' => $arrStopExt, 'date' => $date]), strtotime('tomorrow'), '/');
$response = new Response();
$response->headers->setCookie($cookie);
return $response->setContent("params saved in cookie");
}
/**
* @Route("/result", name="fakebus_cookie_result");
*/
public function result(Request $r) {
$cookie = ($r->cookies->get('Search'));
$data = json_decode($cookie);
if($data->dep == $data->arr) die('departure and arrival must be different');
if(!$data->dep || !$data->arr || !$data->date) die ('departure, arrival and date must be set');
return $this->render('FakeBus/Cookie/resultpage.html.twig', [
'param' => $data,
'trips' => FakeBusController::getFakeTrips($data->dep, $data->arr, $data->date)
]);
}
/**
* @Route("/debug")
* Display all cookies values in json and add 1 to every request. Eg:
* curl http://127.0.0.1:8000/debug/fakebus/cookie/debug -c tmp_cookie.txt -b tmp_cookie.txt > tmp_json.json
* -c write cookie in local / -b send cookie to server
*/
public function cookieDebug(Request $r) {
$all = $r->cookies->all();
$add = $r->cookies->get('add');
$response = new JsonResponse([
'request_all' => $all
]);
$response->headers->setCookie(new Cookie('add', $add + 1, strtotime('tomorrow'), '/'));
return $response;
}
}