github.com/Jeffail/benthos/v3@v3.65.0/lib/output/gcp_cloud_storage.go (about)

     1  package output
     2  
     3  import (
     4  	"github.com/Jeffail/benthos/v3/lib/message/batch"
     5  	"google.golang.org/api/googleapi"
     6  )
     7  
     8  const (
     9  	// GCPCloudStorageErrorIfExistsCollisionMode - error-if-exists
    10  	GCPCloudStorageErrorIfExistsCollisionMode = "error-if-exists"
    11  
    12  	// GCPCloudStorageAppendCollisionMode - append
    13  	GCPCloudStorageAppendCollisionMode = "append"
    14  
    15  	// GCPCloudStorageIgnoreCollisionMode - ignore
    16  	GCPCloudStorageIgnoreCollisionMode = "ignore"
    17  
    18  	// GCPCloudStorageOverwriteCollisionMode - overwrite
    19  	GCPCloudStorageOverwriteCollisionMode = "overwrite"
    20  )
    21  
    22  // GCPCloudStorageConfig contains configuration fields for the GCP Cloud Storage
    23  // output type.
    24  type GCPCloudStorageConfig struct {
    25  	Bucket          string             `json:"bucket" yaml:"bucket"`
    26  	Path            string             `json:"path" yaml:"path"`
    27  	ContentType     string             `json:"content_type" yaml:"content_type"`
    28  	ContentEncoding string             `json:"content_encoding" yaml:"content_encoding"`
    29  	ChunkSize       int                `json:"chunk_size" yaml:"chunk_size"`
    30  	MaxInFlight     int                `json:"max_in_flight" yaml:"max_in_flight"`
    31  	Batching        batch.PolicyConfig `json:"batching" yaml:"batching"`
    32  	CollisionMode   string             `json:"collision_mode" yaml:"collision_mode"`
    33  }
    34  
    35  // NewGCPCloudStorageConfig creates a new Config with default values.
    36  func NewGCPCloudStorageConfig() GCPCloudStorageConfig {
    37  	return GCPCloudStorageConfig{
    38  		Bucket:          "",
    39  		Path:            `${!count("files")}-${!timestamp_unix_nano()}.txt`,
    40  		ContentType:     "application/octet-stream",
    41  		ContentEncoding: "",
    42  		ChunkSize:       googleapi.DefaultUploadChunkSize,
    43  		MaxInFlight:     1,
    44  		Batching:        batch.NewPolicyConfig(),
    45  		CollisionMode:   GCPCloudStorageOverwriteCollisionMode,
    46  	}
    47  }