Initial commit: breakpilot-compliance - Compliance SDK Platform
Services: Admin-Compliance, Backend-Compliance, AI-Compliance-SDK, Consent-SDK, Developer-Portal, PCA-Platform, DSMS Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,93 @@
|
||||
// Package config handles configuration loading for the API Gateway
|
||||
package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
)
|
||||
|
||||
// Config holds the application configuration
|
||||
type Config struct {
|
||||
Environment string
|
||||
Port string
|
||||
Version string
|
||||
|
||||
// Database
|
||||
DatabaseURL string
|
||||
|
||||
// Redis
|
||||
RedisURL string
|
||||
|
||||
// JWT
|
||||
JWTSecret string
|
||||
JWTExpiration int // hours
|
||||
|
||||
// Rate limiting
|
||||
RateLimit RateLimitConfig
|
||||
|
||||
// Services
|
||||
ComplianceEngineURL string
|
||||
RAGServiceURL string
|
||||
SecurityScannerURL string
|
||||
|
||||
// Storage
|
||||
MinIOEndpoint string
|
||||
MinIOAccessKey string
|
||||
MinIOSecretKey string
|
||||
MinIOBucket string
|
||||
}
|
||||
|
||||
// RateLimitConfig holds rate limiting configuration
|
||||
type RateLimitConfig struct {
|
||||
RequestsPerSecond int
|
||||
Burst int
|
||||
}
|
||||
|
||||
// Load loads configuration from environment variables
|
||||
func Load() (*Config, error) {
|
||||
cfg := &Config{
|
||||
Environment: getEnv("ENVIRONMENT", "development"),
|
||||
Port: getEnv("PORT", "8080"),
|
||||
Version: getEnv("VERSION", "0.0.1"),
|
||||
|
||||
DatabaseURL: getEnv("DATABASE_URL", "postgres://breakpilot:breakpilot@localhost:5432/compliance"),
|
||||
RedisURL: getEnv("REDIS_URL", "redis://localhost:6379"),
|
||||
|
||||
JWTSecret: getEnv("JWT_SECRET", "your-secret-key-change-in-production"),
|
||||
JWTExpiration: getEnvInt("JWT_EXPIRATION", 24),
|
||||
|
||||
RateLimit: RateLimitConfig{
|
||||
RequestsPerSecond: getEnvInt("RATE_LIMIT_RPS", 100),
|
||||
Burst: getEnvInt("RATE_LIMIT_BURST", 200),
|
||||
},
|
||||
|
||||
ComplianceEngineURL: getEnv("COMPLIANCE_ENGINE_URL", "http://compliance-engine:8081"),
|
||||
RAGServiceURL: getEnv("RAG_SERVICE_URL", "http://rag-service:8082"),
|
||||
SecurityScannerURL: getEnv("SECURITY_SCANNER_URL", "http://security-scanner:8083"),
|
||||
|
||||
MinIOEndpoint: getEnv("MINIO_ENDPOINT", "minio:9000"),
|
||||
MinIOAccessKey: getEnv("MINIO_ACCESS_KEY", "breakpilot"),
|
||||
MinIOSecretKey: getEnv("MINIO_SECRET_KEY", "breakpilot123"),
|
||||
MinIOBucket: getEnv("MINIO_BUCKET", "compliance"),
|
||||
}
|
||||
|
||||
return cfg, nil
|
||||
}
|
||||
|
||||
func getEnv(key, defaultValue string) string {
|
||||
if value := os.Getenv(key); value != "" {
|
||||
return value
|
||||
}
|
||||
return defaultValue
|
||||
}
|
||||
|
||||
func getEnvInt(key string, defaultValue int) int {
|
||||
if value := os.Getenv(key); value != "" {
|
||||
// Simple conversion, production code should handle errors
|
||||
var result int
|
||||
for _, c := range value {
|
||||
result = result*10 + int(c-'0')
|
||||
}
|
||||
return result
|
||||
}
|
||||
return defaultValue
|
||||
}
|
||||
Reference in New Issue
Block a user