71 lines
2.8 KiB
TypeScript
71 lines
2.8 KiB
TypeScript
/*
|
|
* MinIO Javascript Library for Amazon S3 Compatible Cloud Storage, (C) 2015, 2016 MinIO, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import { isString } from './helper.ts'
|
|
|
|
// List of currently supported endpoints.
|
|
const awsS3Endpoint = {
|
|
'af-south-1': 's3.af-south-1.amazonaws.com',
|
|
'ap-east-1': 's3.ap-east-1.amazonaws.com',
|
|
'ap-south-1': 's3.ap-south-1.amazonaws.com',
|
|
'ap-south-2': 's3.ap-south-2.amazonaws.com',
|
|
'ap-southeast-1': 's3.ap-southeast-1.amazonaws.com',
|
|
'ap-southeast-2': 's3.ap-southeast-2.amazonaws.com',
|
|
'ap-southeast-3': 's3.ap-southeast-3.amazonaws.com',
|
|
'ap-southeast-4': 's3.ap-southeast-4.amazonaws.com',
|
|
'ap-southeast-5': 's3.ap-southeast-5.amazonaws.com',
|
|
'ap-northeast-1': 's3.ap-northeast-1.amazonaws.com',
|
|
'ap-northeast-2': 's3.ap-northeast-2.amazonaws.com',
|
|
'ap-northeast-3': 's3.ap-northeast-3.amazonaws.com',
|
|
'ca-central-1': 's3.ca-central-1.amazonaws.com',
|
|
'ca-west-1': 's3.ca-west-1.amazonaws.com',
|
|
'cn-north-1': 's3.cn-north-1.amazonaws.com.cn',
|
|
'eu-central-1': 's3.eu-central-1.amazonaws.com',
|
|
'eu-central-2': 's3.eu-central-2.amazonaws.com',
|
|
'eu-north-1': 's3.eu-north-1.amazonaws.com',
|
|
'eu-south-1': 's3.eu-south-1.amazonaws.com',
|
|
'eu-south-2': 's3.eu-south-2.amazonaws.com',
|
|
'eu-west-1': 's3.eu-west-1.amazonaws.com',
|
|
'eu-west-2': 's3.eu-west-2.amazonaws.com',
|
|
'eu-west-3': 's3.eu-west-3.amazonaws.com',
|
|
'il-central-1': 's3.il-central-1.amazonaws.com',
|
|
'me-central-1': 's3.me-central-1.amazonaws.com',
|
|
'me-south-1': 's3.me-south-1.amazonaws.com',
|
|
'sa-east-1': 's3.sa-east-1.amazonaws.com',
|
|
'us-east-1': 's3.us-east-1.amazonaws.com',
|
|
'us-east-2': 's3.us-east-2.amazonaws.com',
|
|
'us-west-1': 's3.us-west-1.amazonaws.com',
|
|
'us-west-2': 's3.us-west-2.amazonaws.com',
|
|
'us-gov-east-1': 's3.us-gov-east-1.amazonaws.com',
|
|
'us-gov-west-1': 's3.us-gov-west-1.amazonaws.com',
|
|
// Add new endpoints here.
|
|
}
|
|
|
|
export type Region = keyof typeof awsS3Endpoint | string
|
|
|
|
// getS3Endpoint get relevant endpoint for the region.
|
|
export function getS3Endpoint(region: Region): string {
|
|
if (!isString(region)) {
|
|
throw new TypeError(`Invalid region: ${region}`)
|
|
}
|
|
|
|
const endpoint = (awsS3Endpoint as Record<string, string>)[region]
|
|
if (endpoint) {
|
|
return endpoint
|
|
}
|
|
return 's3.amazonaws.com'
|
|
}
|