/
storage.go
43 lines (35 loc) · 1.14 KB
/
storage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package storage
import (
"context"
"io"
)
type Metadata struct {
Filename string // Original filename
ContentType string
ContentLength string
}
func MetadataToStringMap(metadata Metadata) map[string]*string {
m := make(map[string]*string)
m["Filename"] = &metadata.Filename
m["Content-Type"] = &metadata.ContentType
m["Content-Length"] = &metadata.ContentLength
return m
}
func StringMapToMetadata(m map[string]*string) Metadata {
metadata := Metadata{
Filename: *m["Filename"],
ContentType: *m["Content-Type"],
ContentLength: *m["Content-Length"],
}
return metadata
}
type Storage interface {
List(ctx context.Context) (filenames []string, metadata []Metadata, err error)
Get(ctx context.Context, filename string) (reader io.ReadCloser, err error)
GetWithMetadata(ctx context.Context, filename string) (reader io.ReadCloser, metadata Metadata, err error)
GetOnlyMetadata(ctx context.Context, filename string) (metadata Metadata, err error)
Put(ctx context.Context, filename string, reader io.Reader, metadata Metadata) error
Delete(ctx context.Context, filename string) error
FileNotExists(err error) bool
Type() string
}