Skip to content

Commit 404c006

Browse files
MalteWunschjanopae
authored andcommitted
Fix: Extrahiere verwendbare URL aus Webhook-Payload (Case 188021) (#48)
Verwende `repository->html_url` statt `repository->url` aus der Webhook-Payload. Historisch hatte die Webhook-Payload unter dem Key `repository->url` Werte wie `https://github.com/webfactory/baton`. Neuerdings erhalten wir hier Werte wie `https://api.github.com/repos/webfactory/baton` - diese URLs werden von composers GitHubDriver nicht unterstützt, so dass damit keine Repository-Zugriffe mehr möglich sind. Das Drop-in-Replacement mit gewohnten Werten ist unter dem Schlüssel `repository->html_url` zu finden. So, wie wir die URL für Repository-Zugriffe verwenden, könnte der Key `repository->git_url` mit Werten wie `git://github.com/webfactory/baton.git` noch besser passen. Allerdings wird die (letztlich in Project.vcsUrl persistierte) URL auch verwendet, um in einer Twig-View einen Link auf das Repository auszugeben - dafür eignet sich die `repository->git_url` im Gegensatz zur `repository->html_url` nicht. Man könnte überlegen, die beiden URLs nach ihrer Funktion zu separieren, das ist aber für den Moment out of scope. (cherry picked from commit ef2839a5ef0f8110ea29ba5f70fcd1da86cf4428)
1 parent 52db87d commit 404c006

File tree

1 file changed

+6
-11
lines changed

1 file changed

+6
-11
lines changed

src/AppBundle/Controller/WebhookController.php

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,9 @@
1010

1111
class WebhookController
1212
{
13-
/**
14-
* @var ImportProjectTask
15-
*/
16-
private $importProjectTask;
17-
18-
public function __construct(ImportProjectTask $importProjectTask)
19-
{
20-
$this->importProjectTask = $importProjectTask;
13+
public function __construct(
14+
private ImportProjectTask $importProjectTask
15+
) {
2116
}
2217

2318
/**
@@ -32,9 +27,9 @@ public function updateAction(Request $request)
3227

3328
// This works for the Kiln webhook API as well as for GitHub webhooks of content-type "application/x-www-form-urlencoded"
3429
if ($payload = $request->get('payload')) {
35-
$payload = json_decode($payload);
36-
if (isset($payload->repository) && $payload->repository && $payload->repository->url) {
37-
$repositoryWasImported = $this->importProjectTask->run($payload->repository->url);
30+
$payload = json_decode($payload, flags: JSON_THROW_ON_ERROR);
31+
if (isset($payload->repository) && $payload->repository && $payload->repository->html_url) {
32+
$repositoryWasImported = $this->importProjectTask->run($payload->repository->html_url);
3833
}
3934
}
4035

0 commit comments

Comments
 (0)