Compare commits

...

48 Commits

Author SHA1 Message Date
as2252258 4d51f6e5d6 Revert "改名"
This reverts commit fdf58326
2022-01-12 14:10:33 +08:00
as2252258 21fbbe52e5 Revert "改名"
This reverts commit fdf58326
2022-01-11 17:56:16 +08:00
as2252258 a0a753d8b4 Revert "改名"
This reverts commit fdf58326
2022-01-11 16:25:17 +08:00
as2252258 dcc5e67f0a Revert "改名"
This reverts commit fdf58326
2022-01-11 16:21:29 +08:00
as2252258 b8e7a5f086 Revert "改名"
This reverts commit fdf58326
2022-01-11 16:20:49 +08:00
as2252258 88a414f0bb Revert "改名"
This reverts commit fdf58326
2022-01-11 16:19:05 +08:00
as2252258 cba27222fa Revert "改名"
This reverts commit fdf58326
2022-01-11 16:16:04 +08:00
as2252258 593f05754d Revert "改名"
This reverts commit fdf58326
2022-01-11 15:44:56 +08:00
as2252258 044c5c4a28 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:44:07 +08:00
as2252258 121642e825 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:42:55 +08:00
as2252258 5eecf66b43 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:41:53 +08:00
as2252258 a88787a530 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:40:55 +08:00
as2252258 aed0e61531 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:38:56 +08:00
as2252258 c94883375a Revert "改名"
This reverts commit fdf58326
2022-01-11 15:38:06 +08:00
as2252258 6565f1d7a3 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:35:59 +08:00
as2252258 cefe7ae010 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:35:14 +08:00
as2252258 56f42ac97b Revert "改名"
This reverts commit fdf58326
2022-01-11 15:34:27 +08:00
as2252258 9c7355d7f6 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:33:27 +08:00
as2252258 2ff2e3cdb8 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:32:19 +08:00
as2252258 18c6f9594e Revert "改名"
This reverts commit fdf58326
2022-01-11 15:31:37 +08:00
as2252258 a5c2467cdf Revert "改名"
This reverts commit fdf58326
2022-01-11 15:30:10 +08:00
as2252258 698868b6ee Revert "改名"
This reverts commit fdf58326
2022-01-11 15:28:30 +08:00
as2252258 cbee38ae54 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:27:10 +08:00
as2252258 e19536ce99 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:25:22 +08:00
as2252258 b92ab0bf1d Revert "改名"
This reverts commit fdf58326
2022-01-11 15:24:22 +08:00
as2252258 bc049a3c77 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:20:00 +08:00
as2252258 a026a610a1 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:12:59 +08:00
as2252258 e71a17cbce Revert "改名"
This reverts commit fdf58326
2022-01-11 15:11:18 +08:00
as2252258 86c09f3b25 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:09:14 +08:00
as2252258 788ecee65d Revert "改名"
This reverts commit fdf58326
2022-01-11 15:08:18 +08:00
as2252258 98cbb07845 Revert "改名"
This reverts commit fdf58326
2022-01-11 15:04:16 +08:00
as2252258 93bab6d5eb Revert "改名"
This reverts commit fdf58326
2022-01-11 15:01:42 +08:00
as2252258 99f79b7616 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:59:59 +08:00
as2252258 47dc988e49 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:59:24 +08:00
as2252258 072de12cc1 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:58:21 +08:00
as2252258 77f755d07c Revert "改名"
This reverts commit fdf58326
2022-01-11 14:54:21 +08:00
as2252258 bc5f9b1085 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:51:50 +08:00
as2252258 4660025775 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:46:42 +08:00
as2252258 336cc875a1 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:46:08 +08:00
as2252258 d943b2ebc2 Revert "改名"
This reverts commit fdf58326
2022-01-11 14:44:37 +08:00
as2252258 f982b51ff6 Revert "改名"
This reverts commit fdf58326
2022-01-10 18:51:56 +08:00
as2252258 5b7a33f48b Revert "改名"
This reverts commit fdf58326
2022-01-10 18:48:17 +08:00
as2252258 753e521a41 Revert "改名"
This reverts commit fdf58326
2022-01-10 18:47:31 +08:00
as2252258 d479f36662 Revert "改名"
This reverts commit fdf58326
2022-01-10 18:45:21 +08:00
as2252258 6984f78746 Revert "改名"
This reverts commit fdf58326
2022-01-10 18:44:20 +08:00
as2252258 030f337e74 Revert "改名"
This reverts commit fdf58326
2022-01-10 18:36:35 +08:00
as2252258 ae3b0c411b Revert "改名"
This reverts commit fdf58326
2022-01-10 11:39:56 +08:00
as2252258 f838795983 e 2022-01-09 13:54:34 +08:00
10 changed files with 1752 additions and 1711 deletions
+61 -19
View File
@@ -7,17 +7,18 @@
*/
declare(strict_types=1);
namespace Http\Client;
namespace Kiri;
use Exception;
use Http\Message\Stream;
use JetBrains\PhpStorm\Pure;
use Kiri\Abstracts\Logger;
use Kiri\Kiri;
use Kiri\Exception\ConfigException;
use Kiri\Message\Stream;
use Swoole\Client as SwowClient;
/**
* Class Client
* @package Kiri\Kiri\Http
* @package Kiri\Http
*/
class AsyncClient extends ClientAbstracts
{
@@ -61,7 +62,7 @@ class AsyncClient extends ClientAbstracts
try {
$this->generate_client($data, ...$url);
} catch (\Throwable $exception) {
Kiri::getDi()->get(Logger::class)->error('rpc', [$exception]);
Kiri::getDi()->get(Logger::class)->error('rpc', [error_trigger_format($exception)]);
$this->setStatusCode(-1);
$this->setBody(jTraceEx($exception));
}
@@ -78,13 +79,11 @@ class AsyncClient extends ClientAbstracts
private function generate_client($data, $host, $isHttps, $path): void
{
$this->client = new SwowClient(SWOOLE_TCP, FALSE);
$this->client->set(array_merge($this->settings(), ['open_http_protocol' => true]));
if (!$this->client->connect($host, $this->getPort())) {
throw new Exception('链接失败');
}
if ($isHttps || $this->isSSL()) {
$this->client->enableSSL();
}
$this->client->set(array_merge($this->settings(), ['open_http_protocol' => true]));
if ($isHttps || $this->isSSL()) $this->client->enableSSL();
if (!empty($this->getAgent())) {
$this->withAddedHeader('User-Agent', $this->getAgent());
}
@@ -103,19 +102,24 @@ class AsyncClient extends ClientAbstracts
* @param string $path
* @param string $content
* @return void
* @throws ConfigException
*/
private function execute(string $path, string $content)
{
$array = [];
$array[] = strtoupper($this->getMethod()) . ' ' . $path . ' HTTP/1.1';
if (!empty($this->getHeader())) {
foreach ($this->getHeader() as $key => $value) {
$array[] = sprintf('%s: %s', $key, $value);
}
}
$this->client->send(implode("\r\n", $array) . "\r\n\r\n" . $content);
$receive = $this->client->recv();
$array = $this->_parseHeaders($path);
$this->client->send(implode("\r\n", $array) . "\r\n\r\n" . $content . "\r\n\r\n");
$receive = '';
while ($this->client->isConnected()) {
$_tmp = $this->client->recv();
if (empty($_tmp)) {
break;
}
$receive .= $_tmp;
}
Kiri::getDi()->get(Logger::class)->debug(implode("\r\n", $array) . "\r\n\r\n" . $content);
Kiri::getDi()->get(Logger::class)->debug($receive);
[$header, $body] = explode("\r\n\r\n", $receive);
$header = explode("\r\n", $header);
@@ -127,6 +131,39 @@ class AsyncClient extends ClientAbstracts
}
/**
* @param string $path
* @return array
*/
#[Pure] private function _parseHeaders(string $path): array
{
$array = [];
$array[] = strtoupper($this->getMethod()) . ' ' . $path . ' HTTP/1.1';
if (!empty($this->getHeader())) {
$headers = $this->getHeader();
foreach ($headers as $key => $value) {
$array[] = sprintf('%s: %s', $key, $value);
}
}
return $array;
}
/**
* @param $client
* @param $string
* @return mixed
*/
private function waite(&$client, $string): mixed
{
$tmp = $client->recv();
if (!empty($tmp)) {
return $this->waite($client, $string . $tmp);
}
return $string;
}
private function chunked()
{
@@ -173,6 +210,11 @@ class AsyncClient extends ClientAbstracts
*/
public function close(): void
{
$this->client->close();
/** @var SwowClient $client */
$client = $this->client;
if (!$client || !$client->isConnected()) {
return;
}
$client->close();
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
<?php
namespace Http\Client;
namespace Kiri;
use Kiri\Context;
+2 -2
View File
@@ -1,11 +1,11 @@
<?php
namespace Http\Client;
namespace Kiri;
use Closure;
use Http\Message\Stream;
use Kiri\Message\Stream;
use JetBrains\PhpStorm\Pure;
use Kiri\Context;
use Kiri\Core\Help;
+4 -4
View File
@@ -7,17 +7,17 @@
*/
declare(strict_types=1);
namespace Http\Client;
namespace Kiri;
use Exception;
use JetBrains\PhpStorm\Pure;
use Kiri\Abstracts\Logger;
use Kiri\Kiri;
use Kiri;
use Swoole\Coroutine\Http\Client as SwowClient;
/**
* Class Client
* @package Kiri\Kiri\Http
* @package Kiri\Http
*/
class CoroutineClient extends ClientAbstracts
{
@@ -67,7 +67,7 @@ class CoroutineClient extends ClientAbstracts
$this->setBody($this->client->getBody());
$this->setResponseHeader($this->client->headers);
} catch (\Throwable $exception) {
Kiri::getDi()->get(Logger::class)->error('rpc', [$exception]);
Kiri::getDi()->get(Logger::class)->error('rpc', [error_trigger_format($exception)]);
$this->setStatusCode(-1);
$this->setBody(jTraceEx($exception));
}
+3 -3
View File
@@ -1,12 +1,12 @@
<?php
declare(strict_types=1);
namespace Http\Client;
namespace Kiri;
use Exception;
use Http\Message\Response;
use Http\Message\Stream;
use Kiri\Message\Response;
use Kiri\Message\Stream;
use JetBrains\PhpStorm\Pure;
use Psr\Http\Message\ResponseInterface;
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
declare(strict_types=1);
namespace Http\Client;
namespace Kiri;
use Exception;
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
namespace Http\Client;
namespace Kiri;
use Closure;
+23 -24
View File
@@ -1,6 +1,6 @@
<?php
namespace Http\Client;
namespace Kiri;
use JetBrains\PhpStorm\Pure;
@@ -8,31 +8,30 @@ trait TSwooleClient
{
/**
* @return array
*/
#[Pure] private function settings(): array
{
$sslCert = $this->getSslCertFile();
$sslKey = $this->getSslKeyFile();
$sslCa = $this->getCa();
/**
* @return array
*/
#[Pure] private function settings(): array
{
$sslCert = $this->getSslCertFile();
$sslKey = $this->getSslKeyFile();
$sslCa = $this->getCa();
$params = [];
if ($this->getConnectTimeout() > 0) {
$params['timeout'] = $this->getConnectTimeout();
}
if (empty($sslCert) || empty($sslKey) || empty($sslCa)) {
return $params;
}
$params = [];
if ($this->getConnectTimeout() > 0) {
$params['timeout'] = $this->getConnectTimeout();
}
if (empty($sslCert) || empty($sslKey) || empty($sslCa)) {
return $params;
}
$params['ssl_host_name'] = $this->getHost();
$params['ssl_cert_file'] = $this->getSslCertFile();
$params['ssl_key_file'] = $this->getSslKeyFile();
$params['ssl_verify_peer'] = TRUE;
$params['ssl_cafile'] = $sslCa;
$params['ssl_host_name'] = $this->getHost();
$params['ssl_cert_file'] = $this->getSslCertFile();
$params['ssl_key_file'] = $this->getSslKeyFile();
$params['ssl_verify_peer'] = TRUE;
$params['ssl_cafile'] = $sslCa;
return $params;
}
return $params;
}
}
+1 -1
View File
@@ -17,7 +17,7 @@
},
"autoload": {
"psr-4": {
"Http\\Client\\": "./"
"Kiri\\": "./"
}
},
"require-dev": {