/*
* MinIO .NET Library for Amazon S3 Compatible Cloud Storage, (C) 2017 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.
*/
using System.Collections.Concurrent;
namespace Minio;
///
/// Amazon AWS S3 endpoints for various regions.
///
public sealed class AWSS3Endpoints
{
private static readonly Lazy lazy = new(() => new AWSS3Endpoints());
private readonly ConcurrentDictionary endpoints;
private AWSS3Endpoints()
{
endpoints = new ConcurrentDictionary(StringComparer.Ordinal);
// ap-northeast-1
_ = endpoints.TryAdd("ap-northeast-1", "s3-ap-northeast-1.amazonaws.com");
// ap-northeast-2
_ = endpoints.TryAdd("ap-northeast-2", "s3-ap-northeast-2.amazonaws.com");
// ap-south-1
_ = endpoints.TryAdd("ap-south-1", "s3-ap-south-1.amazonaws.com");
// ap-southeast-1
_ = endpoints.TryAdd("ap-southeast-1", "s3-ap-southeast-1.amazonaws.com");
// ap-southeast-2
_ = endpoints.TryAdd("ap-southeast-2", "s3-ap-southeast-2.amazonaws.com");
// eu-central-1
_ = endpoints.TryAdd("eu-central-1", "s3-eu-central-1.amazonaws.com");
// eu-west-1
_ = endpoints.TryAdd("eu-west-1", "s3-eu-west-1.amazonaws.com");
// eu-west-2
_ = endpoints.TryAdd("eu-west-2", "s3-eu-west-2.amazonaws.com");
// sa-east-1
_ = endpoints.TryAdd("sa-east-1", "s3-sa-east-1.amazonaws.com");
// us-west-1
_ = endpoints.TryAdd("us-west-1", "s3-us-west-1.amazonaws.com");
// us-west-2
_ = endpoints.TryAdd("us-west-2", "s3-us-west-2.amazonaws.com");
// us-east-1
_ = endpoints.TryAdd("us-east-1", "s3.amazonaws.com");
// us-east-2
_ = endpoints.TryAdd("us-east-2", "s3-us-east-2.amazonaws.com");
// ca-central-1
_ = endpoints.TryAdd("ca-central-1", "s3.ca-central-1.amazonaws.com");
// cn-north-1
_ = endpoints.TryAdd("cn-north-1", "s3.cn-north-1.amazonaws.com.cn");
}
public static AWSS3Endpoints Instance => lazy.Value;
///
/// Gets Amazon S3 endpoint for the relevant region.
///
///
///
public static string Endpoint(string region)
{
string endpoint = null;
if (region is not null) _ = Instance.endpoints.TryGetValue(region, out endpoint);
endpoint ??= "s3.amazonaws.com";
return endpoint;
}
}