baseUri = $baseUri; $this->configuredToken = $configuredToken !== null ? new AuthToken($configuredToken) : null; $this->userAgent = $userAgent !== null && $userAgent !== '' ? $userAgent : 'stellarwp/licensing-api-client'; $this->apiRoot = $apiRoot; $this->restNamespace = $restNamespace; $this->retryPolicy = $retryPolicy ?: RetryPolicy::default(); } /** * @param array{ * base_uri?: non-empty-string, * configured_token?: non-empty-string|null, * user_agent?: non-empty-string|null, * retry_policy?: RetryPolicy|null, * rest_namespace?: non-empty-string|null, * api_root?: non-empty-string|null * } $config * * @throws InvalidArgumentException */ public static function fromArray(array $config): self { return new self( $config['base_uri'] ?? '', $config['configured_token'] ?? null, $config['user_agent'] ?? null, $config['retry_policy'] ?? null, $config['rest_namespace'] ?? null, $config['api_root'] ?? null ); } public function apiRootPath(): string { return '/' . $this->apiRoot; } }