protocolVersion = trim_prefix($_SERVER["SERVER_PROTOCOL"],"HTTP/"); // if ($this->protocolVersion != "1.1" && $this->protocolVersion != "1.0") { // throw new Exception("Invalid Protocol Version: " . $this->protocolVersion); // } $headers = apache_request_headers(); if ($headers == false) { $this->headers = []; } else { foreach ($headers as $header => $value) { $this->headers[to_title($header)] = [[$header, $value]]; } } $contents = file_get_contents('php://input'); if($contents == false) { $this->body = new StringBuffer(""); }else { $this->body = new StringBuffer($contents); } $this->uri = new StringURI($_SERVER["REQUEST_URI"]); $this->method = new StringURI($_SERVER["REQUEST_METHOD"]); } function getMethod(): string { return $this->method; } function withMethod(string $method): RequestInterface { $next = clone $this; $next->method = $method; return $next; } function getRequestTarget(): string { return $this->target; } function withRequestTarget(string $requestTarget): RequestInterface { $next = clone $this; $next->target = $requestTarget; return $next; } function getUri(): UriInterface { return $this->uri; } function withUri(UriInterface $uri, bool $preserveHost = false): RequestInterface { $next = clone $this; if ($preserveHost) { $next->uri = $uri; }else { $next->uri = $uri->withHost($this->getUri()->getHost()); } return $next; } function getProtocolVersion(): string { return $this->protocolVersion; } function withProtocolVersion(string $version): MessageInterface { $next = clone $this; $next->protocolVersion = $version; return $next; } function getHeaders(): array { return $this->headers; } function hasHeader(string $name): bool { $header = to_title($name); return isset($this->headers[$header]); } function getHeader(string $name): array { $header = to_title($name); if (isset($this->headers[$header])){ return array_map(fn($x)=>$x[1],$this->headers[$header]); } return []; } function getHeaderLine(string $name): string { $headers = $this->getHeader($name); if (count($headers) == 0) { return ""; } return join(",",$headers); } function withHeader(string $name, $value): MessageInterface { $next = clone $this; if (is_array($value)) { $next->headers[to_title($name)] = array_map(fn($x)=>[$name,$x],$value); }else { $next->headers[to_title($name)] = [[$name, $value]]; } return $next; } function withAddedHeader(string $name, $value): MessageInterface { $next = clone $this; if (!isset($next->headers[to_title($name)])) { $next->headers[to_title($name)] = []; } if (is_array($value)) { foreach ($value as $v) { $next->headers[to_title($name)][] = [$name, $v]; } }else { $next->headers[to_title($name)][] = [$name, $value]; } return $next; } function withoutHeader(string $name): MessageInterface { $next = clone $this; if (isset($next->headers[to_title($name)])) { unset($next->headers[to_title($name)]); } return $next; } function getBody(): StreamInterface { return $this->body; } function withBody(StreamInterface $body): MessageInterface { $next = clone $this; $next->body = $body; return $next; } function __clone() { $this->headers = array_merge(array(), $this->headers); $this->uri = clone $this->uri; $this->body = clone $this->body; } } ?>