1// Code generated by smithy-go-codegen DO NOT EDIT.
2
3package endpoints
4
5import (
6	"github.com/aws/aws-sdk-go-v2/aws"
7	"github.com/aws/aws-sdk-go-v2/internal/endpoints"
8	"regexp"
9)
10
11// Options is the endpoint resolver configuration options
12type Options struct {
13	DisableHTTPS bool
14}
15
16// Resolver S3 Control endpoint resolver
17type Resolver struct {
18	partitions endpoints.Partitions
19}
20
21// ResolveEndpoint resolves the service endpoint for the given region and options
22func (r *Resolver) ResolveEndpoint(region string, options Options) (endpoint aws.Endpoint, err error) {
23	if len(region) == 0 {
24		return endpoint, &aws.MissingRegionError{}
25	}
26
27	opt := endpoints.Options{
28		DisableHTTPS: options.DisableHTTPS,
29	}
30	return r.partitions.ResolveEndpoint(region, opt)
31}
32
33// New returns a new Resolver
34func New() *Resolver {
35	return &Resolver{
36		partitions: defaultPartitions,
37	}
38}
39
40var partitionRegexp = struct {
41	Aws      *regexp.Regexp
42	AwsCn    *regexp.Regexp
43	AwsIso   *regexp.Regexp
44	AwsIsoB  *regexp.Regexp
45	AwsUsGov *regexp.Regexp
46}{
47
48	Aws:      regexp.MustCompile("^(us|eu|ap|sa|ca|me|af)\\-\\w+\\-\\d+$"),
49	AwsCn:    regexp.MustCompile("^cn\\-\\w+\\-\\d+$"),
50	AwsIso:   regexp.MustCompile("^us\\-iso\\-\\w+\\-\\d+$"),
51	AwsIsoB:  regexp.MustCompile("^us\\-isob\\-\\w+\\-\\d+$"),
52	AwsUsGov: regexp.MustCompile("^us\\-gov\\-\\w+\\-\\d+$"),
53}
54
55var defaultPartitions = endpoints.Partitions{
56	{
57		ID: "aws",
58		Defaults: endpoints.Endpoint{
59			Hostname:          "s3-control.{region}.amazonaws.com",
60			Protocols:         []string{"https"},
61			SignatureVersions: []string{"s3v4"},
62		},
63		RegionRegex:    partitionRegexp.Aws,
64		IsRegionalized: true,
65		Endpoints: endpoints.Endpoints{
66			"ap-northeast-1": endpoints.Endpoint{
67				Hostname:          "s3-control.ap-northeast-1.amazonaws.com",
68				SignatureVersions: []string{"s3v4"},
69				CredentialScope: endpoints.CredentialScope{
70					Region: "ap-northeast-1",
71				},
72			},
73			"ap-northeast-2": endpoints.Endpoint{
74				Hostname:          "s3-control.ap-northeast-2.amazonaws.com",
75				SignatureVersions: []string{"s3v4"},
76				CredentialScope: endpoints.CredentialScope{
77					Region: "ap-northeast-2",
78				},
79			},
80			"ap-northeast-3": endpoints.Endpoint{
81				Hostname:          "s3-control.ap-northeast-3.amazonaws.com",
82				SignatureVersions: []string{"s3v4"},
83				CredentialScope: endpoints.CredentialScope{
84					Region: "ap-northeast-3",
85				},
86			},
87			"ap-south-1": endpoints.Endpoint{
88				Hostname:          "s3-control.ap-south-1.amazonaws.com",
89				SignatureVersions: []string{"s3v4"},
90				CredentialScope: endpoints.CredentialScope{
91					Region: "ap-south-1",
92				},
93			},
94			"ap-southeast-1": endpoints.Endpoint{
95				Hostname:          "s3-control.ap-southeast-1.amazonaws.com",
96				SignatureVersions: []string{"s3v4"},
97				CredentialScope: endpoints.CredentialScope{
98					Region: "ap-southeast-1",
99				},
100			},
101			"ap-southeast-2": endpoints.Endpoint{
102				Hostname:          "s3-control.ap-southeast-2.amazonaws.com",
103				SignatureVersions: []string{"s3v4"},
104				CredentialScope: endpoints.CredentialScope{
105					Region: "ap-southeast-2",
106				},
107			},
108			"ca-central-1": endpoints.Endpoint{
109				Hostname:          "s3-control.ca-central-1.amazonaws.com",
110				SignatureVersions: []string{"s3v4"},
111				CredentialScope: endpoints.CredentialScope{
112					Region: "ca-central-1",
113				},
114			},
115			"ca-central-1-fips": endpoints.Endpoint{
116				Hostname:          "s3-control-fips.ca-central-1.amazonaws.com",
117				SignatureVersions: []string{"s3v4"},
118				CredentialScope: endpoints.CredentialScope{
119					Region: "ca-central-1",
120				},
121			},
122			"eu-central-1": endpoints.Endpoint{
123				Hostname:          "s3-control.eu-central-1.amazonaws.com",
124				SignatureVersions: []string{"s3v4"},
125				CredentialScope: endpoints.CredentialScope{
126					Region: "eu-central-1",
127				},
128			},
129			"eu-north-1": endpoints.Endpoint{
130				Hostname:          "s3-control.eu-north-1.amazonaws.com",
131				SignatureVersions: []string{"s3v4"},
132				CredentialScope: endpoints.CredentialScope{
133					Region: "eu-north-1",
134				},
135			},
136			"eu-west-1": endpoints.Endpoint{
137				Hostname:          "s3-control.eu-west-1.amazonaws.com",
138				SignatureVersions: []string{"s3v4"},
139				CredentialScope: endpoints.CredentialScope{
140					Region: "eu-west-1",
141				},
142			},
143			"eu-west-2": endpoints.Endpoint{
144				Hostname:          "s3-control.eu-west-2.amazonaws.com",
145				SignatureVersions: []string{"s3v4"},
146				CredentialScope: endpoints.CredentialScope{
147					Region: "eu-west-2",
148				},
149			},
150			"eu-west-3": endpoints.Endpoint{
151				Hostname:          "s3-control.eu-west-3.amazonaws.com",
152				SignatureVersions: []string{"s3v4"},
153				CredentialScope: endpoints.CredentialScope{
154					Region: "eu-west-3",
155				},
156			},
157			"sa-east-1": endpoints.Endpoint{
158				Hostname:          "s3-control.sa-east-1.amazonaws.com",
159				SignatureVersions: []string{"s3v4"},
160				CredentialScope: endpoints.CredentialScope{
161					Region: "sa-east-1",
162				},
163			},
164			"us-east-1": endpoints.Endpoint{
165				Hostname:          "s3-control.us-east-1.amazonaws.com",
166				SignatureVersions: []string{"s3v4"},
167				CredentialScope: endpoints.CredentialScope{
168					Region: "us-east-1",
169				},
170			},
171			"us-east-1-fips": endpoints.Endpoint{
172				Hostname:          "s3-control-fips.us-east-1.amazonaws.com",
173				SignatureVersions: []string{"s3v4"},
174				CredentialScope: endpoints.CredentialScope{
175					Region: "us-east-1",
176				},
177			},
178			"us-east-2": endpoints.Endpoint{
179				Hostname:          "s3-control.us-east-2.amazonaws.com",
180				SignatureVersions: []string{"s3v4"},
181				CredentialScope: endpoints.CredentialScope{
182					Region: "us-east-2",
183				},
184			},
185			"us-east-2-fips": endpoints.Endpoint{
186				Hostname:          "s3-control-fips.us-east-2.amazonaws.com",
187				SignatureVersions: []string{"s3v4"},
188				CredentialScope: endpoints.CredentialScope{
189					Region: "us-east-2",
190				},
191			},
192			"us-west-1": endpoints.Endpoint{
193				Hostname:          "s3-control.us-west-1.amazonaws.com",
194				SignatureVersions: []string{"s3v4"},
195				CredentialScope: endpoints.CredentialScope{
196					Region: "us-west-1",
197				},
198			},
199			"us-west-1-fips": endpoints.Endpoint{
200				Hostname:          "s3-control-fips.us-west-1.amazonaws.com",
201				SignatureVersions: []string{"s3v4"},
202				CredentialScope: endpoints.CredentialScope{
203					Region: "us-west-1",
204				},
205			},
206			"us-west-2": endpoints.Endpoint{
207				Hostname:          "s3-control.us-west-2.amazonaws.com",
208				SignatureVersions: []string{"s3v4"},
209				CredentialScope: endpoints.CredentialScope{
210					Region: "us-west-2",
211				},
212			},
213			"us-west-2-fips": endpoints.Endpoint{
214				Hostname:          "s3-control-fips.us-west-2.amazonaws.com",
215				SignatureVersions: []string{"s3v4"},
216				CredentialScope: endpoints.CredentialScope{
217					Region: "us-west-2",
218				},
219			},
220		},
221	},
222	{
223		ID: "aws-cn",
224		Defaults: endpoints.Endpoint{
225			Hostname:          "s3-control.{region}.amazonaws.com.cn",
226			Protocols:         []string{"https"},
227			SignatureVersions: []string{"s3v4"},
228		},
229		RegionRegex:    partitionRegexp.AwsCn,
230		IsRegionalized: true,
231		Endpoints: endpoints.Endpoints{
232			"cn-north-1": endpoints.Endpoint{
233				Hostname:          "s3-control.cn-north-1.amazonaws.com.cn",
234				SignatureVersions: []string{"s3v4"},
235				CredentialScope: endpoints.CredentialScope{
236					Region: "cn-north-1",
237				},
238			},
239			"cn-northwest-1": endpoints.Endpoint{
240				Hostname:          "s3-control.cn-northwest-1.amazonaws.com.cn",
241				SignatureVersions: []string{"s3v4"},
242				CredentialScope: endpoints.CredentialScope{
243					Region: "cn-northwest-1",
244				},
245			},
246		},
247	},
248	{
249		ID: "aws-iso",
250		Defaults: endpoints.Endpoint{
251			Hostname:          "s3-control.{region}.c2s.ic.gov",
252			Protocols:         []string{"https"},
253			SignatureVersions: []string{"v4"},
254		},
255		RegionRegex:    partitionRegexp.AwsIso,
256		IsRegionalized: true,
257	},
258	{
259		ID: "aws-iso-b",
260		Defaults: endpoints.Endpoint{
261			Hostname:          "s3-control.{region}.sc2s.sgov.gov",
262			Protocols:         []string{"https"},
263			SignatureVersions: []string{"v4"},
264		},
265		RegionRegex:    partitionRegexp.AwsIsoB,
266		IsRegionalized: true,
267	},
268	{
269		ID: "aws-us-gov",
270		Defaults: endpoints.Endpoint{
271			Hostname:          "s3-control.{region}.amazonaws.com",
272			Protocols:         []string{"https"},
273			SignatureVersions: []string{"s3v4"},
274		},
275		RegionRegex:    partitionRegexp.AwsUsGov,
276		IsRegionalized: true,
277		Endpoints: endpoints.Endpoints{
278			"us-gov-east-1": endpoints.Endpoint{
279				Hostname:          "s3-control.us-gov-east-1.amazonaws.com",
280				SignatureVersions: []string{"s3v4"},
281				CredentialScope: endpoints.CredentialScope{
282					Region: "us-gov-east-1",
283				},
284			},
285			"us-gov-east-1-fips": endpoints.Endpoint{
286				Hostname:          "s3-control-fips.us-gov-east-1.amazonaws.com",
287				SignatureVersions: []string{"s3v4"},
288				CredentialScope: endpoints.CredentialScope{
289					Region: "us-gov-east-1",
290				},
291			},
292			"us-gov-west-1": endpoints.Endpoint{
293				Hostname:          "s3-control.us-gov-west-1.amazonaws.com",
294				SignatureVersions: []string{"s3v4"},
295				CredentialScope: endpoints.CredentialScope{
296					Region: "us-gov-west-1",
297				},
298			},
299			"us-gov-west-1-fips": endpoints.Endpoint{
300				Hostname:          "s3-control-fips.us-gov-west-1.amazonaws.com",
301				SignatureVersions: []string{"s3v4"},
302				CredentialScope: endpoints.CredentialScope{
303					Region: "us-gov-west-1",
304				},
305			},
306		},
307	},
308}
309