ntfy-server/attachment/backend_s3.go

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

52 lines
1.1 KiB
Go
Raw Normal View History

2026-03-17 20:53:41 -04:00
package attachment
import (
"context"
"io"
"time"
2026-03-17 20:53:41 -04:00
"heckel.io/ntfy/v2/s3"
2026-03-17 20:53:41 -04:00
)
type s3Backend struct {
client *s3.Client
}
var _ backend = (*s3Backend)(nil)
func newS3Backend(client *s3.Client) *s3Backend {
return &s3Backend{client: client}
}
2026-03-21 21:14:49 -04:00
func (b *s3Backend) Put(id string, reader io.Reader, untrustedLength int64) error {
return b.client.PutObject(context.Background(), id, reader, untrustedLength)
2026-03-17 20:53:41 -04:00
}
func (b *s3Backend) Get(id string) (io.ReadCloser, int64, error) {
return b.client.GetObject(context.Background(), id)
}
func (b *s3Backend) List() ([]object, error) {
2026-03-21 15:52:45 -04:00
objects, err := b.client.ListObjectsV2(context.Background())
2026-03-17 20:53:41 -04:00
if err != nil {
return nil, err
}
result := make([]object, 0, len(objects))
for _, obj := range objects {
result = append(result, object{
2026-03-19 21:46:52 -04:00
ID: obj.Key,
2026-03-17 20:53:41 -04:00
Size: obj.Size,
LastModified: obj.LastModified,
})
}
return result, nil
}
func (b *s3Backend) Delete(ids ...string) error {
return b.client.DeleteObjects(context.Background(), ids)
}
func (b *s3Backend) DeleteIncomplete(cutoff time.Time) error {
return b.client.AbortIncompleteUploads(context.Background(), cutoff)
}