MCPcopy
hub / github.com/pocketbase/pocketbase / Submit

Method Submit

forms/test_s3_filesystem.go:43–87  ·  view source on GitHub ↗

Submit validates and performs a S3 filesystem connection test.

()

Source from the content-addressed store, hash-verified

41
42// Submit validates and performs a S3 filesystem connection test.
43func (form *TestS3Filesystem) Submit() error {
44 if err := form.Validate(); err != nil {
45 return err
46 }
47
48 var s3Config core.S3Config
49
50 if form.Filesystem == s3FilesystemBackups {
51 s3Config = form.app.Settings().Backups.S3
52 } else {
53 s3Config = form.app.Settings().S3
54 }
55
56 if !s3Config.Enabled {
57 return errors.New("S3 storage filesystem is not enabled")
58 }
59
60 fsys, err := filesystem.NewS3(
61 s3Config.Bucket,
62 s3Config.Region,
63 s3Config.Endpoint,
64 s3Config.AccessKey,
65 s3Config.Secret,
66 s3Config.ForcePathStyle,
67 )
68 if err != nil {
69 return fmt.Errorf("failed to initialize the S3 filesystem: %w", err)
70 }
71 defer fsys.Close()
72
73 testPrefix := "pb_settings_test_" + security.PseudorandomString(5)
74 testFileKey := testPrefix + "/test.txt"
75
76 // try to upload a test file
77 if err := fsys.Upload([]byte("test"), testFileKey); err != nil {
78 return fmt.Errorf("failed to upload a test file: %w", err)
79 }
80
81 // test prefix deletion (ensures that both bucket list and delete works)
82 if errs := fsys.DeletePrefix(testPrefix); len(errs) > 0 {
83 return fmt.Errorf("failed to delete a test file: %w", errs[0])
84 }
85
86 return nil
87}

Callers 2

settingsTestS3Function · 0.95

Calls 7

ValidateMethod · 0.95
NewS3Function · 0.92
PseudorandomStringFunction · 0.92
DeletePrefixMethod · 0.80
SettingsMethod · 0.65
CloseMethod · 0.65
UploadMethod · 0.45

Tested by 1