@@ -65,6 +65,11 @@ type Storer interface {
65
65
SetPipeline (p * Pipeline )
66
66
}
67
67
68
+ // Writer allows uploading objects to an object storage service
69
+ type Writer interface {
70
+ Write (bucket , objectKey , data , contentType , contentEncoding string , metadata map [string ]* string ) error
71
+ }
72
+
68
73
// Handler used for creating a phase handler from configuration
69
74
type Handler = func (cfg * viper.Viper ) (interface {}, error )
70
75
79
84
EncoderHandlers HandlersMap
80
85
CompressorHandlers HandlersMap
81
86
StorerHandlers HandlersMap
87
+ WriterHandlers HandlersMap
82
88
)
83
89
84
90
// Register associates a handler with its' label
@@ -119,8 +125,12 @@ func init() {
119
125
CompressorHandlers .Register ("gzip" , NewCompressGzip , false )
120
126
121
127
StorerHandlers = make (HandlersMap )
122
- StorerHandlers .Register ("stdout" , NewStoreStdout , true )
123
- StorerHandlers .Register ("s3" , NewStoreS3 , false )
128
+ StorerHandlers .Register ("buffered" , NewStoreBuffered , true )
129
+ StorerHandlers .Register ("direct" , NewStoreDirect , false )
130
+
131
+ WriterHandlers = make (HandlersMap )
132
+ WriterHandlers .Register ("s3" , NewWriteS3 , true )
133
+ WriterHandlers .Register ("stdout" , NewWriteStdout , false )
124
134
}
125
135
126
136
// Pipeline manager
@@ -133,6 +143,7 @@ type Pipeline struct {
133
143
Encoder Encoder
134
144
Compressor Compressor
135
145
Storer Storer
146
+ Writer Writer
136
147
}
137
148
138
149
// NewPipeline defines the pipeline elements
@@ -167,13 +178,19 @@ func NewPipeline(cfg *viper.Viper) (*Pipeline, error) {
167
178
return nil , err
168
179
}
169
180
181
+ writer , err := WriterHandlers .Init (cfg , "write" )
182
+ if err != nil {
183
+ return nil , err
184
+ }
185
+
170
186
p := & Pipeline {
171
187
Transformer : transformer .(Transformer ),
172
188
Classifier : classifier .(Classifier ),
173
189
Filterer : filterer .(Filterer ),
174
190
Encoder : encoder .(Encoder ),
175
191
Compressor : compressor .(Compressor ),
176
192
Storer : storer .(Storer ),
193
+ Writer : writer .(Writer ),
177
194
}
178
195
storer .(Storer ).SetPipeline (p )
179
196
0 commit comments