/** * Populate from request body * * @param string $string * @return RequestHeaders */ public function fromString($string) { $pattern = str_replace('%token', self::PATTERN_TOKEN, self::PATTERN_REQUEST_LINE); $headers = preg_split("/\r\n/", $string, 2); if (!preg_match($pattern, $headers[0], $matches)) { return $this; } $method = $matches['token']; $uri = $matches['uri']; $protocolVersion = $matches['version']; $this->setMethod($method)->setUri($uri)->setProtocolVersion($protocolVersion); // If we have more headers, parse them if (count($headers) == 2) { parent::fromString($headers[1]); } return $this; }
public function getResponse(ServiceLocatorInterface $serviceLocator, $path) { $serviceLocator->get('log')->info('Build Response'); $urlDispatcher = new UrlDispatcher(); $urlDispatcher->setServiceLocator($serviceLocator); $baseXMSResponse = $urlDispatcher->dispatch($path); $response = new ZendResponse(); switch ((string) $baseXMSResponse->code) { case 200: $requestHandler = RequestHandler::factory((string) $baseXMSResponse->id, (string) $baseXMSResponse->contentclass, $this); // override response $response = $requestHandler->getResponse(); break; case 301: if (true) { $response->setContent('Redirect to <a href="' . (string) $baseXMSResponse->path . '">' . (string) $baseXMSResponse->path . '</a>'); $response->setStatusCode(200); } else { $response->setContent('Redirect'); $response->setStatusCode(301); $headers = Headers::fromString('Location: ' . (string) $baseXMSResponse->path); $response->setHeaders($headers); } break; case 500: $response->setContent('500 - Server Error.'); $response->setStatusCode((string) $baseXMSResponse->code); break; case 400: $response->setContent('404 - Not found.'); $response->setStatusCode((string) $baseXMSResponse->code); break; default: $response->setContent('Unhandled return code.'); $response->setStatusCode(500); } $response->setReasonPhrase($response->getReasonPhrase()); // set default phrase $serviceLocator->get('accumulator')->start('BaseXMS', BASEXMS_START); $serviceLocator->get('accumulator')->stop('BaseXMS'); return $response; }
public function getResponse() { $this->serviceManager->get('log')->info('Build Response'); $response = new ZendResponse(); switch ($this->baseXMSResponse->queryToValue('//code')) { case 200: $requestHandler = \BaseXMS\RequestHandler\Factory::factory($this->baseXMSResponse, $this); // override response $response = $requestHandler->getResponse(); break; case 301: if (true) { $response->setContent('Redirect to <a href="' . (string) $this->baseXMSResponse->path . '">' . (string) $this->baseXMSResponse->path . '</a>'); $response->setStatusCode(200); } else { $response->setContent('Redirect'); $response->setStatusCode(301); $headers = Headers::fromString('Location: ' . (string) $this->baseXMSResponse->path); $response->setHeaders($headers); } break; case 500: $response->setContent('500 - Server Error.'); $response->setStatusCode((string) $this->baseXMSResponse->code); break; case 400: $response->setContent('404 - Not found.'); $response->setStatusCode((string) $this->baseXMSResponse->code); break; default: $response->setContent('Unhandled return code.'); $response->setStatusCode(500); } $response->setReasonPhrase($response->getReasonPhrase()); // set default phrase $this->serviceManager->get('accumulator')->start('BaseXMS', BASEXMS_START); $this->serviceManager->get('accumulator')->stop('BaseXMS'); return $response; }
/** * Populate object from string * * @param string $string * @return ResponseHeaders */ public function fromString($string) { $headers = preg_split("/\r\n/", $string, 2); if (!preg_match(self::PATTERN_STATUS_LINE, $headers[0], $matches)) { return $this; } $version = $matches['version']; $status = $matches['status']; $message = $matches['message'] ?: ''; $this->setProtocolVersion($version)->setStatusCode($status, $message); // If we have more headers, parse them if (count($headers) == 2) { parent::fromString($headers[1]); } return $this; }