Skip to content

Commit 6540178

Browse files
committed
feat: emit an event when an S3 bucket is created
Signed-off-by: Kent Delante <[email protected]>
1 parent ab3dbf1 commit 6540178

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed

lib/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -490,6 +490,7 @@
490490
'OCP\\Files\\Notify\\IChange' => $baseDir . '/lib/public/Files/Notify/IChange.php',
491491
'OCP\\Files\\Notify\\INotifyHandler' => $baseDir . '/lib/public/Files/Notify/INotifyHandler.php',
492492
'OCP\\Files\\Notify\\IRenameChange' => $baseDir . '/lib/public/Files/Notify/IRenameChange.php',
493+
'OCP\\Files\\ObjectStore\\Events\\BucketCreatedEvent' => $baseDir . '/lib/public/Files/ObjectStore/Events/BucketCreatedEvent.php',
493494
'OCP\\Files\\ObjectStore\\IObjectStore' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStore.php',
494495
'OCP\\Files\\ObjectStore\\IObjectStoreMetaData' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStoreMetaData.php',
495496
'OCP\\Files\\ObjectStore\\IObjectStoreMultiPartUpload' => $baseDir . '/lib/public/Files/ObjectStore/IObjectStoreMultiPartUpload.php',

lib/composer/composer/autoload_static.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2
531531
'OCP\\Files\\Notify\\IChange' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/IChange.php',
532532
'OCP\\Files\\Notify\\INotifyHandler' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/INotifyHandler.php',
533533
'OCP\\Files\\Notify\\IRenameChange' => __DIR__ . '/../../..' . '/lib/public/Files/Notify/IRenameChange.php',
534+
'OCP\\Files\\ObjectStore\\Events\\BucketCreatedEvent' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/Events/BucketCreatedEvent.php',
534535
'OCP\\Files\\ObjectStore\\IObjectStore' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStore.php',
535536
'OCP\\Files\\ObjectStore\\IObjectStoreMetaData' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStoreMetaData.php',
536537
'OCP\\Files\\ObjectStore\\IObjectStoreMultiPartUpload' => __DIR__ . '/../../..' . '/lib/public/Files/ObjectStore/IObjectStoreMultiPartUpload.php',

lib/private/Files/ObjectStore/S3ConnectionTrait.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
use Aws\S3\S3Client;
1515
use GuzzleHttp\Promise\Create;
1616
use GuzzleHttp\Promise\RejectedPromise;
17+
use OCP\EventDispatcher\IEventDispatcher;
18+
use OCP\Files\ObjectStore\Events\BucketCreatedEvent;
1719
use OCP\Files\StorageNotAvailableException;
1820
use OCP\ICertificateManager;
1921
use OCP\Server;
@@ -149,6 +151,13 @@ public function getConnection() {
149151
throw new StorageNotAvailableException('The bucket will not be created because the name is not dns compatible, please correct it: ' . $this->bucket);
150152
}
151153
$this->connection->createBucket(['Bucket' => $this->bucket]);
154+
Server::get(IEventDispatcher::class)
155+
->dispatchTyped(new BucketCreatedEvent(
156+
$this->bucket,
157+
$options['endpoint'],
158+
$options['region'],
159+
$options['version']
160+
));
152161
$this->testTimeout();
153162
} catch (S3Exception $e) {
154163
$logger->debug('Invalid remote storage.', [
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-only
8+
*/
9+
namespace OCP\Files\ObjectStore\Events;
10+
11+
use OCP\AppFramework\Attribute\Consumable;
12+
use OCP\EventDispatcher\Event;
13+
14+
class BucketCreatedEvent extends Event {
15+
16+
public function __construct(
17+
private readonly string $bucket,
18+
private readonly string $endpoint,
19+
private readonly string $region,
20+
private readonly string $version = 'latest',
21+
) {
22+
parent::__construct();
23+
}
24+
25+
public function getBucket(): string {
26+
return $this->bucket;
27+
}
28+
29+
public function getEndpoint(): string {
30+
return $this->endpoint;
31+
}
32+
33+
public function getRegion(): string {
34+
return $this->region;
35+
}
36+
37+
public function getVersion(): string {
38+
return $this->version;
39+
}
40+
}

0 commit comments

Comments
 (0)