mirror of
https://github.com/binwiederhier/ntfy.git
synced 2026-05-15 07:35:49 -06:00
51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
package attachment
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"time"
|
|
|
|
"heckel.io/ntfy/v2/s3"
|
|
)
|
|
|
|
type s3Backend struct {
|
|
client *s3.Client
|
|
}
|
|
|
|
var _ backend = (*s3Backend)(nil)
|
|
|
|
func newS3Backend(client *s3.Client) *s3Backend {
|
|
return &s3Backend{client: client}
|
|
}
|
|
|
|
func (b *s3Backend) Put(id string, reader io.Reader, untrustedLength int64) error {
|
|
return b.client.PutObject(context.Background(), id, reader, untrustedLength)
|
|
}
|
|
|
|
func (b *s3Backend) Get(id string) (io.ReadCloser, int64, error) {
|
|
return b.client.GetObject(context.Background(), id)
|
|
}
|
|
|
|
func (b *s3Backend) List() ([]object, error) {
|
|
objects, err := b.client.ListObjectsV2(context.Background())
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
result := make([]object, 0, len(objects))
|
|
for _, obj := range objects {
|
|
result = append(result, object{
|
|
ID: obj.Key,
|
|
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)
|
|
}
|