Deploy Ladill Servers / deploy (push) Successful in 28s
Fetch owned domains from both domains.ladill.com and the platform registry so legacy customer domains populate the Ladill picker. Co-authored-by: Cursor <cursoragent@cursor.com>
83 lines
2.3 KiB
PHP
83 lines
2.3 KiB
PHP
<?php
|
|
|
|
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<string> 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<string> */
|
|
private function fetchFromStorefront(string $publicId): array
|
|
{
|
|
$key = (string) (config('domains.api_key') ?? '');
|
|
if ($key === '') {
|
|
return [];
|
|
}
|
|
|
|
try {
|
|
$res = Http::withToken($key)
|
|
->acceptJson()
|
|
->timeout(10)
|
|
->get(rtrim((string) config('domains.api_url'), '/').'/owned-domains', [
|
|
'user' => $publicId,
|
|
]);
|
|
|
|
$res->throw();
|
|
|
|
return (array) $res->json('data', []);
|
|
} catch (\Throwable $e) {
|
|
Log::warning('LadillDomainsClient: storefront owned domains unavailable', [
|
|
'user' => $publicId,
|
|
'error' => $e->getMessage(),
|
|
]);
|
|
|
|
return [];
|
|
}
|
|
}
|
|
|
|
/** @return list<string> */
|
|
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(),
|
|
]);
|
|
|
|
return [];
|
|
}
|
|
}
|
|
}
|