Eric Bower
ยท
2025-04-18
storage.go
1package storage
2
3import (
4 "io"
5 "net/http"
6 "os"
7 "time"
8
9 "github.com/picosh/pico/pkg/send/utils"
10)
11
12type Bucket struct {
13 Name string
14 Path string
15 Root string
16}
17
18type ObjectStorage interface {
19 GetBucket(name string) (Bucket, error)
20 GetBucketQuota(bucket Bucket) (uint64, error)
21 UpsertBucket(name string) (Bucket, error)
22 ListBuckets() ([]string, error)
23 DeleteBucket(bucket Bucket) error
24
25 GetObject(bucket Bucket, fpath string) (utils.ReadAndReaderAtCloser, *ObjectInfo, error)
26 PutObject(bucket Bucket, fpath string, contents io.Reader, entry *utils.FileEntry) (string, int64, error)
27 DeleteObject(bucket Bucket, fpath string) error
28 ListObjects(bucket Bucket, dir string, recursive bool) ([]os.FileInfo, error)
29}
30
31type ObjectInfo struct {
32 Size int64
33 LastModified time.Time
34 ETag string
35 Metadata http.Header
36}