...

Source file src/github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn/partition.go

Documentation: github.com/aws/aws-sdk-go-v2/internal/endpoints/awsrulesfn

     1  package awsrulesfn
     2  
     3  import "regexp"
     4  
     5  // Partition provides the metadata describing an AWS partition.
     6  type Partition struct {
     7  	ID            string                     `json:"id"`
     8  	Regions       map[string]RegionOverrides `json:"regions"`
     9  	RegionRegex   string                     `json:"regionRegex"`
    10  	DefaultConfig PartitionConfig            `json:"outputs"`
    11  }
    12  
    13  // PartitionConfig provides the endpoint metadata for an AWS region or partition.
    14  type PartitionConfig struct {
    15  	Name               string `json:"name"`
    16  	DnsSuffix          string `json:"dnsSuffix"`
    17  	DualStackDnsSuffix string `json:"dualStackDnsSuffix"`
    18  	SupportsFIPS       bool   `json:"supportsFIPS"`
    19  	SupportsDualStack  bool   `json:"supportsDualStack"`
    20  }
    21  
    22  type RegionOverrides struct {
    23  	Name               *string `json:"name"`
    24  	DnsSuffix          *string `json:"dnsSuffix"`
    25  	DualStackDnsSuffix *string `json:"dualStackDnsSuffix"`
    26  	SupportsFIPS       *bool   `json:"supportsFIPS"`
    27  	SupportsDualStack  *bool   `json:"supportsDualStack"`
    28  }
    29  
    30  const defaultPartition = "aws"
    31  
    32  func getPartition(partitions []Partition, region string) *PartitionConfig {
    33  	for _, partition := range partitions {
    34  		if v, ok := partition.Regions[region]; ok {
    35  			p := mergeOverrides(partition.DefaultConfig, v)
    36  			return &p
    37  		}
    38  	}
    39  
    40  	for _, partition := range partitions {
    41  		regionRegex := regexp.MustCompile(partition.RegionRegex)
    42  		if regionRegex.MatchString(region) {
    43  			v := partition.DefaultConfig
    44  			return &v
    45  		}
    46  	}
    47  
    48  	for _, partition := range partitions {
    49  		if partition.ID == defaultPartition {
    50  			v := partition.DefaultConfig
    51  			return &v
    52  		}
    53  	}
    54  
    55  	return nil
    56  }
    57  
    58  func mergeOverrides(into PartitionConfig, from RegionOverrides) PartitionConfig {
    59  	if from.Name != nil {
    60  		into.Name = *from.Name
    61  	}
    62  	if from.DnsSuffix != nil {
    63  		into.DnsSuffix = *from.DnsSuffix
    64  	}
    65  	if from.DualStackDnsSuffix != nil {
    66  		into.DualStackDnsSuffix = *from.DualStackDnsSuffix
    67  	}
    68  	if from.SupportsFIPS != nil {
    69  		into.SupportsFIPS = *from.SupportsFIPS
    70  	}
    71  	if from.SupportsDualStack != nil {
    72  		into.SupportsDualStack = *from.SupportsDualStack
    73  	}
    74  	return into
    75  }
    76  

View as plain text