More adjustments to path handling.

This commit is contained in:
Pachira 2023-09-11 19:44:34 +00:00
parent c57d2a49f2
commit 3dbf0fa85f
2 changed files with 19 additions and 3 deletions

View file

@ -1 +1 @@
0.2309.111925 0.2309.111944

View file

@ -1,11 +1,12 @@
<?php <?php
// HttpRequest.php // HttpRequest.php
// Created: 2022-02-08 // Created: 2022-02-08
// Updated: 2023-08-16 // Updated: 2023-09-11
namespace Index\Http; namespace Index\Http;
use InvalidArgumentException; use InvalidArgumentException;
use RuntimeException;
use Index\Version; use Index\Version;
use Index\MediaType; use Index\MediaType;
use Index\Http\Content\IHttpContent; use Index\Http\Content\IHttpContent;
@ -80,7 +81,22 @@ class HttpRequest extends HttpMessage {
$build = new HttpRequestBuilder; $build = new HttpRequestBuilder;
$build->setHttpVersion(new Version(...array_map('intval', explode('.', substr($_SERVER['SERVER_PROTOCOL'], 5))))); $build->setHttpVersion(new Version(...array_map('intval', explode('.', substr($_SERVER['SERVER_PROTOCOL'], 5)))));
$build->setMethod($_SERVER['REQUEST_METHOD']); $build->setMethod($_SERVER['REQUEST_METHOD']);
$build->setPath(parse_url('/' . trim($_SERVER['REQUEST_URI'], '/'), PHP_URL_PATH));
// this currently doesn't "properly" support the scenario where a full url is specified in the http request
$path = $_SERVER['REQUEST_URI'];
$pathQueryOffset = strpos($path, '?');
if($pathQueryOffset !== false)
$path = substr($path, 0, $pathQueryOffset);
else {
$pathHashOffset = strpos($path, '#');
if($pathHashOffset !== false)
$path = substr($path, 0, $pathHashOffset);
}
if(!str_starts_with($path, '/'))
$path = '/' . $path;
$build->setPath($path);
$build->setParams($_GET); $build->setParams($_GET);
$build->setCookies($_COOKIE); $build->setCookies($_COOKIE);