support S3 compatible storage providers (#401)

This commit is contained in:
Saeed Vaziry
2024-12-22 23:06:36 +01:00
committed by GitHub
parent db81583884
commit ea3d64607a
20 changed files with 127 additions and 576 deletions

View File

@ -55,10 +55,14 @@ public static function form(): array
->visible(fn ($get) => $get('provider') == StorageProvider::FTP)
->rules(fn ($get) => CreateStorageProvider::rules($get())['passive']),
]),
TextInput::make('api_url')
->label('API URL')
->visible(fn ($get) => $get('provider') == StorageProvider::S3)
->rules(fn ($get) => CreateStorageProvider::rules($get())['api_url'])
->helperText('Required if you are using an S3 compatible provider like Cloudflare R2'),
TextInput::make('path')
->visible(fn ($get) => in_array($get('provider'), [
StorageProvider::S3,
StorageProvider::WASABI,
StorageProvider::FTP,
StorageProvider::LOCAL,
]))
@ -70,16 +74,9 @@ public static function form(): array
};
}),
Grid::make()
->visible(fn ($get) => in_array($get('provider'), [
StorageProvider::S3,
StorageProvider::WASABI,
]))
->visible(fn ($get) => $get('provider') == StorageProvider::S3)
->schema([
TextInput::make('key')
->visible(fn ($get) => in_array($get('provider'), [
StorageProvider::S3,
StorageProvider::WASABI,
]))
->rules(fn ($get) => CreateStorageProvider::rules($get())['key'])
->helperText(function ($get) {
return match ($get('provider')) {
@ -88,31 +85,14 @@ public static function form(): array
text: 'How to generate?',
external: true
),
StorageProvider::WASABI => new Link(
href: 'https://docs.wasabi.com/docs/creating-a-user-account-and-access-key',
text: 'How to generate?',
external: true
),
default => '',
};
}),
TextInput::make('secret')
->visible(fn ($get) => in_array($get('provider'), [
StorageProvider::S3,
StorageProvider::WASABI,
]))
->rules(fn ($get) => CreateStorageProvider::rules($get())['secret']),
TextInput::make('region')
->visible(fn ($get) => in_array($get('provider'), [
StorageProvider::S3,
StorageProvider::WASABI,
]))
->rules(fn ($get) => CreateStorageProvider::rules($get())['region']),
TextInput::make('bucket')
->visible(fn ($get) => in_array($get('provider'), [
StorageProvider::S3,
StorageProvider::WASABI,
]))
->rules(fn ($get) => CreateStorageProvider::rules($get())['bucket']),
]),
Checkbox::make('global')