fix:更新已知bug,优化代码

This commit is contained in:
Ying
2022-11-28 19:11:12 +08:00
parent f6aee95cfc
commit 9445b206a2
1378 changed files with 53759 additions and 20789 deletions

View File

@@ -7,6 +7,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## Unreleased
## 2.4.3 - 2022-10-26
### Changed
- Replaced `sha1(uniqid())` by `bin2hex(random_bytes(20))`
## 2.4.2 - 2022-10-25
### Fixed
- Fixed erroneous behaviour when combining host and relative path
## 2.4.1 - 2022-08-28
### Fixed
- Rewind body before reading in `Message::bodySummary`
## 2.4.0 - 2022-06-20
### Added
@@ -97,7 +115,7 @@ Identical to the RC release.
### Removed
- PHP < 7.2 support
- All functions in the Guzzle\Psr7 namespace
- All functions in the `GuzzleHttp\Psr7` namespace
## 1.8.1 - 2021-03-21

View File

@@ -380,10 +380,28 @@ of the header. When a parameter does not contain a value, but just
contains a key, this function will inject a key with a '' string value.
## `GuzzleHttp\Psr7\Header::normalize`
## `GuzzleHttp\Psr7\Header::splitList`
`public static function splitList(string|string[] $header): string[]`
Splits a HTTP header defined to contain a comma-separated list into
each individual value:
```
$knownEtags = Header::splitList($request->getHeader('if-none-match'));
```
Example headers include `accept`, `cache-control` and `if-none-match`.
## `GuzzleHttp\Psr7\Header::normalize` (deprecated)
`public static function normalize(string|array $header): array`
`Header::normalize()` is deprecated in favor of [`Header::splitList()`](README.md#guzzlehttppsr7headersplitlist)
which performs the same operation with a cleaned up API and improved
documentation.
Converts an array of header values that may contain comma separated
headers into an array of headers with no comma separated values.

View File

@@ -60,9 +60,9 @@
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"bamarni/composer-bin-plugin": "^1.4.1",
"bamarni/composer-bin-plugin": "^1.8.1",
"http-interop/http-factory-tests": "^0.9",
"phpunit/phpunit": "^8.5.8 || ^9.3.10"
"phpunit/phpunit": "^8.5.29 || ^9.5.23"
},
"suggest": {
"laminas/laminas-httphandlerrunner": "Emit PSR-7 responses"
@@ -78,6 +78,10 @@
}
},
"extra": {
"bamarni-bin": {
"bin-links": true,
"forward-command": false
},
"branch-alias": {
"dev-master": "2.4-dev"
}

View File

@@ -191,7 +191,6 @@ final class AppendStream implements StreamInterface
$progressToNext = false;
while ($remaining > 0) {
// Progress to the next stream if needed.
if ($progressToNext || $this->streams[$this->current]->eof()) {
$progressToNext = false;

View File

@@ -62,7 +62,7 @@ final class Header
}
/**
* Splits a HTTP header defined to contain comma-separated list into
* Splits a HTTP header defined to contain a comma-separated list into
* each individual value. Empty values will be removed.
*
* Example headers include 'accept', 'cache-control' and 'if-none-match'.

View File

@@ -67,6 +67,7 @@ final class Message
return null;
}
$body->rewind();
$summary = $body->read($truncateAt);
$body->rewind();

View File

@@ -34,7 +34,7 @@ final class MultipartStream implements StreamInterface
*/
public function __construct(array $elements = [], string $boundary = null)
{
$this->boundary = $boundary ?: sha1(uniqid('', true));
$this->boundary = $boundary ?: bin2hex(random_bytes(20));
$this->stream = $this->createStream($elements);
}

View File

@@ -172,10 +172,14 @@ class Uri implements UriInterface, \JsonSerializable
$uri .= $scheme . ':';
}
if ($authority != ''|| $scheme === 'file') {
if ($authority != '' || $scheme === 'file') {
$uri .= '//' . $authority;
}
if ($authority != '' && $path != '' && $path[0] != '/') {
$path = '/' . $path;
}
$uri .= $path;
if ($query != '') {
@@ -731,8 +735,6 @@ class Uri implements UriInterface, \JsonSerializable
if ($this->scheme === '' && false !== strpos(explode('/', $this->path, 2)[0], ':')) {
throw new MalformedUriException('A relative URI must not have a path beginning with a segment containing a colon');
}
} elseif (isset($this->path[0]) && $this->path[0] !== '/') {
throw new MalformedUriException('The path of a URI with an authority must start with a slash "/" or be empty');
}
}
}