config

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 27, 2020 License: MIT Imports: 5 Imported by: 0

Documentation

Index

Constants

View Source
const (
	DefaultVersion                       = "v0.1.0"
	DefaultHost                          = ":8123"
	DefaultResubTargetAddr               = "https://pubsubhubbub.appspot.com/subscribe"
	DefaultResubInterval                 = 24 * 3 * time.Hour
	DefaultFileNameTemplate              = "" /* 127-byte string literal not displayed */
	DefaultFormatQuality                 = "720"
	DefaultFormatExtension               = "webm"
	DefaultRedisChannel                  = "ytfeed"
	DefaultStreamSchedulerWorkerInterval = 1 * time.Minute
	DefaultVideoDownloadMaxRetries       = 5
	DefaultTemporaryFileDir              = "./"
	DefaultAMQPExchange                  = "ytfeed"
	DefaultAMQPKey                       = "schedule"
	DefaultAMQPPublishMandatory          = true
	DefaultAMQPPublishImmediate          = false
	DefaultAMQPExchangeKind              = "topic"
	DefaultAMQPExchangeDurable           = true
	DefaultAMQPExchangeInternal          = false
	DefaultAMQPExchangeAutoDelete        = false
	DefaultAMQPExchangeNoWait            = false

	StorageBackendS3   = "s3"
	StorageBackendGCS  = "gcs"
	StorageBackendDisk = "disk"
	StorageBackendNone = "none"
)

Variables

View Source
var (
	ErrInvalidStorageBackend = errors.New("invalid storage backend detected")

	ErrInvalidDiskConfig = errors.New("invalid or incomplete disk config")
	ErrInvalidGCSConfig  = errors.New("invalid or incomplete gcs config")
	ErrInvalidS3Config   = errors.New("invalid or incomplete s3 config")
)

Functions

This section is empty.

Types

type Configuration

type Configuration struct {
	YoutubeAPIKey      string `validate:"required"`
	VerificationToken  string `validate:"required"`
	VerificationSecret string `validate:"required"`

	ResubTargetAddr   string        `validate:"required"`
	ResubTopics       []string      `validate:"required"`
	ResubCallbackAddr string        `validate:"required"`
	ResubInterval     time.Duration `validate:"required"`

	S3Endpoint        string `validate:""`
	S3AccessKeyID     string `validate:""`
	S3SecretAccessKey string `validate:""`
	S3BucketName      string `validate:""`

	GCSCredentialJSONFilePath string `validate:""`
	GCSBucketName             string `validate:""`

	DiskDirectory string `validate:""`

	StorageBackend   string `validate:"required,oneof=gcs s3 disk none"`
	FileNameTemplate string `validate:"required"`
	Host             string `validate:"required"`
	Version          string `validate:"required"`

	VideoFormatQuality      string        `validate:"required,oneof=1080 720 640 480 360 240 144"`
	VideoFormatExtension    string        `validate:"required,oneof=mp4 webm mkv"`
	VideoDownloadMaxRetries int           `validate:"required,min=0"`
	VideoDownloadRetryDelay time.Duration `validate:"omitempty,min=1"`
	TemporaryFileDir        string        `validate:"required,dir"`

	RedisAddr               string        `validate:"omitempty,hostname_port"`
	RedisUsername           string        `validate:""`
	RedisPassword           string        `validate:""`
	RedisChannel            string        `validate:"required"`
	RedisDB                 int           `validate:"omitempty,min=0"`
	RedisMaxRetries         int           `validate:"omitempty,min=0"`
	RedisDialTimeout        time.Duration `validate:""`
	RedisWriteTimeout       time.Duration `validate:""`
	RedisReadTimeout        time.Duration `validate:""`
	RedisPoolSize           int           `validate:"omitempty,min=1"`
	RedisMinIdleConns       int           `validate:"omitempty,min=0"`
	RedisMaxConnAge         time.Duration `validate:""`
	RedisPoolTimeout        time.Duration `validate:""`
	RedisIdleTimeout        time.Duration `validate:""`
	RedisIdleCheckFrequency time.Duration `validate:""`

	BoltDBPath                    string        `validate:"omitempty,file"`
	StreamSchedulerWorkerInterval time.Duration `validate:"required,min=1000000000"`

	AMQPDSN                string `validate:""`
	AMQPExchange           string `validate:"required"`
	AMQPKey                string `validate:"required"`
	AMQPPublishMandatory   bool   `validate:""`
	AMQPPublishImmediate   bool   `validate:""`
	AMQPExchangeKind       string `validate:"required,oneof=direct fanout topic headers"`
	AMQPExchangeDurable    bool   `validate:""`
	AMQPExchangeAutoDelete bool   `validate:""`
	AMQPExchangeInternal   bool   `validate:""`
	AMQPExchangeNoWait     bool   `validate:""`
	// contains filtered or unexported fields
}

func New

func New() (c *Configuration)

func (*Configuration) Validate

func (c *Configuration) Validate() (err error)

type Validator

type Validator interface {
	Struct(interface{}) error
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL