config

package
v0.0.0-...-c8675c7 Latest Latest
Warning

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

Go to latest
Published: Jan 20, 2025 License: Apache-2.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrInvalidSessionSecretLength = errors.New("session secret must be 16, 24, or 32 bytes")

Functions

func ParseLogLevel

func ParseLogLevel(v string) (slog.Level, error)

func ParseSameSite

func ParseSameSite(v string) (http.SameSite, error)

Types

type Config

type Config struct {
	ServerPort     string        `env:"SERVER_PORT" envDefault:"8080"`
	ServerEndpoint string        `env:"SERVER_ENDPOINT" envDefault:"http://localhost:80"`
	LogLevel       slog.Level    `env:"LOG_LEVEL"`
	LogType        LogType       `env:"LOG_TYPE" envDefault:"json"`
	LogDir         string        `env:"LOG_DIR" envDefault:"/var/log/mucaron"`
	MaxUploadSize  uint64        `env:"MAX_UPLOAD_SIZE" envDefault:"1073741824"` //1GB
	EncodeTimeout  time.Duration `env:"ENCODE_TIMEOUT" envDefault:"1h"`

	PSQLDSN string `env:"PSQL_DSN" envDefault:""` // If PSQL_DSN is set, other PSQL_* variables will be ignored

	// ------------------------ MinIO ------------------------
	MinIOEndpoint       string `env:"MINIO_ENDPOINT" envDefault:"localhost:9000"`
	MinIOAccessKey      string `env:"MINIO_ACCESS_KEY,required"`
	MinIOSecretKey      string `env:"MINIO_SECRET_KEY,required"`
	MinIOUseSSL         bool   `env:"MINIO_USE_SSL" envDefault:"false"`
	MinIOBucket         string `env:"MINIO_BUCKET" envDefault:"mucaron"`
	MinIOPublicEndpoint string `env:"MINIO_PUBLIC_ENDPOINT" envDefault:""` // localhost:9000

	// ------------------------ Redis ------------------------
	RedisHost     string `env:"REDIS_HOST" envDefault:"localhost"`
	RedisPort     string `env:"REDIS_PORT" envDefault:"6379"`
	RedisPassword string `env:"REDIS_PASSWORD,required"`
	RedisDB       int    `env:"REDIS_DB" envDefault:"0"`

	SessionSecret string `env:"SESSION_SECRET" envDefault:""`

	SessionOptions SessionOptions
}

func Load

func Load() (Config, error)

type LogType

type LogType string
const (
	LogTypeJSON LogType = "json"
	LogTypeText LogType = "text"
)

func ParseLogType

func ParseLogType(v string) (LogType, error)

type PSQLSettings

type PSQLSettings struct {
	PSQLHost     string `env:"PSQL_HOST" envDefault:"localhost"`
	PSQLPort     string `env:"PSQL_PORT" envDefault:"5432"`
	PSQLDatabase string `env:"PSQL_DATABASE" envDefault:"mucaron"`
	PSQLUser     string `env:"PSQL_USER" envDefault:"postgres"`
	PSQLPassword string `env:"PSQL_PASSWORD" envDefault:"postgres"`
	PSQLSSLMode  string `env:"PSQL_SSL_MODE" envDefault:"disable"`
	PSQLTimeZone string `env:"PSQL_TIMEZONE" envDefault:"Asia/Tokyo"`
}

type SessionOptions

type SessionOptions struct {
	SameSite http.SameSite `env:"SESSION_SAME_SITE" envDefault:"strict"`
	HttpOnly bool          `env:"SESSION_HTTP_ONLY" envDefault:"true"`
	Secure   bool          `env:"SESSION_SECURE" envDefault:"true"`
}

Jump to

Keyboard shortcuts

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