config

package
v0.0.3 Latest Latest
Warning

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

Go to latest
Published: May 19, 2024 License: MIT Imports: 13 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	DefaultNamespace = NewEnvVar(
		"namespace",
		"NAMESPACE",
		defaultNamespace,
		"Service namespace",
	)

	DefaultHost = NewEnvVar(
		"host",
		"HOST",
		defaultHost,
		"Host. Related env var",
	)

	DefaultPort = NewEnvVar(
		"port",
		"PORT",
		defaultPort,
		"Port. Related env var",
	)

	DefaultMonitorHost = NewEnvVar(
		"monitor_host",
		"MONITOR_HOST",
		defaultMonitorHost,
		"Monitor host",
	)

	DefaultMonitorPort = NewEnvVar(
		"monitor_port",
		"MONITOR_PORT",
		defaultMonitorPort,
		"Monitor port",
	)

	DefaultEnvironment = NewEnvVar(
		"environment",
		"ENVIRONMENT",
		defaultEnvironment,
		"Deployment environment",
	)

	DefaultRedisAddr = NewEnvVar(
		"redis_address",
		"REDIS_ADDRESS",
		defaultHost,
		"Redis address",
	)

	DefaultRedisPassword = NewEnvVar(
		"redis_password",
		"REDIS_PASSWORD",
		"",
		"Redis address",
	)

	DefaultRedisDatabase = NewEnvVar(
		"redis_database",
		"REDIS_DATABASE",
		defaultRedisDB,
		"Redis database name",
	)

	DefaultRateLimitLuaScriptPath = NewEnvVar(
		"rate_limit_lua_script_path",
		"RATE_LIMIT_LUA_SCRIPT_PATH",
		defaultLuaScriptPath,
		"Path for redis lua script for rate limiting",
	)

	DefaultRateLimitAuthRate = NewEnvVar(
		"rate_limit_auth_rate",
		"RATE_LIMIT_AUTH_RATE",
		defaultRate,
		"Rate limit auth rate var",
	)

	DefaultRateLimitAuthMaxTokens = NewEnvVar(
		"rate_limit_auth_max_tokens",
		"RATE_LIMIT_AUTH_MAX_TOKENS",
		defaultMaxTokens,
		"Rate limit auth max tokens var",
	)

	DefaultRateLimitCommonRate = NewEnvVar(
		"rate_limit_common_rate",
		"RATE_LIMIT_COMMON_RATE",
		defaultRate,
		"Rate limit common rate var",
	)

	DefaultRateLimitCommonMaxTokens = NewEnvVar(
		"rate_limit_common_max_tokens",
		"RATE_LIMIT_COMMON_MAX_TOKENS",
		defaultMaxTokens,
		"Rate limit common max tokens var",
	)

	DefaultDBURL = NewEnvVar(
		"db_url",
		"DB_URL",
		defaultDBURL,
		"Database url",
	)

	DefaultDBAutoCreate = NewEnvVar(
		"db_auto_create_database",
		"DB_AUTO_CREATE_DATABASE",
		true,
		"The bool variable means that the DB will be created automatically or not",
	)

	DefaultMigrationPath = NewEnvVar(
		"db_migrations_path",
		"DB_MIGRATIONS_PATH",
		"internal/migrations/files",
		"Database migrations path",
	)

	DefaultJWTSecretKey = NewEnvVar(
		"jwt_secret_key",
		"JWT_SECRET_KEY",
		"secret",
		"JWT secret key",
	)

	DefaultExpirationTime = NewEnvVar(
		"jwt_expiration_minutes",
		"JWT_EXPIRATION_MINUTES",
		time.Minute*60,
		"JWT expiration time in minutes",
	)

	DefaultChainRPCtUrl = NewEnvVar(
		"chain_rpc_url",
		"CHAIN_RPC_URL",
		defaultChainRPC,
		"Blockchain rpc url",
	)

	DefaultContractorAddr = NewEnvVar(
		"contractor_address",
		"CONTRACT_ADDRESS",
		"",
		"Blockchain contract address",
	)

	DefaultOperatorAddr = NewEnvVar(
		"operator_address",
		"OPERATOR_ADDRESS",
		"",
		"Blockchain operator address",
	)

	DefaultOperatorPrivateKey = NewEnvVar(
		"operator_private_key",
		"OPERATOR_PRIVATE_KEY",
		"",
		"Blockchain operator private key",
	)

	DefaultAWSAccessKeyID = NewEnvVar(
		"aws_access_key_id",
		"AWS_ACCESS_KEY_ID",
		"aws_access_key_id",
		"AWS Access Key",
	)

	DefaultAWSSecretKey = NewEnvVar(
		"aws_secret_key",
		"AWS_SECRET_KEY",
		"aws_secret_key",
		"AWS Secret Key",
	)

	DefaultAWSRegion = NewEnvVar(
		"aws_region",
		"AWS_REGION",
		"eu-central-1",
		"AWS Region",
	)

	DefaultAWSEndpoint = NewEnvVar(
		"aws_endpoint",
		"AWS_ENDPOINT",
		"",
		"AWS Endpoint",
	)

	DefaultS3BucketName = NewEnvVar(
		"s3_bucket_name",
		"S3_BUCKET_NAME",
		"bucketname",
		"S3 bucket name",
	)
)

Functions

func AddEnvs

func AddEnvs(customEnvs []*EnvVar)

func BindConfig

func BindConfig(prefix string)

func GetConfig

func GetConfig(prefix string, cfg interface{}, customEnvs []*EnvVar) error

func SigTermIntCtx

func SigTermIntCtx() context.Context

SigTermIntCtx returns context which cancels by SIGTERM or SIGINT

Types

type AWSCfg

type AWSCfg struct {
	AWSAccessKeyID string `mapstructure:"aws_access_key_id"`
	AWSSecretKey   string `mapstructure:"aws_secret_key"`
	AWSRegion      string `mapstructure:"aws_region"`
	AWSEndpoint    string `mapstructure:"aws_endpoint"`
}

type DBCfg

type DBCfg struct {
	URL                string `mapstructure:"db_url"`
	MigrationsPath     string `mapstructure:"db_migrations_path"`
	AutoCreateDatabase bool   `mapstructure:"db_auto_create_database"`
}

func (*DBCfg) GetDatabaseName

func (c *DBCfg) GetDatabaseName() string

func (*DBCfg) GetDatabasePassword

func (c *DBCfg) GetDatabasePassword() string

func (*DBCfg) GetDatabasePort

func (c *DBCfg) GetDatabasePort() string

func (*DBCfg) GetDatabaseUser

func (c *DBCfg) GetDatabaseUser() string

type ETHCfg

type ETHCfg struct {
	RPCUrl             string `mapstructure:"chain_rpc_url"`
	ContractAddress    string `mapstructure:"contract_address"`
	OperatorAddr       string `mapstructure:"operator_address"`
	OperatorPrivateKey string `mapstructure:"operator_private_key"`
}

type EnvVar

type EnvVar struct {
	DefaultValue           interface{}
	Flag, Env, Description string
}

func NewEnvVar

func NewEnvVar(flag, env string, defaultValue interface{}, description string) *EnvVar

type JWTCfg

type JWTCfg struct {
	SecretKey      string        `mapstructure:"jwt_secret_key"`
	ExpirationTime time.Duration `mapstructure:"jwt_expiration_time"`
}

type LoggingConfig added in v0.0.2

type LoggingConfig struct {
	LogLevel                 string `mapstructure:"log_level"`
	LogOutputPath            string `mapstructure:"log_output_path"`
	LogErrorOutputPath       string `mapstructure:"log_error_output_path"`
	DeveloperLoggerEncoder   bool   `mapstructure:"developer_logger_encoder"`
	LoggerSamplingInitial    int    `mapstructure:"log_sampling_initial"`
	LoggerSamplingThereafter int    `mapstructure:"log_sampling_thereafter"`
	LogReplaceGlobal         bool   `mapstructure:"log_replace_global"`
}

type MainCfg

type MainCfg struct {
	Namespace   string `mapstructure:"namespace"`
	Environment string `mapstructure:"environment"`

	Host        string `mapstructure:"host"`
	Port        string `mapstructure:"port"`
	MonitorHost string `mapstructure:"monitor_host"`
	MonitorPort string `mapstructure:"monitor_port"`
}

type RateLimitCfg

type RateLimitCfg struct {
	RedisLuaScriptPath string `mapstructure:"rate_limit_lua_script_path"`

	AuthRate      float64 `mapstructure:"rate_limit_auth_rate"`
	AuthMaxTokens float64 `mapstructure:"rate_limit_auth_max_tokens"`

	CommonRate      float64 `mapstructure:"rate_limit_common_rate"`
	CommonMaxTokens float64 `mapstructure:"rate_limit_common_max_tokens"`
}

type RedisCfg

type RedisCfg struct {
	Addr     string `mapstructure:"redis_address"`
	Password string `mapstructure:"redis_password"`
	Database int    `mapstructure:"redis_database"`
}

type S3

type S3 struct {
	S3BucketName string `mapstructure:"s3_bucket_name"`
}

type TraceCfg added in v0.0.2

type TraceCfg struct {
	TracingServiceName  string `mapstructure:"tracing_service_name"`
	TracingCollectorURI string `mapstructure:"tracing_collector_uri"`
}

Jump to

Keyboard shortcuts

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