36 lines
1.4 KiB
PHP
36 lines
1.4 KiB
PHP
<?php
|
||||
|
|
|
|||
|
|
namespace App\Console\Commands;
|
|||
|
|
|
|||
|
|
use App\Serp\Exceptions\SerpProviderException;
|
|||
|
|
use App\Serp\Operations\DataForSeoHealthService;
|
|||
|
|
use Illuminate\Console\Command;
|
|||
|
|
use Throwable;
|
|||
|
|
|
|||
|
|
class DataForSeoHealthCommand extends Command
|
|||
|
|
{
|
|||
|
|
protected $signature = 'serp:dataforseo:health {--remote : Açık izinle ücretsiz hesap/bakiye doğrulaması} {--json}';
|
|||
|
|
|
|||
|
|
protected $description = 'DataForSEO yapılandırmasını güvenli biçimde doğrular';
|
|||
|
|
|
|||
|
|
public function handle(DataForSeoHealthService $health): int
|
|||
|
|
{
|
|||
|
|
try {
|
|||
|
|
$data = $health->validateConfig();
|
|||
|
|
if ($this->option('remote')) {
|
|||
|
|
$r = $health->remote();
|
|||
|
|
$data += ['remote' => 'ok', 'balance_micros' => $r->balanceMicros, 'status_code' => $r->statusCode, 'checked_at' => $r->checkedAt->format(DATE_ATOM)];
|
|||
|
|
} else {
|
|||
|
|
$data += ['remote' => 'not_requested'];
|
|||
|
|
}$this->option('json') ? $this->line(json_encode($data, JSON_THROW_ON_ERROR)) : $this->info('DataForSEO health: OK (uzak çağrı: '.$data['remote'].')');
|
|||
|
|
|
|||
|
|
return self::SUCCESS;
|
|||
|
|
} catch (Throwable $e) {
|
|||
|
|
$safe = ['status' => 'failed', 'category' => $e instanceof SerpProviderException ? $e->safeCode() : 'configuration_invalid'];
|
|||
|
|
$this->option('json') ? $this->line(json_encode($safe)) : $this->error('DataForSEO health doğrulanamadı.');
|
|||
|
|
|
|||
|
|
return self::FAILURE;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|