]> source.dussan.org Git - nextcloud-server.git/commitdiff
Revert "feat: Add support for webhook listeners"
authorCôme Chilliet <come.chilliet@nextcloud.com>
Thu, 30 May 2024 10:02:39 +0000 (12:02 +0200)
committerCôme Chilliet <91878298+come-nc@users.noreply.github.com>
Tue, 11 Jun 2024 12:10:29 +0000 (14:10 +0200)
This reverts commit 3b790df0127b2bf95e8fe3a8460aa3813e58bef8.

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
lib/composer/composer/autoload_classmap.php
lib/composer/composer/autoload_static.php
lib/private/AppFramework/Bootstrap/RegistrationContext.php
lib/private/AppFramework/Bootstrap/WebhookEventListenerRegistration.php [deleted file]
lib/private/EventDispatcher/WebhookCaller.php [deleted file]
lib/public/AppFramework/Bootstrap/IRegistrationContext.php

index 7ae7b490f7dceb0909934e31f40e957ed04b0384..8e1408e121ef68b952a19a0d90af7661b1c380c0 100644 (file)
@@ -866,7 +866,6 @@ return array(
     'OC\\AppFramework\\Bootstrap\\ServiceAliasRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ServiceAliasRegistration.php',
     'OC\\AppFramework\\Bootstrap\\ServiceFactoryRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ServiceFactoryRegistration.php',
     'OC\\AppFramework\\Bootstrap\\ServiceRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/ServiceRegistration.php',
-    'OC\\AppFramework\\Bootstrap\\WebhookEventListenerRegistration' => $baseDir . '/lib/private/AppFramework/Bootstrap/WebhookEventListenerRegistration.php',
     'OC\\AppFramework\\DependencyInjection\\DIContainer' => $baseDir . '/lib/private/AppFramework/DependencyInjection/DIContainer.php',
     'OC\\AppFramework\\Http' => $baseDir . '/lib/private/AppFramework/Http.php',
     'OC\\AppFramework\\Http\\Dispatcher' => $baseDir . '/lib/private/AppFramework/Http/Dispatcher.php',
@@ -1383,7 +1382,6 @@ return array(
     'OC\\Encryption\\Util' => $baseDir . '/lib/private/Encryption/Util.php',
     'OC\\EventDispatcher\\EventDispatcher' => $baseDir . '/lib/private/EventDispatcher/EventDispatcher.php',
     'OC\\EventDispatcher\\ServiceEventListener' => $baseDir . '/lib/private/EventDispatcher/ServiceEventListener.php',
-    'OC\\EventDispatcher\\WebhookCaller' => $baseDir . '/lib/private/EventDispatcher/WebhookCaller.php',
     'OC\\EventSource' => $baseDir . '/lib/private/EventSource.php',
     'OC\\EventSourceFactory' => $baseDir . '/lib/private/EventSourceFactory.php',
     'OC\\Federation\\CloudFederationFactory' => $baseDir . '/lib/private/Federation/CloudFederationFactory.php',
index 16b148dae5b5a79ff8175b1be963d6c38fadf440..d6939ae36ce8b57583322207281097c4896e65c8 100644 (file)
@@ -907,7 +907,6 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
         'OC\\AppFramework\\Bootstrap\\ServiceAliasRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ServiceAliasRegistration.php',
         'OC\\AppFramework\\Bootstrap\\ServiceFactoryRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ServiceFactoryRegistration.php',
         'OC\\AppFramework\\Bootstrap\\ServiceRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/ServiceRegistration.php',
-        'OC\\AppFramework\\Bootstrap\\WebhookEventListenerRegistration' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Bootstrap/WebhookEventListenerRegistration.php',
         'OC\\AppFramework\\DependencyInjection\\DIContainer' => __DIR__ . '/../../..' . '/lib/private/AppFramework/DependencyInjection/DIContainer.php',
         'OC\\AppFramework\\Http' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http.php',
         'OC\\AppFramework\\Http\\Dispatcher' => __DIR__ . '/../../..' . '/lib/private/AppFramework/Http/Dispatcher.php',
@@ -1424,7 +1423,6 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
         'OC\\Encryption\\Util' => __DIR__ . '/../../..' . '/lib/private/Encryption/Util.php',
         'OC\\EventDispatcher\\EventDispatcher' => __DIR__ . '/../../..' . '/lib/private/EventDispatcher/EventDispatcher.php',
         'OC\\EventDispatcher\\ServiceEventListener' => __DIR__ . '/../../..' . '/lib/private/EventDispatcher/ServiceEventListener.php',
-        'OC\\EventDispatcher\\WebhookCaller' => __DIR__ . '/../../..' . '/lib/private/EventDispatcher/WebhookCaller.php',
         'OC\\EventSource' => __DIR__ . '/../../..' . '/lib/private/EventSource.php',
         'OC\\EventSourceFactory' => __DIR__ . '/../../..' . '/lib/private/EventSourceFactory.php',
         'OC\\Federation\\CloudFederationFactory' => __DIR__ . '/../../..' . '/lib/private/Federation/CloudFederationFactory.php',
index b82f30e0fb661784f8b709c4d73f3ee9d6034aea..df03d59ebfafec99f9be65e7bf8dea656ad4dab2 100644 (file)
@@ -81,9 +81,6 @@ class RegistrationContext {
        /** @var EventListenerRegistration[] */
        private $eventListeners = [];
 
-       /** @var WebhookEventListenerRegistration[] */
-       private $webhookEventListeners = [];
-
        /** @var MiddlewareRegistration[] */
        private $middlewares = [];
 
@@ -224,17 +221,6 @@ class RegistrationContext {
                                );
                        }
 
-                       public function registerWebhookEventListener(string $event, string $method, string $listenerUri, array $options = [], int $priority = 0): void {
-                               $this->context->registerWebhookEventListener(
-                                       $this->appId,
-                                       $event,
-                                       $method,
-                                       $listenerUri,
-                                       $options,
-                                       $priority,
-                               );
-                       }
-
                        public function registerMiddleware(string $class, bool $global = false): void {
                                $this->context->registerMiddleware(
                                        $this->appId,
@@ -465,10 +451,6 @@ class RegistrationContext {
                $this->eventListeners[] = new EventListenerRegistration($appId, $event, $listener, $priority);
        }
 
-       public function registerWebhookEventListener(string $appId, string $event, string $method, string $listenerUri, array $options, int $priority = 0): void {
-               $this->webhookEventListeners[] = new WebhookEventListenerRegistration($appId, $event, $method, $listenerUri, $options, $priority);
-       }
-
        /**
         * @psalm-param class-string<Middleware> $class
         */
@@ -692,20 +674,6 @@ class RegistrationContext {
                                ]);
                        }
                }
-               while (($registration = array_shift($this->webhookEventListeners)) !== null) {
-                       try {
-                               $eventDispatcher->addListener(
-                                       $registration->getEvent(),
-                                       $registration->getCallable(),
-                                       $registration->getPriority()
-                               );
-                       } catch (Throwable $e) {
-                               $appId = $registration->getAppId();
-                               $this->logger->error("Error during event webhook listener registration of $appId: " . $e->getMessage(), [
-                                       'exception' => $e,
-                               ]);
-                       }
-               }
        }
 
        /**
diff --git a/lib/private/AppFramework/Bootstrap/WebhookEventListenerRegistration.php b/lib/private/AppFramework/Bootstrap/WebhookEventListenerRegistration.php
deleted file mode 100644 (file)
index 3b283c6..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * @copyright 2024 Côme Chilliet <come.chilliet@nextcloud.com>
- *
- * @author Côme Chilliet <come.chilliet@nextcloud.com>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OC\AppFramework\Bootstrap;
-
-use OC\EventDispatcher\WebhookCaller;
-use OCP\EventDispatcher\Event;
-use OCP\Server;
-
-/**
- * @psalm-immutable
- */
-class WebhookEventListenerRegistration extends ARegistration {
-       public function __construct(
-               string $appId,
-               private string $event,
-               private string $method,
-               private string $uri,
-               private array $options,
-               private int $priority,
-       ) {
-               parent::__construct($appId);
-       }
-
-       public function getEvent(): string {
-               return $this->event;
-       }
-
-       public function getCallable(): callable {
-               return function (Event $event) {
-                       Server::get(WebhookCaller::class)->callWebhook($event, $this->method, $this->uri, $this->options);
-               };
-       }
-
-       public function getPriority(): int {
-               return $this->priority;
-       }
-}
diff --git a/lib/private/EventDispatcher/WebhookCaller.php b/lib/private/EventDispatcher/WebhookCaller.php
deleted file mode 100644 (file)
index 2f0d1a2..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?php
-
-declare(strict_types=1);
-
-/**
- * @copyright 2024 Côme Chilliet <come.chilliet@nextcloud.com>
- *
- * @author Côme Chilliet <come.chilliet@nextcloud.com>
- *
- * @license GNU AGPL version 3 or any later version
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-
-namespace OC\EventDispatcher;
-
-use OCP\EventDispatcher\Event;
-use OCP\Http\Client\IClientService;
-
-class WebhookCaller {
-       public function __construct(
-               private IClientService $clientService,
-       ) {
-       }
-
-       public function callWebhook(
-               Event $event,
-               string $method,
-               string $uri,
-               array $options,
-       ): void {
-               $client = $this->clientService->newClient();
-               $client->request($method, $uri, $options + ['query' => ['event' => $event::class]]);
-
-               /**
-                * TODO:
-                * Serialization of the event
-                * Timeout or async
-                */
-       }
-}
index 17040ccfb4fa2c29e28d7346eb52fe31721626fd..b86f7bcd76d71e10d0816b172c2061240a1d2e9e 100644 (file)
@@ -120,22 +120,6 @@ interface IRegistrationContext {
         */
        public function registerEventListener(string $event, string $listener, int $priority = 0): void;
 
-       /**
-        * Register a webhook listener
-        *
-        * @psalm-template T of \OCP\EventDispatcher\Event
-        * @param class-string<T> $event The fully-qualified class name of the Event sub class to listen for
-        * @param string $method The HTTP method to use (usually 'GET' or 'POST')
-        * @param string $listenerUri The absolute URI to contact
-        * @param array $options Additional options for the request, {@see \OCP\Http\Client::request()}
-        * @param int $priority The higher this value, the earlier an event
-        *                      listener will be triggered in the chain (defaults to 0)
-        *
-        * @since 30.0.0
-        */
-       public function registerWebhookEventListener(string $event, string $method, string $listenerUri, array $options = [], int $priority = 0): void;
-
-
        /**
         * @param string $class
         * @param bool $global load this middleware also for requests of other apps? Added in Nextcloud 26