86 lines
2.0 KiB
Go
86 lines
2.0 KiB
Go
package config
|
|
|
|
import (
|
|
"os"
|
|
"strconv"
|
|
)
|
|
|
|
var config *Config
|
|
|
|
func GetConfig() Config {
|
|
if config == nil {
|
|
port, err := strconv.Atoi(os.Getenv("PORT"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config = &Config{
|
|
Port: port,
|
|
}
|
|
readURLs(config)
|
|
readSecurity(config)
|
|
readS3(config)
|
|
readLimits(config)
|
|
}
|
|
return *config
|
|
}
|
|
|
|
func readURLs(config *Config) {
|
|
config.APIURL = os.Getenv("API_URL")
|
|
}
|
|
|
|
func readSecurity(config *Config) {
|
|
config.Security.APIKey = os.Getenv("SECURITY_API_KEY")
|
|
}
|
|
|
|
func readS3(config *Config) {
|
|
config.S3.URL = os.Getenv("S3_URL")
|
|
config.S3.AccessKey = os.Getenv("S3_ACCESS_KEY")
|
|
config.S3.SecretKey = os.Getenv("S3_SECRET_KEY")
|
|
config.S3.Region = os.Getenv("S3_REGION")
|
|
if len(os.Getenv("S3_SECURE")) > 0 {
|
|
v, err := strconv.ParseBool(os.Getenv("S3_SECURE"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config.S3.Secure = v
|
|
}
|
|
}
|
|
|
|
func readLimits(config *Config) {
|
|
if len(os.Getenv("LIMITS_EXTERNAL_COMMAND_TIMEOUT_SECONDS")) > 0 {
|
|
v, err := strconv.ParseInt(os.Getenv("LIMITS_EXTERNAL_COMMAND_TIMEOUT_SECONDS"), 10, 32)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config.Limits.ExternalCommandTimeoutSeconds = int(v)
|
|
}
|
|
if len(os.Getenv("LIMITS_FILE_PROCESSING_MAX_SIZE_MB")) > 0 {
|
|
v, err := strconv.ParseInt(os.Getenv("LIMITS_FILE_PROCESSING_MAX_SIZE_MB"), 10, 32)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config.Limits.FileProcessingMaxSizeMB = int(v)
|
|
}
|
|
if len(os.Getenv("LIMITS_IMAGE_PREVIEW_MAX_WIDTH")) > 0 {
|
|
v, err := strconv.ParseInt(os.Getenv("LIMITS_IMAGE_PREVIEW_MAX_WIDTH"), 10, 32)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config.Limits.ImagePreviewMaxWidth = int(v)
|
|
}
|
|
if len(os.Getenv("LIMITS_IMAGE_PREVIEW_MAX_HEIGHT")) > 0 {
|
|
v, err := strconv.ParseInt(os.Getenv("LIMITS_IMAGE_PREVIEW_MAX_HEIGHT"), 10, 32)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config.Limits.ImagePreviewMaxHeight = int(v)
|
|
}
|
|
if len(os.Getenv("LIMITS_LANGUAGE_SCORE_THRESHOLD")) > 0 {
|
|
v, err := strconv.ParseFloat(os.Getenv("LIMITS_LANGUAGE_SCORE_THRESHOLD"), 64)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
config.Limits.LanguageScoreThreshold = v
|
|
}
|
|
}
|