package env import ( "time" ) type Config struct { ENV string // General settings CLIENT_URL string API_URL string // Database settings DB_HOST string DB_NAME string DB_PORT string DB_TIMEZONE string // S3 settings AWS_REGION string AWS_ENDPOINT_URL_S3 string INTERNAL_ENDPOINT_URL_S3 string BUCKET_NAME string FILETYPE_CHECK_NB_BYTES_TO_READ int PRESIGNED_URL_EXPIRE_TIME_MIN time.Duration // Auth settings JWT_SECRET string ACCESS_DURATION time.Duration REFRESH_DURATION time.Duration MAX_UPLOAD_TRACK_MB int MAX_UPLOAD_IMG_MB int // API config MAX_PAGE_SIZE int // OAuth2 settins FT_API string OAUTH2_FT_UID string OAUTH2_FT_SECRET string OAUTH2_FT_REDIRECT_URL string OAUTH2_FT_AUTH_URL string OAUTH2_FT_TOKEN_URL string // Mail Config SMTP_HOST string SMTP_PORT string SMTP_USER string SMTP_PASS string // Rate Limiting Configuration RATE_LIMIT_RPS float64 RATE_LIMIT_BURST int RATE_LIMIT_CLEANUP_MINUTES time.Duration } var C Config func init() { C.ENV = mustGet("ENV") // General settings C.CLIENT_URL = mustGet("CLIENT_URL") C.API_URL = mustGet("API_URL") // Database settings C.DB_HOST = mustGet("DB_HOST") C.DB_NAME = mustGet("DB_NAME") C.DB_PORT = mustGet("DB_PORT") C.DB_TIMEZONE = mustGet("DB_TIMEZONE") // S3 settings C.AWS_REGION = mustGet("AWS_REGION") C.AWS_ENDPOINT_URL_S3 = mustGet("AWS_ENDPOINT_URL_S3") C.INTERNAL_ENDPOINT_URL_S3 = mustGet("INTERNAL_ENDPOINT_URL_S3") C.BUCKET_NAME = mustGet("BUCKET_NAME") C.FILETYPE_CHECK_NB_BYTES_TO_READ = mustGetInt("FILETYPE_CHECK_NB_BYTES_TO_READ") C.PRESIGNED_URL_EXPIRE_TIME_MIN = mustGetDuration("PRESIGNED_URL_EXPIRE_TIME_MIN") // Auth settings C.JWT_SECRET = mustGet("JWT_SECRET") C.ACCESS_DURATION = mustGetDuration("ACCESS_DURATION") C.REFRESH_DURATION = mustGetDuration("REFRESH_DURATION") C.MAX_UPLOAD_TRACK_MB = mustGetInt("MAX_UPLOAD_TRACK_MB") C.MAX_UPLOAD_IMG_MB = mustGetInt("MAX_UPLOAD_IMG_MB") // API config C.MAX_PAGE_SIZE = mustGetInt("MAX_PAGE_SIZE") // OAuth2 settins C.FT_API = mustGet("FT_API") C.OAUTH2_FT_UID = mustGet("OAUTH2_FT_UID") C.OAUTH2_FT_SECRET = mustGet("OAUTH2_FT_SECRET") C.OAUTH2_FT_REDIRECT_URL = mustGet("OAUTH2_FT_REDIRECT_URL") C.OAUTH2_FT_AUTH_URL = mustGet("OAUTH2_FT_AUTH_URL") C.OAUTH2_FT_TOKEN_URL = mustGet("OAUTH2_FT_TOKEN_URL") // Mail Config C.SMTP_HOST = mustGet("SMTP_HOST") C.SMTP_PORT = mustGet("SMTP_PORT") C.SMTP_USER = mustGet("SMTP_USER") C.SMTP_PASS = mustGet("SMTP_PASS") // Rate Limiting Configuration C.RATE_LIMIT_RPS = mustGetFloat("RATE_LIMIT_RPS") C.RATE_LIMIT_BURST = mustGetInt("RATE_LIMIT_BURST") C.RATE_LIMIT_CLEANUP_MINUTES = mustGetDuration("RATE_LIMIT_CLEANUP_MINUTES") }