/** * Build a JsonResponse based on an API response object * * @param AjaxResponse $api_response The API Response * @param bool $allow_removing_headers Alter PHP's global headers to allow caching * * @return JsonResponse * @throws \RuntimeException */ private function buildHttpResponse(AjaxResponse $api_response, $allow_removing_headers = true) { if ($api_response->isCancelled()) { return new JsonResponse(['error' => "The response was cancelled"], 400); } $response = new JsonResponse(['msgs' => (object) $this->msgs->dumpRegister(), 'data' => $api_response->getData()]); $ttl = $api_response->getTtl(); if ($ttl > 0) { // Required to remove headers set by PHP session if ($allow_removing_headers) { header_remove('Expires'); header_remove('Pragma'); header_remove('Cache-Control'); } // JsonRequest sets a default Cache-Control header we don't want $response->headers->remove('Cache-Control'); $response->setClientTtl($ttl); // if we don't set Expires, Apache will add a far-off max-age and Expires for us. $response->headers->set('Expires', gmdate('D, d M Y H:i:s \\G\\M\\T', time() + $ttl)); } return $response; }
/** * Send required AMD modules list back with the response * * @param string $hook "ajax_response" * @param string $type "all" * @param AjaxResponse $response Ajax response * @param array $params Hook params * * @return AjaxResponse * @access private * @internal */ public function appendDeps($hook, $type, $response, $params) { if (!$response instanceof AjaxResponse) { return; } $response->getData()->_elgg_deps = (array) $this->amd_config->getDependencies(); return $response; }