/
gcp_cloud_storage.go
47 lines (40 loc) · 1.75 KB
/
gcp_cloud_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
44
45
46
47
package output
import (
"github.com/Jeffail/benthos/v3/lib/message/batch"
"google.golang.org/api/googleapi"
)
const (
// GCPCloudStorageErrorIfExistsCollisionMode - error-if-exists
GCPCloudStorageErrorIfExistsCollisionMode = "error-if-exists"
// GCPCloudStorageAppendCollisionMode - append
GCPCloudStorageAppendCollisionMode = "append"
// GCPCloudStorageIgnoreCollisionMode - ignore
GCPCloudStorageIgnoreCollisionMode = "ignore"
// GCPCloudStorageOverwriteCollisionMode - overwrite
GCPCloudStorageOverwriteCollisionMode = "overwrite"
)
// GCPCloudStorageConfig contains configuration fields for the GCP Cloud Storage
// output type.
type GCPCloudStorageConfig struct {
Bucket string `json:"bucket" yaml:"bucket"`
Path string `json:"path" yaml:"path"`
ContentType string `json:"content_type" yaml:"content_type"`
ContentEncoding string `json:"content_encoding" yaml:"content_encoding"`
ChunkSize int `json:"chunk_size" yaml:"chunk_size"`
MaxInFlight int `json:"max_in_flight" yaml:"max_in_flight"`
Batching batch.PolicyConfig `json:"batching" yaml:"batching"`
CollisionMode string `json:"collision_mode" yaml:"collision_mode"`
}
// NewGCPCloudStorageConfig creates a new Config with default values.
func NewGCPCloudStorageConfig() GCPCloudStorageConfig {
return GCPCloudStorageConfig{
Bucket: "",
Path: `${!count("files")}-${!timestamp_unix_nano()}.txt`,
ContentType: "application/octet-stream",
ContentEncoding: "",
ChunkSize: googleapi.DefaultUploadChunkSize,
MaxInFlight: 1,
Batching: batch.NewPolicyConfig(),
CollisionMode: GCPCloudStorageOverwriteCollisionMode,
}
}