['invalid', null, 'No URL found with short code "invalid"', 'valid_api_key']; yield 'invalid shortcode without domain' => [ 'abc123', 'example.com', 'No URL found with short code "abc123" for domain "example.com"', 'valid_api_key', ]; yield 'invalid shortcode + domain' => [ 'custom-with-domain', 'example.com', 'No URL found with short code "custom-with-domain" for domain "example.com"', 'valid_api_key', ]; yield 'valid shortcode with invalid API key' => [ 'ghi789', null, 'No URL found with short code "ghi789"', 'author_api_key', ]; yield 'valid shortcode + domain with invalid API key' => [ 'custom-with-domain', 'some-domain.com', 'No URL found with short code "custom-with-domain" for domain "some-domain.com"', 'domain_api_key', ]; } public function buildShortUrlPath(string $shortCode, ?string $domain, string $suffix = ''): string { $url = new Uri(sprintf('/short-urls/%s%s', $shortCode, $suffix)); if ($domain !== null) { $url = $url->withQuery(Query::build(['domain' => $domain])); } return (string) $url; } }