package regions

// AWSRegions contains all AWS region IDs and their display names
var AWSRegions = map[string]string{
	"af-south-1":     "Africa (Cape Town)",
	"ap-east-1":      "Asia Pacific (Hong Kong)",
	"ap-east-2":      "Asia Pacific (Taipei)",
	"ap-northeast-1": "Asia Pacific (Tokyo)",
	"ap-northeast-2": "Asia Pacific (Seoul)",
	"ap-northeast-3": "Asia Pacific (Osaka)",
	"ap-south-1":     "Asia Pacific (Mumbai)",
	"ap-south-2":     "Asia Pacific (Hyderabad)",
	"ap-southeast-1": "Asia Pacific (Singapore)",
	"ap-southeast-2": "Asia Pacific (Sydney)",
	"ap-southeast-3": "Asia Pacific (Jakarta)",
	"ap-southeast-4": "Asia Pacific (Melbourne)",
	"ap-southeast-5": "Asia Pacific (Malaysia)",
	"ap-southeast-6": "Asia Pacific (New Zealand)",
	"ap-southeast-7": "Asia Pacific (Thailand)",
	"ca-central-1":   "Canada (Central)",
	"ca-west-1":      "Canada West (Calgary)",
	"eu-central-1":   "Europe (Frankfurt)",
	"eu-central-2":   "Europe (Zurich)",
	"eu-north-1":     "Europe (Stockholm)",
	"eu-south-1":     "Europe (Milan)",
	"eu-south-2":     "Europe (Spain)",
	"eu-west-1":      "Europe (Ireland)",
	"eu-west-2":      "Europe (London)",
	"eu-west-3":      "Europe (Paris)",
	"il-central-1":   "Israel (Tel Aviv)",
	"me-central-1":   "Middle East (UAE)",
	"me-south-1":     "Middle East (Bahrain)",
	"mx-central-1":   "Mexico (Central)",
	"sa-east-1":      "South America (Sao Paulo)",
	"us-east-1":      "US East (N. Virginia)",
	"us-east-2":      "US East (Ohio)",
	"us-gov-east-1":  "AWS GovCloud (US-East)",
	"us-gov-west-1":  "AWS GovCloud (US-West)",
	"us-west-1":      "US West (N. California)",
	"us-west-2":      "US West (Oregon)",
}

// GetAWSRegionName returns the display name for an AWS region ID
func GetAWSRegionName(regionID string) string {
	if name, exists := AWSRegions[regionID]; exists {
		return name
	}
	return "Unknown Region"
}

// IsValidAWSRegion checks if an AWS region ID is valid
func IsValidAWSRegion(regionID string) bool {
	_, exists := AWSRegions[regionID]
	return exists
}

// GetAWSRegionIDs returns all AWS region IDs
func GetAWSRegionIDs() []string {
	regions := make([]string, 0, len(AWSRegions))
	for regionID := range AWSRegions {
		regions = append(regions, regionID)
	}
	return regions
}
