src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

endpoints.go (9199B)


      1 // Code generated by smithy-go-codegen DO NOT EDIT.
      2 
      3 package endpoints
      4 
      5 import (
      6 	"regexp"
      7 
      8 	"github.com/aws/aws-sdk-go-v2/aws"
      9 	endpoints "github.com/aws/aws-sdk-go-v2/internal/endpoints/v2"
     10 	"github.com/aws/smithy-go/logging"
     11 )
     12 
     13 // Options is the endpoint resolver configuration options
     14 type Options struct {
     15 	// Logger is a logging implementation that log events should be sent to.
     16 	Logger logging.Logger
     17 
     18 	// LogDeprecated indicates that deprecated endpoints should be logged to the
     19 	// provided logger.
     20 	LogDeprecated bool
     21 
     22 	// ResolvedRegion is used to override the region to be resolved, rather then the
     23 	// using the value passed to the ResolveEndpoint method. This value is used by the
     24 	// SDK to translate regions like fips-us-east-1 or us-east-1-fips to an alternative
     25 	// name. You must not set this value directly in your application.
     26 	ResolvedRegion string
     27 
     28 	// DisableHTTPS informs the resolver to return an endpoint that does not use the
     29 	// HTTPS scheme.
     30 	DisableHTTPS bool
     31 
     32 	// UseDualStackEndpoint specifies the resolver must resolve a dual-stack endpoint.
     33 	UseDualStackEndpoint aws.DualStackEndpointState
     34 
     35 	// UseFIPSEndpoint specifies the resolver must resolve a FIPS endpoint.
     36 	UseFIPSEndpoint aws.FIPSEndpointState
     37 }
     38 
     39 func (o Options) GetResolvedRegion() string {
     40 	return o.ResolvedRegion
     41 }
     42 
     43 func (o Options) GetDisableHTTPS() bool {
     44 	return o.DisableHTTPS
     45 }
     46 
     47 func (o Options) GetUseDualStackEndpoint() aws.DualStackEndpointState {
     48 	return o.UseDualStackEndpoint
     49 }
     50 
     51 func (o Options) GetUseFIPSEndpoint() aws.FIPSEndpointState {
     52 	return o.UseFIPSEndpoint
     53 }
     54 
     55 func transformToSharedOptions(options Options) endpoints.Options {
     56 	return endpoints.Options{
     57 		Logger:               options.Logger,
     58 		LogDeprecated:        options.LogDeprecated,
     59 		ResolvedRegion:       options.ResolvedRegion,
     60 		DisableHTTPS:         options.DisableHTTPS,
     61 		UseDualStackEndpoint: options.UseDualStackEndpoint,
     62 		UseFIPSEndpoint:      options.UseFIPSEndpoint,
     63 	}
     64 }
     65 
     66 // Resolver Signin endpoint resolver
     67 type Resolver struct {
     68 	partitions endpoints.Partitions
     69 }
     70 
     71 // ResolveEndpoint resolves the service endpoint for the given region and options
     72 func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) {
     73 	if len(region) == 0 {
     74 		return endpoint, &aws.MissingRegionError{}
     75 	}
     76 
     77 	opt := transformToSharedOptions(options)
     78 	return r.partitions.ResolveEndpoint(region, opt)
     79 }
     80 
     81 // New returns a new Resolver
     82 func New() *Resolver {
     83 	return &Resolver{
     84 		partitions: defaultPartitions,
     85 	}
     86 }
     87 
     88 var partitionRegexp = struct {
     89 	Aws      *regexp.Regexp
     90 	AwsCn    *regexp.Regexp
     91 	AwsEusc  *regexp.Regexp
     92 	AwsIso   *regexp.Regexp
     93 	AwsIsoB  *regexp.Regexp
     94 	AwsIsoE  *regexp.Regexp
     95 	AwsIsoF  *regexp.Regexp
     96 	AwsUsGov *regexp.Regexp
     97 }{
     98 
     99 	Aws:      regexp.MustCompile("^(us|eu|ap|sa|ca|me|af|il|mx)\\-\\w+\\-\\d+$"),
    100 	AwsCn:    regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
    101 	AwsEusc:  regexp.MustCompile("^eusc\\-(de)\\-\\w+\\-\\d+$"),
    102 	AwsIso:   regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
    103 	AwsIsoB:  regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
    104 	AwsIsoE:  regexp.MustCompile("^eu\\-isoe\\-\\w+\\-\\d+$"),
    105 	AwsIsoF:  regexp.MustCompile("^us\\-isof\\-\\w+\\-\\d+$"),
    106 	AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
    107 }
    108 
    109 var defaultPartitions = endpoints.Partitions{
    110 	{
    111 		ID: "aws",
    112 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    113 			{
    114 				Variant: endpoints.DualStackVariant,
    115 			}: {
    116 				Hostname:          "signin.{region}.api.aws",
    117 				Protocols:         []string{"https"},
    118 				SignatureVersions: []string{"v4"},
    119 			},
    120 			{
    121 				Variant: endpoints.FIPSVariant,
    122 			}: {
    123 				Hostname:          "signin-fips.{region}.amazonaws.com",
    124 				Protocols:         []string{"https"},
    125 				SignatureVersions: []string{"v4"},
    126 			},
    127 			{
    128 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    129 			}: {
    130 				Hostname:          "signin-fips.{region}.api.aws",
    131 				Protocols:         []string{"https"},
    132 				SignatureVersions: []string{"v4"},
    133 			},
    134 			{
    135 				Variant: 0,
    136 			}: {
    137 				Hostname:          "signin.{region}.amazonaws.com",
    138 				Protocols:         []string{"https"},
    139 				SignatureVersions: []string{"v4"},
    140 			},
    141 		},
    142 		RegionRegex:    partitionRegexp.Aws,
    143 		IsRegionalized: true,
    144 	},
    145 	{
    146 		ID: "aws-cn",
    147 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    148 			{
    149 				Variant: endpoints.DualStackVariant,
    150 			}: {
    151 				Hostname:          "signin.{region}.api.amazonwebservices.com.cn",
    152 				Protocols:         []string{"https"},
    153 				SignatureVersions: []string{"v4"},
    154 			},
    155 			{
    156 				Variant: endpoints.FIPSVariant,
    157 			}: {
    158 				Hostname:          "signin-fips.{region}.amazonaws.com.cn",
    159 				Protocols:         []string{"https"},
    160 				SignatureVersions: []string{"v4"},
    161 			},
    162 			{
    163 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    164 			}: {
    165 				Hostname:          "signin-fips.{region}.api.amazonwebservices.com.cn",
    166 				Protocols:         []string{"https"},
    167 				SignatureVersions: []string{"v4"},
    168 			},
    169 			{
    170 				Variant: 0,
    171 			}: {
    172 				Hostname:          "signin.{region}.amazonaws.com.cn",
    173 				Protocols:         []string{"https"},
    174 				SignatureVersions: []string{"v4"},
    175 			},
    176 		},
    177 		RegionRegex:    partitionRegexp.AwsCn,
    178 		IsRegionalized: true,
    179 	},
    180 	{
    181 		ID: "aws-eusc",
    182 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    183 			{
    184 				Variant: endpoints.DualStackVariant,
    185 			}: {
    186 				Hostname:          "signin.{region}.api.amazonwebservices.eu",
    187 				Protocols:         []string{"https"},
    188 				SignatureVersions: []string{"v4"},
    189 			},
    190 			{
    191 				Variant: endpoints.FIPSVariant,
    192 			}: {
    193 				Hostname:          "signin-fips.{region}.amazonaws.eu",
    194 				Protocols:         []string{"https"},
    195 				SignatureVersions: []string{"v4"},
    196 			},
    197 			{
    198 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    199 			}: {
    200 				Hostname:          "signin-fips.{region}.api.amazonwebservices.eu",
    201 				Protocols:         []string{"https"},
    202 				SignatureVersions: []string{"v4"},
    203 			},
    204 			{
    205 				Variant: 0,
    206 			}: {
    207 				Hostname:          "signin.{region}.amazonaws.eu",
    208 				Protocols:         []string{"https"},
    209 				SignatureVersions: []string{"v4"},
    210 			},
    211 		},
    212 		RegionRegex:    partitionRegexp.AwsEusc,
    213 		IsRegionalized: true,
    214 	},
    215 	{
    216 		ID: "aws-iso",
    217 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    218 			{
    219 				Variant: endpoints.FIPSVariant,
    220 			}: {
    221 				Hostname:          "signin-fips.{region}.c2s.ic.gov",
    222 				Protocols:         []string{"https"},
    223 				SignatureVersions: []string{"v4"},
    224 			},
    225 			{
    226 				Variant: 0,
    227 			}: {
    228 				Hostname:          "signin.{region}.c2s.ic.gov",
    229 				Protocols:         []string{"https"},
    230 				SignatureVersions: []string{"v4"},
    231 			},
    232 		},
    233 		RegionRegex:    partitionRegexp.AwsIso,
    234 		IsRegionalized: true,
    235 	},
    236 	{
    237 		ID: "aws-iso-b",
    238 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    239 			{
    240 				Variant: endpoints.FIPSVariant,
    241 			}: {
    242 				Hostname:          "signin-fips.{region}.sc2s.sgov.gov",
    243 				Protocols:         []string{"https"},
    244 				SignatureVersions: []string{"v4"},
    245 			},
    246 			{
    247 				Variant: 0,
    248 			}: {
    249 				Hostname:          "signin.{region}.sc2s.sgov.gov",
    250 				Protocols:         []string{"https"},
    251 				SignatureVersions: []string{"v4"},
    252 			},
    253 		},
    254 		RegionRegex:    partitionRegexp.AwsIsoB,
    255 		IsRegionalized: true,
    256 	},
    257 	{
    258 		ID: "aws-iso-e",
    259 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    260 			{
    261 				Variant: endpoints.FIPSVariant,
    262 			}: {
    263 				Hostname:          "signin-fips.{region}.cloud.adc-e.uk",
    264 				Protocols:         []string{"https"},
    265 				SignatureVersions: []string{"v4"},
    266 			},
    267 			{
    268 				Variant: 0,
    269 			}: {
    270 				Hostname:          "signin.{region}.cloud.adc-e.uk",
    271 				Protocols:         []string{"https"},
    272 				SignatureVersions: []string{"v4"},
    273 			},
    274 		},
    275 		RegionRegex:    partitionRegexp.AwsIsoE,
    276 		IsRegionalized: true,
    277 	},
    278 	{
    279 		ID: "aws-iso-f",
    280 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    281 			{
    282 				Variant: endpoints.FIPSVariant,
    283 			}: {
    284 				Hostname:          "signin-fips.{region}.csp.hci.ic.gov",
    285 				Protocols:         []string{"https"},
    286 				SignatureVersions: []string{"v4"},
    287 			},
    288 			{
    289 				Variant: 0,
    290 			}: {
    291 				Hostname:          "signin.{region}.csp.hci.ic.gov",
    292 				Protocols:         []string{"https"},
    293 				SignatureVersions: []string{"v4"},
    294 			},
    295 		},
    296 		RegionRegex:    partitionRegexp.AwsIsoF,
    297 		IsRegionalized: true,
    298 	},
    299 	{
    300 		ID: "aws-us-gov",
    301 		Defaults: map[endpoints.DefaultKey]endpoints.Endpoint{
    302 			{
    303 				Variant: endpoints.DualStackVariant,
    304 			}: {
    305 				Hostname:          "signin.{region}.api.aws",
    306 				Protocols:         []string{"https"},
    307 				SignatureVersions: []string{"v4"},
    308 			},
    309 			{
    310 				Variant: endpoints.FIPSVariant,
    311 			}: {
    312 				Hostname:          "signin-fips.{region}.amazonaws.com",
    313 				Protocols:         []string{"https"},
    314 				SignatureVersions: []string{"v4"},
    315 			},
    316 			{
    317 				Variant: endpoints.FIPSVariant | endpoints.DualStackVariant,
    318 			}: {
    319 				Hostname:          "signin-fips.{region}.api.aws",
    320 				Protocols:         []string{"https"},
    321 				SignatureVersions: []string{"v4"},
    322 			},
    323 			{
    324 				Variant: 0,
    325 			}: {
    326 				Hostname:          "signin.{region}.amazonaws.com",
    327 				Protocols:         []string{"https"},
    328 				SignatureVersions: []string{"v4"},
    329 			},
    330 		},
    331 		RegionRegex:    partitionRegexp.AwsUsGov,
    332 		IsRegionalized: true,
    333 	},
    334 }