public function onRoute(MvcEvent $e) { $request = $e->getRequest(); if (!$request instanceof HttpRequest) { return; } $application = $e->getApplication(); $serviceLocator = $application->getServiceManager(); // Load the configuration for maintenance mode if ($serviceLocator->has('MaintenanceConfig')) { $config = $serviceLocator->get('MaintenanceConfig'); } else { $config = new Config(); } if (!$config->isEnabled()) { // Maintenance mode is disabled. return; } // Check the white list if ($request instanceof PhpRequest) { $address = $request->getServer('REMOTE_ADDR', null); } else { $address = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : null; } if (!empty($address)) { if (in_array($address, $config->getWhitelist())) { return; } } // Render the maintenance layout $renderer = new PhpRenderer(); if ($serviceLocator->has('ViewHelperManager')) { $renderer->setHelperPluginManager($serviceLocator->get('ViewHelperManager')); } $resolver = new TemplateMapResolver(); $resolver->add('maintenance', $config->getTemplate()); $renderer->setResolver($resolver); $content = $renderer->render('maintenance'); // Set the response $response = $e->getResponse(); if (!$response instanceof HttpResponse) { $response = new HttpResponse(); } $statusCode = $config->getStatusCode(); $response->setStatusCode($statusCode); if ($statusCode === 503 && !$response->getHeaders()->has('Retry-After')) { $retryDate = $config->getRetryAfter(); if ($retryDate instanceof DateTime) { $retryAfter = new RetryAfter(); $retryAfter->setDate($retryDate); $response->getHeaders()->addHeader($retryAfter); } } $response->setContent($content); $e->setResponse($response); // Return the response return $response; }
public function vCardAction() { $contact = $this->contactService->find($this->params('id')); if (!$contact) { return $this->notFoundAction(); } $builder = new VCardBuilder(); switch (true) { case $contact instanceof Company: $vcard = $builder->buildCompany($contact); break; case $contact instanceof Person: $vcard = $builder->buildPerson($contact); break; default: throw new RuntimeException('Invalid type provided.'); } $data = $vcard->serialize(); $response = new Response(); $response->setStatusCode(Response::STATUS_CODE_200); $response->setContent($data); $headers = $response->getHeaders(); $headers->addHeaderLine('Content-Disposition', 'attachment; filename="' . $contact->getDisplayName() . '.vcf"'); $headers->addHeaderLine('Content-Length', strlen($data)); $headers->addHeaderLine('Content-Type', 'text/plain'); return $response; }
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); }
function plugin_preview_action() { global $vars; $page = isset($vars['page']) ? $vars['page'] : ''; $modified = 0; $response = new Response(); if (!empty($page)) { $wiki = Factory::Wiki($page); if ($wiki->isReadable()) { $source = $wiki->get(); array_splice($source, 10); $response->setStatusCode(Response::STATUS_CODE_200); $response->setContent('<' . '?xml version="1.0" encoding="UTF-8"?' . ">\n" . RendererFactory::factory($source)); $headers = Header::getHeaders('text/xml', $wiki->time()); } else { $response->setStatusCode(Response::STATUS_CODE_404); $headers = Header::getHeaders('text/xml'); } } else { $response->setStatusCode(Response::STATUS_CODE_404); $headers = Header::getHeaders('text/xml'); } $response->getHeaders()->addHeaders($headers); header($response->renderStatusLine()); foreach ($response->getHeaders() as $_header) { header($_header->toString()); } echo $response->getBody(); exit; }
protected function setResponseContent(Response $response, array $data) { if ($response instanceof \Zend\Http\PhpEnvironment\Response) { $response->getHeaders()->addHeaderLine('Content-Type', 'application/json'); $response->setContent(json_encode(array_merge(array('status' => $response->getStatusCode()), $data))); } return $response; }
public function testIsValidDetectsGoodResponse() { $body = 'oauth_token=jZaee4GF52O3lUb9&oauth_token_secret=J4Ms4n8sxjYc0A8K0KOQFCTL0EwUQTri'; $response = new HTTPResponse(); $response->setContent($body)->setStatusCode(200); $token = new AccessToken($response); $this->assertTrue($token->isValid()); }
public function testSet201StatusCodeIfPost() { $request = new HttpRequest(); $request->setMethod(HttpRequest::METHOD_POST); $this->event->setRequest($request); $this->response->setContent('foo'); $this->resourceResponseListener->finishResponse($this->event); $this->assertEquals(201, $this->response->getStatusCode()); }
/** * @dataProvider exceptionDataProvider */ public function testExceptionsAreThrownOnErrors($statusCode, $content, $expectedException) { $method = new ReflectionMethod('EzMail\\Service\\MandrillService', 'parseResponse'); $method->setAccessible(true); $response = new HttpResponse(); $response->setStatusCode($statusCode); $response->setContent($content); $this->setExpectedException($expectedException); $method->invoke($this->service, $response); }
/** * Creates a new entry * * @param mixed $data * @return Response */ public function create($data) { $sintegra = new Sintegra(); $sintegra->exchangeArray($data); $this->getSintegraTable()->saveSintegra($sintegra); $response = new Response(); $response->setStatusCode(200); $response->setContent(json_encode(array('status' => 'ok'))); return $response; }
public function testConstructorWithMissingStatus() { $params = array('error' => 'error'); $httpResponse = new Response(); $httpResponse->setStatusCode(200); $httpResponse->getHeaders()->addHeaderLine('Content-Type', 'text/html'); $httpResponse->setContent(json_encode($params)); $response = new CaptchaResponse($httpResponse); $this->assertSame(false, $response->getStatus()); }
/** * Wrap the Jaxon response into an HTTP response. * * @param $code The HTTP Response code * * @return \Zend\Http\Response */ public function httpResponse($code = '200') { // Send HTTP Headers // $this->response->sendHeaders(); // Create and return a ZF2 HTTP response $response = new HttpResponse(); $headers = $response->getHeaders(); $headers->addHeaderLine('Content-Type', $this->response->getContentType() . '; charset=' . $this->response->getCharacterEncoding()); $response->setStatusCode(intval($code)); $response->setContent($this->response->getOutput()); return $response; }
/** * @return \WebArchive\SnapshotCollection */ private function generateSnapshots() { $uri = 'http://pokap.io/'; $provider = new MementoProvider(); $client = new Client($provider->createUrlRequest($uri)); $response = new Response(); $response->setContent(implode(gzfile(__DIR__ . '/fixtures/pokap.io-memento.gz'))); $adapter = new TestAdapter(); $adapter->setResponse($response); $client->setAdapter($adapter); return $provider->generateSnapshots($client->send(), $uri); }
/** * @param int $year * * @return \WebArchive\SnapshotCollection */ private function generateSnapshots($year) { $uri = 'http://archive.org/'; $provider = new WayBackProvider($year); $client = new Client($provider->createUrlRequest($uri)); $response = new Response(); $response->setContent(implode(gzfile(__DIR__ . '/fixtures/archive.org-' . $year . '.html.gz'))); $adapter = new TestAdapter(); $adapter->setResponse($response); $client->setAdapter($adapter); return $provider->generateSnapshots($client->send(), $uri); }
public function testConstructorWithHttpResponse() { $status = 'false'; $errorCode = 'foobar'; $responseBody = $status . "\n" . $errorCode; $httpResponse = new Response(); $httpResponse->setStatusCode(200); $httpResponse->getHeaders()->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()); }
public function testWrongContentTypeThrowsInvalidResponseException() { $this->setExpectedException('Magium\\Mail\\Api\\InvalidResponseException'); $builder = $this->getMockBuilder('Zend\\Http\\Client')->setMethods(['send']); $client = $builder->getMock(); /* @var $client \Zend\Http\Client */ $response = new Response(); $response->setContent(json_encode(['error' => 'error message'])); $response->setHeaders(Headers::fromString('Content-Type: wrong')); $client->expects($this->once())->method('send')->willReturn($response); $generator = new Generator(new Configuration(), $client, 'abcd'); $generator->generate(); }
public function testGetAll() { $clientMock = $this->getClientMock(); $clientMock->expects($this->exactly(2))->method('setUri')->withConsecutive(['https://api.github.com/users/octocat/followers'], ['https://api.github.com/users/octocat/following']); $responseFollowers = new Response(); $responseFollowers->setContent('[{"login": "******"},{"login": "******"},{"login": "******"}]'); $responseFollowing = new Response(); $responseFollowing->setContent('[{"login": "******"},{"login": "******"},{"login": "******"}]'); $clientMock->expects($this->exactly(2))->method('send')->will($this->onConsecutiveCalls($responseFollowers, $responseFollowing)); $this->sut->setHttpClient($clientMock); $actual = $this->sut->getAll('octocat'); $expected = ['tekkub', 'mdo', 'charliesome', 'benbalter', 'muan', 'jlord']; $this->assertEquals($expected, $actual); }
public function testUrlIsRight() { $builder = $this->getMockBuilder('Zend\\Http\\Client')->setMethods(['send']); $client = $builder->getMock(); /* @var $client \Zend\Http\Client */ $response = new Response(); $response->setContent(json_encode(['email' => '*****@*****.**'])); $response->setHeaders(Headers::fromString('Content-Type: application/json')); $client->expects($this->once())->method('send')->willReturn($response); $configuration = new Configuration(); $generator = new Generator($configuration, $client, 'abcd'); $email = $generator->generate(); self::assertEquals('*****@*****.**', $email); self::assertEquals($configuration->getApiEndpointUrl(), $client->getUri()->toString()); }
/** * Get the output with given format, false if nothing: better throw an exception... * * @param array $content * @return \Zend\View\Model\JsonModel|\Zend\Http\Response */ public function setupOutput(array $content) { switch ($this->outputFormat) { case "json": if ($this->getStatusCode() != 200) { $jsonModel = new JsonModel($content); return $jsonModel; } break; case "xml": case "rdf": $response = new Response(); $response->setStatusCode($this->getStatusCode()); $response->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=utf-8'); $response->setContent($this->array2xml($content)); return $response; } return false; }
public function doAction() { $token = $this->getHttpRequestVerifier()->verify($this); $this->getHttpRequestVerifier()->invalidate($token); $gateway = $this->getPayum()->getGateway($token->getGatewayName()); try { $gateway->execute(new Refund($token)); } catch (ReplyInterface $reply) { if ($reply instanceof HttpRedirect) { $this->redirect()->toUrl($reply->getUrl()); } if ($reply instanceof HttpResponse) { $this->getResponse()->setContent($reply->getContent()); $response = new Response(); $response->setStatusCode(200); $response->setContent($reply->getContent()); return $response; } throw new \LogicException('Unsupported reply', null, $reply); } $this->redirect()->toUrl($token->getAfterUrl()); }
public function testOnDispatchStatus200() { $resolver = $this->getMock(ResolverInterface::class); $assetManager = $this->getMock(AssetManager::class, array('resolvesToAsset', 'setAssetOnResponse'), array($resolver)); $assetManager->expects($this->once())->method('resolvesToAsset')->will($this->returnValue(true)); $amResponse = new Response(); $amResponse->setContent('bacon'); $assetManager->expects($this->once())->method('setAssetOnResponse')->will($this->returnValue($amResponse)); $serviceManager = $this->getMock(ServiceLocatorInterface::class); $serviceManager->expects($this->any())->method('get')->will($this->returnValue($assetManager)); $application = $this->getMock(ApplicationInterface::class); $application->expects($this->once())->method('getServiceManager')->will($this->returnValue($serviceManager)); $event = new MvcEvent(); $response = new Response(); $request = new Request(); $module = new Module(); $event->setApplication($application); $response->setStatusCode(404); $event->setResponse($response); $event->setRequest($request); $return = $module->onDispatch($event); $this->assertEquals(200, $return->getStatusCode()); }
public function testValidate() { $response = new Response(); # print_r(get_class_methods($response)); # die(); $response->setContent('{"access_token": "f1876e22c5fa2eedab1f02545c175639d649a406",' . '"expires_in": 3600,' . '"token_type": "Bearer",' . '"scope": "",' . '"refresh_token": "19a9bf36cc42c62ba3d4ae047746d589a77448dc"' . '}'); $mockHttpClient = M::mock('Zend\\Http\\Client'); $mockHttpClient->shouldReceive('setUri')->once(); $mockHttpClient->shouldReceive('setMethod')->once(); $mockHttpClient->shouldReceive('setHeaders')->once(); $mockHttpClient->shouldReceive('setRawBody')->once(); $mockHttpClient->shouldReceive('send')->once()->andReturn($response); $oAuth2Service = $this->serviceManager->get('ZF\\OAuth2\\Client\\Service\\OAuth2Service'); $oAuth2Service->setHttpClient($mockHttpClient); $access_token = $oAuth2Service->validate('default', array('code' => 'code', 'state' => $this->state)); $compare = new \stdClass(); $compare->access_token = 'f1876e22c5fa2eedab1f02545c175639d649a406'; $compare->expires_in = 3600; $compare->token_type = 'Bearer'; $compare->scope = ''; $compare->refresh_token = '19a9bf36cc42c62ba3d4ae047746d589a77448dc'; $this->assertEquals($access_token, $compare); }
private function sendHandshakeResponse() { // Last 8 bytes of the client's handshake are used for key calculation later $l8b = $this->request->getContent(); // Check for 2-key based handshake (Hixie protocol draft) $key1 = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key1')->getFieldValue(); $key2 = $this->getHandshakeRequest()->getHeader('Sec-Websocket-Key2')->getFieldValue(); // Origin checking (TODO) $originHeader = $this->getHandshakeRequest()->getHeader('Origin', null); $host = $this->getHandshakeRequest()->getHeader('Host')->getFieldValue(); $location = $this->getHandshakeRequest()->getUriString(); // Build response $response = new Response(); $response->setStatusCode(101); $response->setReasonPhrase("WebSocket Protocol Handshake"); $headers = new Headers(); $response->setHeaders($headers); $headers->addHeaderLine("Upgrade", "WebSocket"); $headers->addHeaderLine("Connection", "Upgrade"); if ($originHeader) { $headers->addHeaderLine("Sec-WebSocket-Origin", $originHeader->getFieldValue()); } $headers->addHeaderLine("Sec-WebSocket-Location", "ws://{$host}{$location}"); // Build HIXIE response $response->setContent(self::calcHixieResponse($key1, $key2, $l8b)); $this->setResponse($response); $handshakeRequest = new Handshake($this->getHandshakeRequest(), $this->getHandshakeResponse()); $this->emit("handshake", [$handshakeRequest]); if ($handshakeRequest->isAborted()) { $this->close(); } else { $this->socket->write($response->toString()); $this->logger->debug("Got an HYBI style request, sent HYBY handshake response"); $this->emit("connect"); } }
public function xmlAction() { $request = $this->getRequest(); if (!$request->isPost()) { return $this->redirect()->toRoute('home'); } $press9 = ["+13234645488", "+13234630229", "+13234637046", "+13234606024", "+13234606862", "+13238757245", "+12066821474", "+12028984721", "+13104376059", "+13104376078", "+13104376057", "+13104377159", "+13104376172", "+13104376175", "+13104376790", "+13104376058", "+13103011762", "+13108232832", "+13108232833"]; $press9twice = ["+12132217960", "+12132217953"]; $press9SunsetGordon = ["+12025541092"]; if (isset($_POST['From']) && in_array($_POST['From'], $press9)) { $ID = 9; } elseif (isset($_POST['From']) && in_array($_POST['From'], $press9twice)) { $ID = '9wwww9'; } elseif (isset($_POST['From']) && in_array($_POST['From'], $press9SunsetGordon)) { $ID = '9www#'; } else { $ID = 6; } $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Response>\n <Play digits=\"wwww{$ID}\" />\n</Response>\n"; $response = new Response(); $response->getHeaders()->addHeaderLine('Content-Type', 'text/xml; charset=utf-8'); $response->setContent($xml); return $response; }
/** * 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; } }
/** * @group ZF-8330 */ public function testGetsFeedLinksAndNormalisesRelativeUrlsOnUriWithPath() { $currClient = Reader\Reader::getHttpClient(); $testAdapter = new TestAdapter(); $response = new HttpResponse(); $response->setStatusCode(200); $response->setContent('<!DOCTYPE html><html><head><link rel="alternate" type="application/rss+xml" href="../test.rss"><link rel="alternate" type="application/atom+xml" href="/test.atom"></head><body></body></html>'); $testAdapter->setResponse($response); Reader\Reader::setHttpClient(new HttpClient(null, array('adapter' => $testAdapter))); $links = Reader\Reader::findFeedLinks('http://foo/bar'); Reader\Reader::setHttpClient($currClient); $this->assertEquals('http://foo/test.rss', $links->rss); $this->assertEquals('http://foo/test.atom', $links->atom); }
/** * @covers Hermes\Api\Response::__construct * @covers Hermes\Api\Response::getContent */ public function testGetContent() { $http = new Client(); $response = new ZendResponse(); $headers = new Headers(); $headers->addHeaderLine('Content-Type', 'application/json'); $response->setHeaders($headers); $response->setContent(static::$sampleJson); $this->object = new Response($http, $response); $content = $this->object->getContent(); }
/** * 出力 * @param array $headers ヘッダー(別途Header::getHeaders()で指定すること) * @param int $status ステータスコード * @param string $body 内容 * @return void */ public static function writeResponse($headers, $status = Response::STATUS_CODE_200, $body = '') { global $_string; // なぜかこの行を出力しないと503エラーが起きる echo ""; // レスポンスをコンストラクト $response = new Response(); if (!empty($body)) { if ($status == Response::STATUS_CODE_200 && isset($headers['If-None-Match']) && !isset($headers['ETag'])) { // Modifiedヘッダーが出力されてない場合、出力内容からETagを生成 // 負荷対策にはならないが転送量を抑えることができる $hash = md5($body); if (preg_match('/' . $hash . '/', $headers['If-None-Match'])) { $status = Response::STATUS_CODE_304; } $headers['Etag'] = $hash; } else { if ($status == Response::STATUS_CODE_401) { // レスポンスコードが401の場合、認証画面を出力 $headers['WWW-Authenticate'] = Auth::getAuthHeader(); } } // 内容が存在する場合容量をContent-Lengthヘッダーに出力 // if (!isset($headers['Content-Length'])){ $headers['Content-Length'] = strlen($body); // } // レスポンスに内容を追加 $response->setContent($body); } // ajaxで送信した時に、net::ERR_CONTENT_LENGTH_MISMATCHエラーが発生するので、 // その場合、Content Lengthヘッダーを出力しない if (IS_AJAX) { unset($headers['Content-Length']); } // ステータスコードを出力 $response->setStatusCode($status); // ヘッダーをソート ksort($headers); // ヘッダーを指定 $response->getHeaders()->addHeaders($headers); // ヘッダー出力をチェック if (headers_sent($file, $line)) { die(sprintf('Header::writeResponse(): ' . $_string['header_sent'], Utility::htmlsc($file), $line)); exit; } // ステータスコードを出力 header($response->renderStatusLine()); // ヘッダーを出力 foreach ($response->getHeaders() as $_header) { header($_header->toString()); } if (!empty($body)) { // 内容を出力 echo $response->getBody(); } // 出力バッファをフラッシュ flush(); // 終了 exit; }
public function testEventManagerListensOnClassNameByDefault() { $response = new Response(); $response->setContent('short circuited!'); $events = new SharedEventManager(); $events->attach(get_class($this->controller), 'dispatch', function($e) use ($response) { return $response; }, 10); $this->controller->events()->setSharedManager($events); $result = $this->controller->dispatch($this->request, $this->response); $this->assertSame($response, $result); }
/** * @param MvcEvent $e * @return Response, \Zend\Json\Server\Response */ public function onPreDispatch(MvcEvent $e) { /** * @var Response $response */ $routeMatch = $e->getRouteMatch(); $controller = strtolower($routeMatch->getParam('controller')); $action = strtolower($routeMatch->getParam('action')); $serviceManager = $e->getApplication()->getServiceManager(); $request = $serviceManager->get('Request'); $serverParam = $request->getServer(); $serviceUserAuthentication = $serviceManager->get('library_backoffice_auth'); $aclManager = new Aclmanager($serviceManager); $loginRequired = false; $homeRedirect = false; if ($serviceUserAuthentication->hasIdentity()) { if (!$serviceUserAuthentication->getIdentity()) { $role = ROLE_GUEST; } else { $role = $serviceUserAuthentication->getIdentity()->id; } if (!$aclManager->hasResource($controller) || !$aclManager->isAllowed($role, $controller, $action)) { $homeRedirect = true; } } else { $role = ROLE_GUEST; if (!$aclManager->hasResource($controller) || !$aclManager->isAllowed($role, $controller, $action)) { $loginRequired = true; } } // store user's last visited url in session if (!in_array($controller, ['controller_backofficeuser_authentication']) && !$serviceManager->get('request')->isXmlHttpRequest()) { $session_last_visit = Helper::getSessionContainer('last_visit'); $session_last_visit->last_visit_url = $serverParam->get('REQUEST_URI'); } if ($loginRequired) { if ($serviceManager->get('request')->isXmlHttpRequest()) { $response = new Response(); $response->setContent('{"message":"_LOGIN_REQUIRED_", "aaData":[]}'); return $response; } else { $url = $e->getRouter()->assemble([], ['name' => 'backoffice_user_login']); $response = $e->getResponse(); if ($serverParam->get('REQUEST_URI') != '/') { $url = $url . '?request_url=' . $serverParam->get('REQUEST_URI'); } $response->getHeaders()->addHeaderLine('Location', $url); $response->setStatusCode(302); $response->sendHeaders(); return $response; } } if ($homeRedirect) { $url = $e->getRouter()->assemble([], ['name' => 'backoffice_user_login']); $response = $e->getResponse(); $response->getHeaders()->addHeaderLine('Location', $url); $response->setStatusCode(302); $response->sendHeaders(); return $response; } }
/** * 認証要求 * @return void */ public static function notAuth($realm) { global $_string, $_title, $_button, $vars; $response = new Response(); // URLが空の場合、ページのアドレスか、スクリプトのアドレスを返す if (empty($url)) { $url = isset($vars['page']) ? Router::get_resolve_uri(null, $vars['page']) : Router::get_script_uri(); } $s_url = self::htmlsc($url); $response->setStatusCode(Response::STATUS_CODE_301); $response->getHeaders()->addHeaderLine('Location', $s_url); $html = array(); $html[] = '<!doctype html>'; $html[] = '<html>'; $html[] = '<head>'; $html[] = '<meta charset="utf-8">'; $html[] = '<meta name="robots" content="noindex,nofollow,noarchive,noodp,noydir" />'; if (!DEBUG) { $html[] = '<meta http-equiv="refresh" content="' . $time . '; URL=' . $s_url . '" />'; } $html[] = '<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/' . Render::TWITTER_BOOTSTRAP_VER . '/css/bootstrap.min.css" type="text/css" />'; $html[] = '<title>' . $_title['redirect'] . '</title>'; $html[] = '</head>'; $html[] = '<body>'; $html[] = '<div class="container">'; $html[] = '<p class="alert alert-success">'; $html[] = '<span class="glyphicon glyphicon-info-sign"></span>'; $html[] = $_string['redirect1'] . '<br />'; $html[] = sprintf($_string['redirect2'], $s_url); if (!DEBUG) { $html[] = '<br />NOTICE: No auto redirect when Debug mode.'; } $html[] = '</p>'; $html[] = '</div>'; $html[] = '</body>'; $html[] = '</html>'; $content = join("\n", $html); $response->getHeaders()->addHeaderLine('Content-Length', strlen($content)); $response->setContent($content); if (!headers_sent()) { header($response->renderStatusLine()); foreach ($response->getHeaders() as $header) { header($header->toString()); } } echo $response->getBody(); exit; }