/// Configuration for MinIO connection class MinioConfig { final String endpoint; final int port; final String accessKey; final String secretKey; final bool useSSL; final String region; // Bucket names static const String cardImagesBucket = 'card-images'; static const String testImagesBucket = 'test-images'; static const String voiceAudioBucket = 'voice-audio'; // Presigned URL expiration (4 hours) static const int presignedUrlExpirySeconds = 4 * 60 * 60; MinioConfig({ required this.endpoint, required this.port, required this.accessKey, required this.secretKey, required this.useSSL, required this.region, }); factory MinioConfig.fromEnvironment() { return MinioConfig( endpoint: const String.fromEnvironment( 'MINIO_SERVER_URL', defaultValue: 'minio-rsso80cks4ck4oc44s0og80c.147.45.152.129.sslip.io', ), port: const int.fromEnvironment('MINIO_PORT', defaultValue: 443), accessKey: const String.fromEnvironment('SERVICE_USER_MINIO'), secretKey: const String.fromEnvironment('SERVICE_PASSWORD_MINIO'), useSSL: const bool.fromEnvironment('MINIO_USE_SSL', defaultValue: true), region: const String.fromEnvironment( 'MINIO_REGION', defaultValue: 'us-east-1', ), ); } }