PHP 8.5が必須になった
This commit is contained in:
@@ -39,6 +39,7 @@ namespace Std\Lib;
|
||||
|
||||
use Std\Lib\Curl;
|
||||
use LogType;
|
||||
use Uri\Rfc3986;
|
||||
|
||||
/**
|
||||
* ActivityPubプロトコルの実装クラス
|
||||
@@ -445,10 +446,10 @@ class ActivityPub {
|
||||
$body = json_encode($activity, JSON_UNESCAPED_SLASHES);
|
||||
$digest = base64_encode(hash('sha256', $body, true));
|
||||
$date = gmdate('D, d M Y H:i:s \G\M\T');
|
||||
$host = parse_url($inboxUrl, PHP_URL_HOST);
|
||||
$uri = new Uri($inboxUrl);
|
||||
|
||||
$headers = [
|
||||
'Host' => $host,
|
||||
'Host' => $uri->getHost().($uri->getPort() ? ':'.$uri->getPort() : ''),
|
||||
'Date' => $date,
|
||||
'Content-Type' => 'application/activity+json',
|
||||
'Digest' => "SHA-256=$digest",
|
||||
|
||||
@@ -38,6 +38,7 @@ OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
namespace Std\Lib;
|
||||
|
||||
use Result;
|
||||
use Uri\Rfc3986;
|
||||
|
||||
/**
|
||||
* php_curlへの依存を排除するための独自のCURL実装
|
||||
@@ -354,19 +355,18 @@ class Curl {
|
||||
fwrite($this->stderr, "* 接続中: {$currentUrl}\n");
|
||||
}
|
||||
|
||||
$parsed = parse_url($currentUrl);
|
||||
if (!$parsed) {
|
||||
$uri = new Uri($currentUrl);
|
||||
if (!$uri) {
|
||||
$this->responseError = "無効なURL: {$currentUrl}";
|
||||
return Result::Error($this->responseError);
|
||||
}
|
||||
|
||||
$scheme = isset($parsed['scheme']) ? strtolower($parsed['scheme']) : 'http';
|
||||
$host = $parsed['host'];
|
||||
$port = isset($parsed['port'])
|
||||
? $parsed['port'] : ($scheme === 'https' ? 443 : 80);
|
||||
$path = isset($parsed['path']) ? $parsed['path'] : '/';
|
||||
if (isset($parsed['query'])) {
|
||||
$path .= '?'.$parsed['query'];
|
||||
$scheme = $uri->getScheme() ?? 'http';
|
||||
$port = $uri->getPort() ?? ($scheme === 'https' ? 443 : 80);
|
||||
$path = $uri->getPath();
|
||||
if ($path === '') $path = '/';
|
||||
if (isset($uri->getQuery())) {
|
||||
$path .= '?'.$uri->getQuery();
|
||||
}
|
||||
|
||||
// 認証
|
||||
@@ -404,7 +404,7 @@ class Curl {
|
||||
}
|
||||
|
||||
$request = "{$method} {$path} HTTP/1.1\r\n";
|
||||
$request .= "Host: {$host}\r\n";
|
||||
$request .= "Host: {$uri->getHost()}\r\n";
|
||||
$request .= "User-Agent: {$this->userAgent}\r\n";
|
||||
$request .= "{$accept}\r\n";
|
||||
$request .= "Connection: close\r\n";
|
||||
@@ -462,7 +462,7 @@ class Curl {
|
||||
$context = stream_context_create(['ssl' => $sslOptions]);
|
||||
|
||||
$socket = @stream_socket_client(
|
||||
"tls://{$host}:{$port}",
|
||||
"tls://{$uri->getHost()}:{$port}",
|
||||
$errno,
|
||||
$errstr,
|
||||
$this->timeout,
|
||||
@@ -470,7 +470,7 @@ class Curl {
|
||||
$context
|
||||
);
|
||||
} else {
|
||||
$socket = @fsockopen($host, $port, $errno, $errstr, $this->timeout);
|
||||
$socket = @fsockopen($uri->getHost(), $port, $errno, $errstr, $this->timeout);
|
||||
}
|
||||
|
||||
if (!$socket) {
|
||||
@@ -637,9 +637,9 @@ class Curl {
|
||||
|
||||
if (strpos($redirectUrl, 'http') !== 0) {
|
||||
if ($redirectUrl[0] === '/') {
|
||||
$parsed = parse_url($currentUrl);
|
||||
$redirectUrl = $parsed['scheme'].'://'.$parsed['host']
|
||||
.(isset($parsed['port']) ? ':'.$parsed['port'] : '')
|
||||
$uri = new Uri($currentUrl);
|
||||
$redirectUrl = $uri->getScheme().'://'.$uri->getHost()
|
||||
.(isset($uri->getPort()) ? ':'.$uri->getPort() : '')
|
||||
.$redirectUrl;
|
||||
} else {
|
||||
$redirectUrl = dirname($currentUrl).'/'.$redirectUrl;
|
||||
|
||||
@@ -407,6 +407,7 @@ class Tester {
|
||||
*/
|
||||
public function assertArrayHasKey(mixed $key, array $array,
|
||||
?string $message = null): Tester {
|
||||
if (NULL === $key) throw new AssertionFailedException("配列鍵がありません");
|
||||
if (!is_array($array) && !($array instanceof \ArrayAccess)) {
|
||||
throw new AssertionFailedException(
|
||||
'第2引数は配列又はArrayAccessを実装している必要があります');
|
||||
|
||||
Reference in New Issue
Block a user