public function doRequest($request) { if ($this->mockedResponse) { $response = $this->mockedResponse; $this->mockedResponse = null; return $response; } $_COOKIE = $request->getCookies(); $_SERVER = $request->getServer(); $_FILES = $this->remapFiles($request->getFiles()); $uri = str_replace('http://localhost', '', $request->getUri()); $_REQUEST = $this->remapRequestParameters($request->getParameters()); if (strtoupper($request->getMethod()) == 'GET') { $_GET = $_REQUEST; } else { $_POST = $_REQUEST; } $_SERVER['REQUEST_METHOD'] = strtoupper($request->getMethod()); $_SERVER['REQUEST_URI'] = $uri; $_SERVER['SCRIPT_URI'] = $uri; $_SERVER['SCRIPT_NAME'] = $uri; $context = new PhpContext(); $context->SimulateNonCli = true; unset($context->Request); $request = \Rhubarb\Crown\PhpContext::createRequest(); $response = Module::generateResponseForRequest($request); $headers = $response->getHeaders(); $content = $response->getContent(); $headers['Content-type'] = isset($headers['Content-type']) ? $headers['Content-type'] : "text/html; charset=UTF-8"; $code = 200; if ($response instanceof RedirectResponse) { $this->redirect = $response->getUrl(); $code = 302; } $response = new Response($content, $code, $headers); return $response; }
/** * Creates a request object from the PHP context * * @return Request */ public static final function fromPhpContext(PhpContext $phpContext) { if ($phpContext->isCliInvocation()) { $request = new CliRequest(); } else { $contentType = isset($_SERVER["CONTENT_TYPE"]) ? strtolower($_SERVER["CONTENT_TYPE"]) : ""; // Special check for multipart, because the header could be multipart/form-data // followed by boundary $multipartType = "multipart/form-data"; if (strpos($contentType, $multipartType) === 0) { $contentType = $multipartType; } // Firefox puts a charset on the end of the content type line $parts = explode(";", $contentType); $contentType = $parts[0]; switch ($contentType) { case "application/octet-stream": case "image/jpeg": case "image/jpg": case "image/gif": case "image/png": $request = new BinaryRequest(); break; case "application/json": $request = new JsonRequest(); break; case "text/xml": case "application/xml": $request = new XmlRequest(); break; case "multipart/form-data": $request = new MultiPartFormDataRequest(); break; default: $request = new WebRequest(); break; } } $request->phpContext = $phpContext; return $request; }
protected function getAbsoluteHandledUrl() { $request = PhpContext::createRequest(); return $request->server("REQUEST_SCHEME") . "://" . $request->server("SERVER_NAME") . $this->handledUrl; }
public function getPayload() { $context = new PhpContext(); $requestBody = $context->getRequestBody(); return $requestBody; }