Add Retry-After header to 429 rate limit responses

Adds Retry-After: 60 header to all deployment queue full responses,
helping webhook clients know when to retry their requests.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai 2025-12-11 11:02:29 +01:00
parent 6d16f52143
commit d019553809
5 changed files with 12 additions and 12 deletions

View file

@ -390,7 +390,7 @@ private function by_uuids(string $uuid, int $teamId, bool $force = false, int $p
}
$result = $this->deploy_resource($resource, $force, $pr);
if (isset($result['status']) && $result['status'] === 429) {
return response()->json(['message' => $result['message']], 429);
return response()->json(['message' => $result['message']], 429)->header('Retry-After', 60);
}
['message' => $return_message, 'deployment_uuid' => $deployment_uuid] = $result;
if ($deployment_uuid) {
@ -436,7 +436,7 @@ public function by_tags(string $tags, int $team_id, bool $force = false)
foreach ($applications as $resource) {
$result = $this->deploy_resource($resource, $force);
if (isset($result['status']) && $result['status'] === 429) {
return response()->json(['message' => $result['message']], 429);
return response()->json(['message' => $result['message']], 429)->header('Retry-After', 60);
}
['message' => $return_message, 'deployment_uuid' => $deployment_uuid] = $result;
if ($deployment_uuid) {

View file

@ -108,7 +108,7 @@ public function manual(Request $request)
is_webhook: true
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,
@ -164,7 +164,7 @@ public function manual(Request $request)
git_type: 'bitbucket'
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,

View file

@ -124,7 +124,7 @@ public function manual(Request $request)
is_webhook: true,
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,
@ -196,7 +196,7 @@ public function manual(Request $request)
git_type: 'gitea'
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,

View file

@ -137,7 +137,7 @@ public function manual(Request $request)
is_webhook: true,
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,
@ -225,7 +225,7 @@ public function manual(Request $request)
git_type: 'github'
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,
@ -432,7 +432,7 @@ public function normal(Request $request)
is_webhook: true,
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
}
$return_payloads->push([
'status' => $result['status'],
@ -499,7 +499,7 @@ public function normal(Request $request)
git_type: 'github'
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,

View file

@ -150,7 +150,7 @@ public function manual(Request $request)
is_webhook: true,
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'status' => $result['status'],
@ -223,7 +223,7 @@ public function manual(Request $request)
git_type: 'gitlab'
);
if ($result['status'] === 'queue_full') {
return response($result['message'], 429);
return response($result['message'], 429)->header('Retry-After', 60);
} elseif ($result['status'] === 'skipped') {
$return_payloads->push([
'application' => $application->name,