You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.3 KiB
88 lines
3.3 KiB
/*
|
|
* 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;
|
|
using System.Collections.Concurrent;
|
|
|
|
namespace Minio
|
|
{
|
|
/// <summary>
|
|
/// Amazon AWS S3 endpoints for various regions.
|
|
/// </summary>
|
|
public sealed class AWSS3Endpoints
|
|
{
|
|
private static readonly Lazy<AWSS3Endpoints> lazy =
|
|
new Lazy<AWSS3Endpoints>(() => new AWSS3Endpoints());
|
|
|
|
private readonly ConcurrentDictionary<string, string> endpoints;
|
|
|
|
public static AWSS3Endpoints Instance => lazy.Value;
|
|
|
|
private AWSS3Endpoints()
|
|
{
|
|
endpoints = new ConcurrentDictionary<string, string>();
|
|
// 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");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Gets Amazon S3 endpoint for the relevant region.
|
|
/// </summary>
|
|
/// <param name="region"></param>
|
|
/// <returns></returns>
|
|
public string Endpoint(string region)
|
|
{
|
|
string endpoint = null;
|
|
if (region != null)
|
|
{
|
|
Instance.endpoints.TryGetValue(region, out endpoint);
|
|
}
|
|
if (endpoint == null)
|
|
{
|
|
endpoint = "s3.amazonaws.com";
|
|
}
|
|
return endpoint;
|
|
}
|
|
}
|
|
}
|