Esempio n. 1
0
 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;
 }
Esempio n. 2
0
 /**
  * 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;
 }
Esempio n. 3
0
 protected function getAbsoluteHandledUrl()
 {
     $request = PhpContext::createRequest();
     return $request->server("REQUEST_SCHEME") . "://" . $request->server("SERVER_NAME") . $this->handledUrl;
 }
Esempio n. 4
0
 public function getPayload()
 {
     $context = new PhpContext();
     $requestBody = $context->getRequestBody();
     return $requestBody;
 }