diff --git a/.env.example b/.env.example index c3085b5..dee7d5f 100644 --- a/.env.example +++ b/.env.example @@ -51,6 +51,7 @@ IDENTITY_API_KEY_HOSTING= DOMAINS_API_URL=https://domains.ladill.com/api DOMAINS_API_KEY_HOSTING= +DOMAIN_REGISTRY_API_URL=https://ladill.com/api DOMAIN_API_URL=https://ladill.com/api/domains DOMAIN_API_KEY_HOSTING= diff --git a/app/Services/Domains/LadillDomainsClient.php b/app/Services/Domains/LadillDomainsClient.php index b572d6f..4b266c3 100644 --- a/app/Services/Domains/LadillDomainsClient.php +++ b/app/Services/Domains/LadillDomainsClient.php @@ -5,10 +5,25 @@ namespace App\Services\Domains; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; +/** Read-only client for domains purchased on Ladill (storefront + platform registry). */ class LadillDomainsClient { - /** @return list */ + /** @return list Active domain names owned by the account (lowercase). */ public function ownedForUser(string $publicId): array + { + return collect() + ->merge($this->fetchFromStorefront($publicId)) + ->merge($this->fetchFromPlatform($publicId)) + ->map(fn ($d) => strtolower(trim((string) $d))) + ->filter() + ->unique() + ->sort() + ->values() + ->all(); + } + + /** @return list */ + private function fetchFromStorefront(string $publicId): array { $key = (string) (config('domains.api_key') ?? ''); if ($key === '') { @@ -25,13 +40,38 @@ class LadillDomainsClient $res->throw(); - return collect($res->json('data', [])) - ->map(fn ($d) => strtolower(trim((string) $d))) - ->filter() - ->values() - ->all(); + return (array) $res->json('data', []); } catch (\Throwable $e) { - Log::warning('LadillDomainsClient: could not load owned domains', [ + Log::warning('LadillDomainsClient: storefront owned domains unavailable', [ + 'user' => $publicId, + 'error' => $e->getMessage(), + ]); + + return []; + } + } + + /** @return list */ + private function fetchFromPlatform(string $publicId): array + { + $key = (string) (config('domains.platform_api_key') ?? ''); + if ($key === '') { + return []; + } + + try { + $res = Http::withToken($key) + ->acceptJson() + ->timeout(10) + ->get(rtrim((string) config('domains.platform_api_url'), '/').'/owned-domains', [ + 'user' => $publicId, + ]); + + $res->throw(); + + return (array) $res->json('data', []); + } catch (\Throwable $e) { + Log::warning('LadillDomainsClient: platform owned domains unavailable', [ 'user' => $publicId, 'error' => $e->getMessage(), ]); diff --git a/config/domains.php b/config/domains.php index f05266e..818c525 100644 --- a/config/domains.php +++ b/config/domains.php @@ -3,4 +3,7 @@ return [ 'api_url' => env('DOMAINS_API_URL', 'https://domains.ladill.com/api'), 'api_key' => env('DOMAINS_API_KEY_HOSTING'), + + 'platform_api_url' => env('DOMAIN_REGISTRY_API_URL', 'https://ladill.com/api'), + 'platform_api_key' => env('DOMAIN_API_KEY_HOSTING'), ];