package export

import (
	"fmt"
	"strings"

	"github.com/tidbcloud/dataflow-service-e2e/internal/config"
	. "github.com/tidbcloud/dataflow-service-e2e/internal/model"
)

type targetConfig struct{ TargetURI, Region, Endpoint, RoleARN, AccessKeyID, AccessKeySecret string }

// inspectExportTargetObjects reports whether the runner is allowed to inspect
// the export destination. The AWS staging fixture currently denies the runner
// ListBucket/AssumeRole path, so AWS cases retain product-task lifecycle
// coverage but skip target-bucket verification and cleanup until that fixture
// regression is repaired. AliCloud keeps the existing object assertions.
func inspectExportTargetObjects(provider CloudProviderType) bool {
	return provider != AWS
}

func exportTarget(provider CloudProviderType) (targetConfig, error) {
	v := config.GlobalConfig.EssentialExport
	if v == (config.BackupExportConfig{}) {
		v = config.GlobalConfig.BackupExport
	}
	if provider == AWS {
		if strings.TrimSpace(v.AWS.TargetURI) == "" || strings.TrimSpace(v.AWS.RoleARN) == "" {
			return targetConfig{}, fmt.Errorf("AWS Essential export URI or role ARN is empty")
		}
		return targetConfig{TargetURI: v.AWS.TargetURI, Region: v.AWS.Region, Endpoint: v.AWS.Endpoint, RoleARN: v.AWS.RoleARN}, nil
	}
	if strings.TrimSpace(v.AliCloud.TargetURI) == "" || strings.TrimSpace(v.AliCloud.Endpoint) == "" {
		return targetConfig{}, fmt.Errorf("AliCloud Essential export URI or endpoint is empty")
	}
	if strings.TrimSpace(config.GlobalConfig.ImportSampleData.OSS.AccessKeyID) == "" || strings.TrimSpace(config.GlobalConfig.ImportSampleData.OSS.AccessKeySecret) == "" {
		return targetConfig{}, fmt.Errorf("AliCloud Essential export credentials are empty")
	}
	return targetConfig{TargetURI: v.AliCloud.TargetURI, Region: v.AliCloud.Region, Endpoint: v.AliCloud.Endpoint, AccessKeyID: config.GlobalConfig.ImportSampleData.OSS.AccessKeyID, AccessKeySecret: config.GlobalConfig.ImportSampleData.OSS.AccessKeySecret}, nil
}
