改进 模块 http 请求部分

This commit is contained in:
iVampireSP.com 2022-12-05 12:41:14 +08:00
parent be342580a4
commit dd075e98c1
No known key found for this signature in database
GPG Key ID: 2F7B001CA27A8132
3 changed files with 22 additions and 2 deletions

View File

@ -0,0 +1,10 @@
<?php
namespace App\Exceptions;
use Exception;
class ModuleRequestException extends Exception
{
//
}

View File

@ -3,6 +3,7 @@
namespace App\Jobs\Module; namespace App\Jobs\Module;
use App\Events\ServerEvent; use App\Events\ServerEvent;
use App\Exceptions\ModuleRequestException;
use App\Models\Module; use App\Models\Module;
use GuzzleHttp\Exception\ConnectException; use GuzzleHttp\Exception\ConnectException;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
@ -50,7 +51,7 @@ public function handle()
foreach ($modules as $module) { foreach ($modules as $module) {
try { try {
$response = $module->http()->get('remote'); $response = $module->http()->get('remote');
} catch (ConnectException $e) { } catch (ModuleRequestException $e) {
Log::error('无法连接到模块:' . $module->name, ['error', $e->getMessage()]); Log::error('无法连接到模块:' . $module->name, ['error', $e->getMessage()]);
continue; continue;
} }

View File

@ -2,8 +2,10 @@
namespace App\Models; namespace App\Models;
use App\Exceptions\ModuleRequestException;
use GeneaLabs\LaravelModelCaching\Traits\Cachable; use GeneaLabs\LaravelModelCaching\Traits\Cachable;
use GuzzleHttp\Exception\ConnectException; use GuzzleHttp\Exception\ConnectException;
use GuzzleHttp\Exception\RequestException;
use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Http\Client\PendingRequest; use Illuminate\Http\Client\PendingRequest;
use Illuminate\Http\Client\Response; use Illuminate\Http\Client\Response;
@ -175,9 +177,16 @@ public function check($module_id = null): bool
return $success; return $success;
} }
/**
* @throws ModuleRequestException
*/
public function http(): PendingRequest public function http(): PendingRequest
{ {
return Http::module($this->api_token, $this->url)->acceptJson()->timeout(5); try {
return Http::module($this->api_token, $this->url)->acceptJson()->timeout(5);
} catch (ConnectException|RequestException $e) {
throw new ModuleRequestException($e->getMessage());
}
} }
#[ArrayShape(['transactions' => "array"])] #[ArrayShape(['transactions' => "array"])]