Documentation
¶
Index ¶
- func ReadServiceVersion() (string, error)
- type AppConfig
- func (p *AppConfig) GetAuthConfig() *AuthConfig
- func (p *AppConfig) GetConfig() *AppConfig
- func (p *AppConfig) GetGRPCConfig() *GRPCServerConfig
- func (p *AppConfig) GetGRPCServices() []*GRPCService
- func (p *AppConfig) GetHTTPConfig() *HTTPServerConfig
- func (p *AppConfig) GetHealthConfig() *HealthServerConfig
- func (p *AppConfig) GetMetricsConfig() *MetricsServerConfig
- func (p *AppConfig) GetMongoConfig() *MongoConfig
- func (p *AppConfig) GetOAuthConfig() *OAuthConfig
- func (p *AppConfig) GetRateLimitConfig() *RateLimitConfig
- type AppConfigProvider
- type AppEnv
- type AuthConfig
- type GRPCServerConfig
- type GRPCService
- type HTTPServerConfig
- type HealthServerConfig
- type MetricsServerConfig
- type MongoConfig
- type OAuthConfig
- type OAuthProviderConfig
- type RateLimitConfig
- type RateLimitGroupConfig
- type RegisterEntry
- type RegisterFunc
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func ReadServiceVersion ¶ added in v0.3.3
Types ¶
type AppConfig ¶ added in v0.0.3
type AppConfig struct {
AppEnv AppEnv `env:"APP_ENV" envDefault:"dev"`
LogLevel logger.LogLevel `env:"APP_LOG_LEVEL" envDefault:"INFO"`
ServiceHealthTimeout time.Duration `env:"SERVICE_HEALTH_TIMEOUT" envDefault:"60s"`
ServiceName string `env:"SERVICE_NAME" envDefault:""`
ServiceVersion string `env:"SERVICE_VERSION" envDefault:""`
GRPC GRPCServerConfig `envPrefix:"GRPC_"`
HTTP HTTPServerConfig `envPrefix:"HTTP_"`
Health HealthServerConfig `envPrefix:"HEALTH_"`
Metrics MetricsServerConfig `envPrefix:"METRICS_"`
Auth AuthConfig `envPrefix:"AUTH_"`
OAuth OAuthConfig `envPrefix:"OAUTH_"`
RateLimit RateLimitConfig `envPrefix:"RATE_LIMIT_"`
Mongo MongoConfig `envPrefix:"MONGO_"`
GRPCServices []*GRPCService `env:"-"`
}
func LoadConfig ¶
func (*AppConfig) GetAuthConfig ¶ added in v0.2.1
func (p *AppConfig) GetAuthConfig() *AuthConfig
func (*AppConfig) GetGRPCConfig ¶ added in v0.0.9
func (p *AppConfig) GetGRPCConfig() *GRPCServerConfig
func (*AppConfig) GetGRPCServices ¶ added in v0.0.9
func (p *AppConfig) GetGRPCServices() []*GRPCService
func (*AppConfig) GetHTTPConfig ¶ added in v0.0.9
func (p *AppConfig) GetHTTPConfig() *HTTPServerConfig
func (*AppConfig) GetHealthConfig ¶ added in v0.0.9
func (p *AppConfig) GetHealthConfig() *HealthServerConfig
func (*AppConfig) GetMetricsConfig ¶ added in v0.3.0
func (p *AppConfig) GetMetricsConfig() *MetricsServerConfig
func (*AppConfig) GetMongoConfig ¶ added in v0.0.9
func (p *AppConfig) GetMongoConfig() *MongoConfig
func (*AppConfig) GetOAuthConfig ¶ added in v0.2.6
func (p *AppConfig) GetOAuthConfig() *OAuthConfig
func (*AppConfig) GetRateLimitConfig ¶ added in v0.3.2
func (p *AppConfig) GetRateLimitConfig() *RateLimitConfig
type AppConfigProvider ¶ added in v0.0.11
type AppConfigProvider interface {
GetConfig() *AppConfig
GetGRPCConfig() *GRPCServerConfig
GetHTTPConfig() *HTTPServerConfig
GetAuthConfig() *AuthConfig
GetOAuthConfig() *OAuthConfig
GetRateLimitConfig() *RateLimitConfig
GetHealthConfig() *HealthServerConfig
GetMetricsConfig() *MetricsServerConfig
GetMongoConfig() *MongoConfig
GetGRPCServices() []*GRPCService
}
func Config ¶ added in v0.1.0
func Config() (AppConfigProvider, error)
type AppEnv ¶ added in v0.0.6
type AppEnv string
"dev" | "prod"
func (*AppEnv) UnmarshalText ¶ added in v0.0.6
type AuthConfig ¶ added in v0.2.1
type AuthConfig struct {
AccessTokenTTL time.Duration `env:"ACCESS_TOKEN_TTL" envDefault:"15m"`
RefreshTokenTTL time.Duration `env:"REFRESH_TOKEN_TTL" envDefault:"720h"`
JWTIssuer string `env:"JWT_ISSUER" envDefault:"invenlore.identity"`
JWTAudience string `env:"JWT_AUDIENCE" envDefault:"invenlore.api"`
JWKSCacheTTL time.Duration `env:"JWKS_CACHE_TTL" envDefault:"10m"`
JWTAllowedSkew time.Duration `env:"JWT_ALLOWED_SKEW" envDefault:"60s"`
KeyRotationInterval time.Duration `env:"KEY_ROTATION_INTERVAL" envDefault:"168h"`
KeyRetireAfter time.Duration `env:"KEY_RETIRE_AFTER" envDefault:"1h"`
KeyRotationTickInterval time.Duration `env:"KEY_ROTATION_TICK_INTERVAL" envDefault:"10m"`
}
type GRPCServerConfig ¶
type GRPCService ¶
type GRPCService struct {
Name string
Address string
RegisterEntries []RegisterEntry
}
type HTTPServerConfig ¶
type HTTPServerConfig struct {
Host string `env:"HOST" envDefault:"0.0.0.0"`
Port string `env:"PORT" envDefault:"8080"`
ReadTimeout time.Duration `env:"READ_TIMEOUT" envDefault:"10s"`
WriteTimeout time.Duration `env:"WRITE_TIMEOUT" envDefault:"10s"`
IdleTimeout time.Duration `env:"IDLE_TIMEOUT" envDefault:"60s"`
ReadHeaderTimeout time.Duration `env:"READ_HEADER_TIMEOUT" envDefault:"5s"`
}
type HealthServerConfig ¶
type HealthServerConfig struct {
Host string `env:"HOST" envDefault:"0.0.0.0"`
Port string `env:"PORT" envDefault:"80"`
ReadTimeout time.Duration `env:"READ_TIMEOUT" envDefault:"10s"`
WriteTimeout time.Duration `env:"WRITE_TIMEOUT" envDefault:"10s"`
IdleTimeout time.Duration `env:"IDLE_TIMEOUT" envDefault:"60s"`
ReadHeaderTimeout time.Duration `env:"READ_HEADER_TIMEOUT" envDefault:"5s"`
}
type MetricsServerConfig ¶ added in v0.3.0
type MetricsServerConfig struct {
Host string `env:"HOST" envDefault:"0.0.0.0"`
Port string `env:"PORT" envDefault:"9090"`
ReadTimeout time.Duration `env:"READ_TIMEOUT" envDefault:"10s"`
WriteTimeout time.Duration `env:"WRITE_TIMEOUT" envDefault:"10s"`
IdleTimeout time.Duration `env:"IDLE_TIMEOUT" envDefault:"60s"`
ReadHeaderTimeout time.Duration `env:"READ_HEADER_TIMEOUT" envDefault:"5s"`
}
type MongoConfig ¶ added in v0.0.7
type MongoConfig struct {
URI string `env:"URI"`
DatabaseName string `env:"DATABASE_NAME"`
HealthCheckTimeout time.Duration `env:"HEALTHCHECK_TIMEOUT" envDefault:"2s"`
HealthCheckInterval time.Duration `env:"HEALTHCHECK_INTERVAL" envDefault:"10s"`
OperationTimeout time.Duration `env:"OPERATION_TIMEOUT" envDefault:"10s"`
MigrationTimeout time.Duration `env:"MIGRATION_TIMEOUT" envDefault:"15m"`
MigrationLeaseForTimeout time.Duration `env:"MIGRATION_LEASEFOR_TIMEOUT" envDefault:"30s"`
MigrationPollInterval time.Duration `env:"MIGRATION_POLL_INTERVAL" envDefault:"2s"`
MigrationServiceTimeout time.Duration `env:"MIGRATION_SERVICE_TIMEOUT" envDefault:"5s"`
}
type OAuthConfig ¶ added in v0.2.6
type OAuthConfig struct {
StateTTL time.Duration `env:"STATE_TTL" envDefault:"10m"`
AllowedRedirectURIs string `env:"ALLOWED_REDIRECT_URIS"`
GitHub OAuthProviderConfig `envPrefix:"GITHUB_"`
}
type OAuthProviderConfig ¶ added in v0.2.6
type RateLimitConfig ¶ added in v0.3.2
type RateLimitConfig struct {
Enabled bool `env:"ENABLED" envDefault:"true"`
RedisAddress string `env:"REDIS_ADDRESS" envDefault:"redis:6379"`
RedisPassword string `env:"REDIS_PASSWORD" envDefault:""`
RedisDB int `env:"REDIS_DB" envDefault:"0"`
Period time.Duration `env:"PERIOD" envDefault:"1s"`
TrustProxy bool `env:"TRUST_PROXY" envDefault:"false"`
TrustedProxyCIDRs string `env:"TRUSTED_PROXY_CIDRS" envDefault:""`
ExemptPaths string `env:"EXEMPT_PATHS" envDefault:"/health,/metrics"`
Auth RateLimitGroupConfig `envPrefix:"AUTH_"`
Admin RateLimitGroupConfig `envPrefix:"ADMIN_"`
Swagger RateLimitGroupConfig `envPrefix:"SWAGGER_"`
Other RateLimitGroupConfig `envPrefix:"OTHER_"`
}
type RateLimitGroupConfig ¶ added in v0.3.2
type RegisterEntry ¶ added in v0.2.0
type RegisterEntry struct {
HandlerName string
HandlerRegisterFunc RegisterFunc
}
type RegisterFunc ¶
Click to show internal directories.
Click to hide internal directories.