/** * Encode data as JSON and set response header * * @param mixed $data * @param array $jsonOptions Options to pass to JsonFormatter::encode() * @return string|void */ public function __invoke($data, array $jsonOptions = array()) { $data = JsonFormatter::encode($data, null, $jsonOptions); if ($this->response instanceof Response) { $headers = $this->response->headers(); $headers->addHeaderLine('Content-Type', 'application/json'); } return $data; }
public function getXmlAction($isin) { $display = new DisplayHelper(); $certificate = $this->certificateRepository->load($isin); if (empty($certificate)) { return $this->response->setStatusCode(404); } try { $xml = $display->displayAsXml($certificate); } catch (\RuntimeException $e) { return $this->response->setStatusCode(405)->setContent($e->getMessage()); } $this->response->headers()->addHeaderLine('Content-type', 'application/xml'); return $this->response->setContent($xml); }
/** * Challenge Client * * Sets a 401 or 407 Unauthorized response code, and creates the * appropriate Authenticate header(s) to prompt for credentials. * * @return Zend\Authentication\Result Always returns a non-identity Auth result */ protected function _challengeClient() { if ($this->_imaProxy) { $statusCode = 407; $headerName = 'Proxy-Authenticate'; } else { $statusCode = 401; $headerName = 'WWW-Authenticate'; } $this->_response->setStatusCode($statusCode); // Send a challenge in each acceptable authentication scheme $headers = $this->_response->headers(); if (in_array('basic', $this->_acceptSchemes)) { $headers->addHeaderLine($headerName, $this->_basicHeader()); } if (in_array('digest', $this->_acceptSchemes)) { $headers->addHeaderLine($headerName, $this->_digestHeader()); } return new Authentication\Result( Authentication\Result::FAILURE_CREDENTIAL_INVALID, array(), array('Invalid or absent credentials; challenging client') ); }
public function testRequestCanSetHeaders() { $response = new Response(); $headers = new \Zend\Http\Headers(); $ret = $response->setHeaders($headers); $this->assertInstanceOf('Zend\\Http\\Response', $ret); $this->assertSame($headers, $response->headers()); }
/** * Encode data as JSON, disable layouts, and set response header * * If $keepLayouts is true, does not disable layouts. * * @param mixed $data * @param bool $keepLayouts * NOTE: if boolean, establish $keepLayouts to true|false * if array, admit params for Zend_Json::encode as enableJsonExprFinder=>true|false * this array can contains a 'keepLayout'=>true|false * that will not be passed to Zend_Json::encode method but will be used here * @return string|void */ public function __invoke($data, $keepLayouts = false) { $options = array(); if (is_array($keepLayouts)) { $options = $keepLayouts; $keepLayouts = array_key_exists('keepLayouts', $keepLayouts) ? $keepLayouts['keepLayouts'] : false; unset($options['keepLayouts']); } $data = JsonFormatter::encode($data, null, $options); if (!$keepLayouts && $this->layout instanceof Layout) { $this->layout->disableLayout(); } if ($this->response instanceof Response) { $headers = $this->response->headers(); $headers->addHeaderLine('Content-Type', 'application/json'); } return $data; }
/** * Performs a HTTP redirection to specified URL with additional data. * It may generate redirected request using GET or POST HTTP method. * The function never returns. * * @param string $url URL to redirect to * @param array $params additional variable/value pairs to send * @param Response $response * @param string $method redirection method ('GET' or 'POST') */ public static function redirect($url, $params = null, Response $response = null, $method = 'GET') { $url = self::absoluteUrl($url); $body = ""; if (null === $response) { $response = new Response(); } if ($method == 'POST') { $body = "<html><body onLoad=\"document.forms[0].submit();\">\n"; $body .= "<form method=\"POST\" action=\"{$url}\">\n"; if (is_array($params) && count($params) > 0) { foreach ($params as $key => $value) { $body .= '<input type="hidden" name="' . $key . '" value="' . $value . "\">\n"; } } $body .= "<input type=\"submit\" value=\"Continue OpenID transaction\">\n"; $body .= "</form></body></html>\n"; } else { if (is_array($params) && count($params) > 0) { if (strpos($url, '?') === false) { $url .= '?' . self::paramsToQuery($params); } else { $url .= '&' . self::paramsToQuery($params); } } } if (!empty($body)) { $response->setContent($body); } elseif (headers_sent()) { $response->setContent("<script language=\"JavaScript\"" . " type=\"text/javascript\">window.location='{$url}';" . "</script>"); } $response->setStatusCode(302); $response->headers()->addHeaderLine('Location', $url); if (!headers_sent()) { header($response->renderStatusLine()); foreach ($response->headers() as $header) { header($header->toString()); } } echo $response->getBody(); if (self::$exitOnRedirect) { exit; } }
public function testConstructorWithHttpResponse() { $status = 'false'; $errorCode = 'foobar'; $responseBody = $status . "\n" . $errorCode; $httpResponse = new Response(); $httpResponse->setStatusCode(200); $httpResponse->headers()->addHeaderLine('Content-Type', 'text/html'); $httpResponse->setContent($responseBody); $response = new ReCaptcha\Response(null, null, $httpResponse); $this->assertSame(false, $response->getStatus()); $this->assertSame($errorCode, $response->getErrorCode()); }
/** * Parse an HTTP response, adding all the cookies set in that response * * @param Response $response * @param Uri\Uri|string $ref_uri Requested URI */ public function addCookiesFromResponse($response, $ref_uri) { if (!$response instanceof Response) { throw new Exception\InvalidArgumentException('$response is expected to be a Response object'); } $cookie_hdrs = $response->headers()->get('Set-Cookie'); if (is_array($cookie_hdrs)) { foreach ($cookie_hdrs as $cookie) { $this->addCookie($cookie, $ref_uri); } } elseif (is_string($cookie_hdrs)) { $this->addCookie($cookie_hdrs, $ref_uri); } }
protected function createResponse(ZendResponse $response) { return new Response($response->getBody(), $response->getStatusCode(), $response->headers()->toArray()); }