forked from ego-component/eoss
-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathoptions.go
134 lines (109 loc) · 2.83 KB
/
options.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package eos
import "time"
type putOptions struct {
contentType string
contentEncoding *string
contentDisposition *string
cacheControl *string
expires *time.Time
}
type PutOptions func(options *putOptions)
func PutWithContentType(contentType string) PutOptions {
return func(options *putOptions) {
options.contentType = contentType
}
}
func PutWithContentEncoding(contentEncoding string) PutOptions {
return func(options *putOptions) {
options.contentEncoding = &contentEncoding
}
}
func PutWithContentDisposition(contentDisposition string) PutOptions {
return func(options *putOptions) {
options.contentDisposition = &contentDisposition
}
}
func PutWithCacheControl(cacheControl string) PutOptions {
return func(options *putOptions) {
options.cacheControl = &cacheControl
}
}
func PutWithExpireTime(expires time.Time) PutOptions {
return func(options *putOptions) {
options.expires = &expires
}
}
func DefaultPutOptions() *putOptions {
return &putOptions{
contentType: "text/plain",
}
}
type getOptions struct {
contentType *string
contentEncoding *string
enableCRCValidation bool
}
func DefaultGetOptions() *getOptions {
return &getOptions{}
}
type GetOptions func(options *getOptions)
func GetWithContentType(contentType string) GetOptions {
return func(options *getOptions) {
options.contentType = &contentType
}
}
func GetWithContentEncoding(contentEncoding string) GetOptions {
return func(options *getOptions) {
options.contentEncoding = &contentEncoding
}
}
func EnableCRCValidation() GetOptions {
return func(options *getOptions) {
options.enableCRCValidation = true
}
}
type copyOptions struct {
metaKeysToCopy []string
rawSrcKey bool
meta map[string]string
}
func DefaultCopyOptions() *copyOptions {
return ©Options{
metaKeysToCopy: nil,
rawSrcKey: false,
meta: nil,
}
}
type CopyOption func(options *copyOptions)
// CopyWithAttributes specify metadata keys to copy
func CopyWithAttributes(meta []string) CopyOption {
return func(options *copyOptions) {
options.metaKeysToCopy = meta
}
}
// CopyWithNewAttributes append new attributes(meta) to new object
//
// NOTE: if this option was specified, the metadata(s) of source object would be dropped expect specifying keys to copy
// using CopyWithAttributes() option.
func CopyWithNewAttributes(meta map[string]string) CopyOption {
return func(options *copyOptions) {
options.meta = meta
}
}
func CopyWithRawSrcKey() CopyOption {
return func(options *copyOptions) {
options.rawSrcKey = true
}
}
type SignOptions func(options *signOptions)
func SignWithProcess(process string) SignOptions {
return func(options *signOptions) {
options.process = &process
}
}
type signOptions struct {
process *string
}
func DefaultSignOptions() *signOptions {
return &signOptions{}
}