/** * @Route("/{_locale}/get/seed/{seed}", name="get_by_seed_locale") * @Route("/get/seed/{seed}", name="get_by_seed") */ public function getBySeedAction(Request $request, $seed) { $return = array('status' => 1, 'message' => '', 'data' => null); // retorno padrão $router = $this->container->get('router'); $translator = $this->get('translator'); // da uma limpada $seed = md5($seed . $this->container->getParameter('secret')); // extrai um numero de 0~9 $seed = substr(base_convert(md5($seed), 16, 10), -1); srand($seed); // usa pro rand // image path $image_path = $request->getUriForPath('/image/cenouro.png'); $message = ''; // são tão poucas opções que nem vale a pena criar DB // balanceia as chances um pouco switch (rand(1, 4)) { case 1: $message = 'Yes!'; break; case 2: $message = 'No!'; break; default: switch (rand(1, 6)) { case 1: $message = 'Maybe.'; break; case 2: $message = 'Sure!'; break; case 3: $message = "I really don't care."; break; case 4: $message = "Of course not."; break; case 5: $message = "Ask again."; break; case 6: $message = "Screw you!"; break; } break; } // traduz, se precisar $message = $translator->trans($message); // responde $data = array('message' => $message, 'image' => $image_path); $return['data'] = $data; $response = new JsonResponse($return); // cache $response->setPublic(); $response->setSharedMaxAge(600000); $response->headers->addCacheControlDirective('must-revalidate', true); return $response; }
public function getListAction(Application $app) { $userList = $this->repository->findAll(); $date = new \DateTime(); $date->modify('+' . self::MAX_AGE . ' seconds'); $response = new JsonResponse($userList, JsonResponse::HTTP_OK); $responseHash = sha1($response->getContent()); $response->setMaxAge(self::MAX_AGE); $response->setSharedMaxAge(self::MAX_AGE); $response->setExpires($date); $response->setETag($responseHash); $response->isNotModified($app['request']); return $response; }
/** * Lists all Entities * * @Route("/data/index_all.json", name="servicios_index_json" ) * @Method("GET") * @Template() */ public function indexAllJsonAction(Request $request) { $em = $this->getDoctrine()->getManager(); $entities = $em->getRepository('BcTicCamIpalBundle:Servicio')->createQueryBuilder('s')->join('s.contratos', 'c')->join('c.empresas', 'e')->join('s.area', 'a')->join('a.pais', 'p')->where('c.visible = 1')->orderBy('s.nombre', 'ASC'); $role = false; if ($role) { //Do Nothing } else { $paises = array(); foreach ($this->get('security.context')->getToken()->getUser()->getPais() as $pais) { $paises[$pais->getId()] = $pais->getId(); } $entities->andWhere('p.id IN (:paises)'); $entities->setParameter('paises', $paises); } $data = array(); foreach ($entities->getQuery()->getResult() as $entity) { $data[] = array('id' => $entity->getId(), 'nombre' => $entity->__toString()); } $response = new JsonResponse($data); $response->setSharedMaxAge(600); //Cache 10 minutes return $response; }
/** * @Route( * "/packages/{name}/stats/all.json", * name="package_stats", * requirements={"name"="[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+?"} * ) */ public function overallStatsAction(Request $req, Package $package, Version $version = null) { if ($from = $req->query->get('from')) { $from = new DateTimeImmutable($from); } else { $from = $this->guessStatsStartDate($version ?: $package); } if ($to = $req->query->get('to')) { $to = new DateTimeImmutable($to); } else { $to = new DateTimeImmutable('-2days 00:00:00'); } $average = $req->query->get('average', $this->guessStatsAverage($from, $to)); $datePoints = $this->createDatePoints($from, $to, $average, $package, $version); $redis = $this->get('snc_redis.default'); if ($average === 'Daily') { $datePoints = array_map(function ($vals) { return $vals[0]; }, $datePoints); $datePoints = array('labels' => array_keys($datePoints), 'values' => $redis->mget(array_values($datePoints))); } else { $datePoints = array('labels' => array_keys($datePoints), 'values' => array_values(array_map(function ($vals) use($redis) { return array_sum($redis->mget(array_values($vals))); }, $datePoints))); } $datePoints['average'] = $average; if ($average !== 'daily') { $dividers = ['monthly' => 30.41, 'weekly' => 7]; $divider = $dividers[$average]; $datePoints['values'] = array_map(function ($val) use($divider) { return ceil($val / $divider); }, $datePoints['values']); } if (empty($datePoints['labels']) && empty($datePoints['values'])) { $datePoints['labels'][] = date('Y-m-d'); $datePoints['values'][] = 0; } $response = new JsonResponse($datePoints); $response->setSharedMaxAge(1800); return $response; }
<?php require_once __DIR__ . '/../vendor/autoload.php'; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\JsonResponse; $app = new Silex\Application(); //$app['debug'] = true; // Twig $app->register(new Silex\Provider\TwigServiceProvider(), array('twig.path' => __DIR__ . '/../views')); // Cache $app->register(new Silex\Provider\HttpCacheServiceProvider(), array('http_cache.cache_dir' => __DIR__ . '/../cache/', 'http_cache.esi' => null)); // Weekend, where the magic happens. $app['weekend'] = function () { return new \Ternel\Weekend(); }; // Website $app->get('/', function () use($app) { $response = new Response($app['twig']->render('index.html.twig', ['text' => $app['weekend']->getText(), 'subtext' => $app['weekend']->getSubText()]), 200); $response->setPublic(); $response->setSharedMaxAge(60); return $response; }); // Api $app->get('/api', function () use($app) { $response = new JsonResponse(['text' => $app['weekend']->getText(), 'subtext' => $app['weekend']->getSubText()], 200); $response->setPublic(); $response->setSharedMaxAge(60); return $response; }); $app['http_cache']->run();
/** * @Template() * @Route( * "/packages/{name}.{_format}", * name="view_package", * requirements={"name"="[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+?", "_format"="(json)"}, * defaults={"_format"="html"} * ) * @Method({"GET"}) */ public function viewPackageAction(Request $req, $name) { $repo = $this->getDoctrine()->getRepository('PackagistWebBundle:Package'); try { /** @var $package Package */ $package = $repo->findOneByName($name); } catch (NoResultException $e) { if ('json' === $req->getRequestFormat()) { return new JsonResponse(array('status' => 'error', 'message' => 'Package not found'), 404); } if ($providers = $repo->findProviders($name)) { return $this->redirect($this->generateUrl('view_providers', array('name' => $name))); } return $this->redirect($this->generateUrl('search', array('q' => $name, 'reason' => 'package_not_found'))); } if ('json' === $req->getRequestFormat()) { $data = $package->toArray(); try { $data['downloads'] = $this->get('packagist.download_manager')->getDownloads($package); $data['favers'] = $this->get('packagist.favorite_manager')->getFaverCount($package); } catch (ConnectionException $e) { $data['downloads'] = null; $data['favers'] = null; } // TODO invalidate cache on update and make the ttl longer $response = new JsonResponse(array('package' => $data)); $response->setSharedMaxAge(3600); return $response; } $version = null; $expandedVersion = null; $versions = $package->getVersions(); if (is_object($versions)) { $versions = $versions->toArray(); } usort($versions, Package::class . '::sortVersions'); if (count($versions)) { $versionRepo = $this->getDoctrine()->getRepository('PackagistWebBundle:Version'); $version = $versionRepo->getFullVersion(reset($versions)->getId()); $expandedVersion = reset($versions); foreach ($versions as $v) { if (!$v->isDevelopment()) { $expandedVersion = $v; break; } } $expandedVersion = $versionRepo->getFullVersion($expandedVersion->getId()); } $data = array('package' => $package, 'version' => $version, 'versions' => $versions, 'expandedVersion' => $expandedVersion); try { $data['downloads'] = $this->get('packagist.download_manager')->getDownloads($package); if ($this->getUser()) { $data['is_favorite'] = $this->get('packagist.favorite_manager')->isMarked($this->getUser(), $package); } } catch (ConnectionException $e) { } $data['dependents'] = $repo->getDependentCount($package->getName()); if ($maintainerForm = $this->createAddMaintainerForm($package)) { $data['addMaintainerForm'] = $maintainerForm->createView(); } if ($removeMaintainerForm = $this->createRemoveMaintainerForm($package)) { $data['removeMaintainerForm'] = $removeMaintainerForm->createView(); } if ($deleteForm = $this->createDeletePackageForm($package)) { $data['deleteForm'] = $deleteForm->createView(); } if ($this->getUser() && ($this->isGranted('ROLE_DELETE_PACKAGES') || $package->getMaintainers()->contains($this->getUser()))) { $data['deleteVersionCsrfToken'] = $this->get('security.csrf.token_manager')->getToken('delete_version'); } return $data; }
/** * List a Contrato * * @Route("/data/show.json", name="contrato_json" ) * @Method("POST") * @Template() */ public function showJsonAction(Request $request) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('BcTicCamIpalBundle:Contrato')->find($request->request->get('id')); if (!$entity) { return new JsonResponse(array()); } $data = array('id' => $entity->getId(), 'nombre' => $entity->__toString(), 'empresas' => $entity->getEmpresas(), 'area' => $entity->getArea()->getId(), 'servicio' => $entity->getServicio()->getId(), 'subgerencia' => $entity->getSubGerencia()->getId(), 'gerencia' => $entity->getSubGerencia()->getGerencia()->getId(), 'mandante' => $entity->getMandante()->getId(), 'subcontrato' => $entity->getSubcontrato(), 'pais' => $entity->getPais()->getId()); $response = new JsonResponse($data); $response->setSharedMaxAge(600); //Cache 10 minutes return $response; }
/** * Lists all Prevencionistas by Query * * @Route("/data/prevencionistas.json", name="registros_prevencionistas_json") * @Method("GET") * @Template() */ public function indexPrevencionistaJsonAction(Request $request) { $em = $this->getDoctrine()->getManager(); $entities = $em->getRepository('BcTicCamIpalBundle:Registro')->createQueryBuilder('r')->where('r.visible = 1')->join('r.roles', 'rol')->where('rol.nombre = :rol')->andWhere('r.nombre LIKE :query')->setParameters(array('rol' => 'PREVENCIONISTA', 'query' => '%' . $request->request->get('query', '') . '%'))->orderBy('r.nombre', 'ASC')->getQuery(); $data = array(); foreach ($entities->getResult() as $entity) { $data[] = array('id' => $entity->getId(), 'nombre' => ucwords(strtolower($entity->__toString()))); } //AHora todos los usuarios que sean Inspectores $entities = $em->getRepository('BcTicCamIpalBundle:Usuario')->createQueryBuilder('u')->join('u.roles', 'rol')->join('u.pais', 'p')->where('rol.nombre = :rol AND u.visible = 1')->andWhere('u.nombre LIKE :query')->setParameters(array('rol' => 'PREVENCIONISTA', 'query' => '%' . $request->request->get('query', '') . '%'))->orderBy('u.nombre', 'ASC'); $role = false; if ($role) { //Do Nothing } else { $entities->andWhere('p.id IN (:paises)'); $paises = array(); foreach ($this->get('security.context')->getToken()->getUser()->getPais() as $pais) { $paises[$pais->getId()] = $pais->getId(); } $entities->setParameter(':paises', $paises); } foreach ($entities->getQuery()->getResult() as $entity) { $data[] = array('id' => $entity->getId(), 'nombre' => ucwords(strtolower($entity->__toString()))); } $response = new JsonResponse($data); $response->setSharedMaxAge(600); //Cache 10 minutes return $response; }
/** * Lists all Empleados by Query * * @Route("/data/supervisores.json", name="registros_supervisores_json") * @Method("POST") * @Template() */ public function indexSupervisoresJsonAction(Request $request) { $em = $this->getDoctrine()->getManager(); $entities = $em->getRepository('BcTicCamIpalBundle:Empleado')->createQueryBuilder('r')->where(' (p.id = :pais) AND ( (r.rut LIKE :query) OR (r.nombre LIKE :query) ) ')->orderBy('r.nombre', 'ASC')->join('r.pais', 'p')->setParameters(array('pais' => $request->get('pais'), 'query' => '%' . $request->get('query') . '%'))->getQuery(); $data = array(); foreach ($entities->getResult() as $entity) { $data[] = array('id' => $entity->getId(), 'nombre' => ucwords(strtolower($entity->__toString()))); } $response = new JsonResponse($data); $response->setSharedMaxAge(600); //Cache 10 minutes return $response; }