diff --git a/.idea/HDK-Core.iml b/.idea/HDK-Core.iml index 9c2851a..02cf85b 100644 --- a/.idea/HDK-Core.iml +++ b/.idea/HDK-Core.iml @@ -30,7 +30,6 @@ - @@ -110,7 +109,6 @@ - @@ -158,6 +156,8 @@ + + diff --git a/.idea/php.xml b/.idea/php.xml index f1fe920..557e11b 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -46,7 +46,6 @@ - @@ -130,7 +129,6 @@ - @@ -176,6 +174,8 @@ + + diff --git a/src/I18n/Enum/Languages.php b/src/I18n/Enum/Languages.php new file mode 100644 index 0000000..4181389 --- /dev/null +++ b/src/I18n/Enum/Languages.php @@ -0,0 +1,28 @@ + + * Powered by PhpStorm + * Created on 2023/9/26 + */ + +namespace Singularity\HDK\Core\I18n\Enum; + +use function Hyperf\Config\config; + +enum Languages: string +{ + case ZH_CN = 'zh_CN'; + + case EN = 'en'; + + public static function getLanguage(string $language): Languages + { + return match ($language) { + 'en', 'en_us', 'en-us', 'en-uk', 'en_uk' => self::EN, + 'zh', 'zh_cn', 'zh-cn' => self::ZH_CN, + default => self::from(config('translation.locale')), + }; + } +} diff --git a/src/Middleware/InternationalizationMiddleware.php b/src/Middleware/InternationalizationMiddleware.php index 45388b6..5faafe2 100644 --- a/src/Middleware/InternationalizationMiddleware.php +++ b/src/Middleware/InternationalizationMiddleware.php @@ -12,10 +12,9 @@ use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; use Psr\Http\Server\MiddlewareInterface; use Psr\Http\Server\RequestHandlerInterface; +use Singularity\HDK\Core\I18n\Enum\Languages; use Symfony\Component\HttpFoundation\Request; -use function Hyperf\Config\config; - /** * Singularity\HDK\Utils\Middleware\InternationalizationMiddleware@HDK * @@ -41,12 +40,8 @@ class InternationalizationMiddleware implements MiddlewareInterface $language = $req->getPreferredLanguage(); if (!empty($language)) { - $language = match (strtolower($language)) { - 'en', 'en_us', 'en-us', 'en-uk', 'en_uk' => 'en', - 'zh', 'zh_cn', 'zh-cn' => 'zh_CN', - default => config('translation.locale'), - }; - $this->translator->setLocale($language); + $language = Languages::getLanguage($language); + $this->translator->setLocale($language->value); } $response = Context::get(ResponseInterface::class); $response = $response->withAddedHeader( diff --git a/tests/Unit/RequestServiceTest.php b/tests/Unit/RequestServiceTest.php new file mode 100644 index 0000000..1186bd1 --- /dev/null +++ b/tests/Unit/RequestServiceTest.php @@ -0,0 +1,36 @@ + + * Powered by PhpStorm + * Created on 2023/9/20 + */ + +namespace Singularity\HDK\Test\Core\Unit; +use Singularity\HDK\Core\Http\RequestService; +use Singularity\HDK\Core\Http\RequestServiceFactory; + +class RequestServiceTest +{ + private RequestService $service; + + public function __construct() + { + $this->service = RequestServiceFactory::make(); + } + + public function getInstance(): RequestService + { + return $this->service; + } +} + +test('Http 请求服务可以正常使用', function () { + /** @var RequestServiceTest $class */ + $class = \Hyperf\Support\make(RequestServiceTest::class); + $response = $class->getInstance()->requestGet('https://baidu.com/'); + $content = $response->getBody()->getContents(); + expect($content)->toBe(''); +})->only();