func()

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
}