fix(gitea) : propagate API errors instead of silently returning empty results
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -12,6 +12,7 @@ use App\Repository\GiteaConfigurationRepository;
|
||||
use Symfony\Component\String\Slugger\AsciiSlugger;
|
||||
use Symfony\Component\String\Slugger\SluggerInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\ExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\Exception\HttpExceptionInterface;
|
||||
use Symfony\Contracts\HttpClient\HttpClientInterface;
|
||||
use Throwable;
|
||||
|
||||
@@ -215,6 +216,22 @@ final readonly class GiteaApiService
|
||||
}
|
||||
}
|
||||
|
||||
private function extractGiteaError(HttpExceptionInterface $e): string
|
||||
{
|
||||
try {
|
||||
$body = $e->getResponse()->getContent(false);
|
||||
$data = json_decode($body, true);
|
||||
|
||||
if (is_array($data)) {
|
||||
return $data['message'] ?? $data['error'] ?? $body;
|
||||
}
|
||||
|
||||
return $body ?: 'Unknown Gitea error';
|
||||
} catch (ExceptionInterface) {
|
||||
return 'Gitea API error (HTTP '.$e->getResponse()->getStatusCode().')';
|
||||
}
|
||||
}
|
||||
|
||||
private function assertProjectHasRepo(Project $project): void
|
||||
{
|
||||
if (!$project->hasGiteaRepo()) {
|
||||
@@ -240,6 +257,10 @@ final readonly class GiteaApiService
|
||||
$response = $this->httpClient->request($method, rtrim($config->getUrl(), '/').$path, $options);
|
||||
|
||||
return $response->toArray();
|
||||
} catch (HttpExceptionInterface $e) {
|
||||
$message = $this->extractGiteaError($e);
|
||||
|
||||
throw new GiteaApiException($message, $e->getResponse()->getStatusCode(), $e);
|
||||
} catch (ExceptionInterface $e) {
|
||||
throw new GiteaApiException('Gitea API error: '.$e->getMessage(), 0, $e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user