in internal/app/adapters/inbound/file/file_inbound.go [286:359]
func (f *FileInboundEndpoint) validateConfig() error {
// Check required interval parameter
interval, exists := f.config.Parameters["interval"]
if !exists || interval == "" {
return fmt.Errorf("missing required parameter: 'interval'")
}
intervalMs, err := strconv.Atoi(interval)
if err != nil {
return fmt.Errorf("invalid interval value: must be an integer, got '%s'", interval)
}
if intervalMs <= 0 {
return fmt.Errorf("invalid interval value: must be positive, got '%d'", intervalMs)
}
// Check sequential parameter (optional, default false)
if val, exists := f.config.Parameters["sequential"]; exists {
_, err := strconv.ParseBool(val)
if err != nil {
return fmt.Errorf("invalid sequential value: must be true/false, got '%s'", val)
}
}
// Check coordination parameter (optional, default false)
if val, exists := f.config.Parameters["coordination"]; exists {
_, err := strconv.ParseBool(val)
if err != nil {
return fmt.Errorf("invalid coordination value: must be true/false, got '%s'", val)
}
}
// Check required FileURI parameter
fileURI, exists := f.config.Parameters["transport.vfs.FileURI"]
if !exists || fileURI == "" {
return fmt.Errorf("missing required parameter: 'transport.vfs.FileURI'")
}
// Check required ContentType parameter
contentType, exists := f.config.Parameters["transport.vfs.ContentType"]
if !exists || contentType == "" {
return fmt.Errorf("missing required parameter: 'transport.vfs.ContentType'")
}
// Check action after process (optional, default DELETE)
if val, exists := f.config.Parameters["transport.vfs.ActionAfterProcess"]; exists && val != "" {
if val == "MOVE" {
if _, exists := f.config.Parameters["transport.vfs.MoveAfterProcess"]; !exists || f.config.Parameters["transport.vfs.MoveAfterProcess"] == "" {
return fmt.Errorf("missing required parameter: 'transport.vfs.MoveAfterProcess' is required when ActionAfterProcess is 'MOVE'")
}
}
}
if val, exists := f.config.Parameters["transport.vfs.ActionAfterFailure"]; exists && val != "" {
if val == "MOVE" {
if _, exists := f.config.Parameters["transport.vfs.MoveAfterFailure"]; !exists || f.config.Parameters["transport.vfs.MoveAfterFailure"] == "" {
return fmt.Errorf("missing required parameter: 'transport.vfs.MoveAfterFailure' is required when ActionAfterFailure is 'MOVE'")
}
}
}
// Validate AutoLockReleaseInterval if provided
if val, exists := f.config.Parameters["transport.vfs.AutoLockReleaseInterval"]; exists {
timeout, err := strconv.Atoi(val)
if err != nil {
return fmt.Errorf("invalid AutoLockReleaseInterval value: must be an integer, got '%s'", val)
}
// Allow -1 for never timeout, or positive values
if timeout != -1 && timeout <= 0 {
return fmt.Errorf("invalid AutoLockReleaseInterval value: must be -1 or positive integer, got '%d'", timeout)
}
}
return nil
}