示例#1
0
        /// <summary>
        /// 根据所属区域创建bucket地址信息
        /// </summary>
        /// <param name="region"></param>
        /// <param name="bucketName"></param>
        /// <param name="useHttps"></param>
        /// <param name="useInternal">是否使用内网地址</param>
        /// <returns></returns>
        public static BucketInfo CreateByRegion(string region, string bucketName, bool useHttps = false, bool useInternal = false)
        {
            var uriBuilder = new UriBuilder();

            uriBuilder.Scheme = useHttps ? "https" : "http";
            uriBuilder.Host   = region + (useInternal ? "-internal.aliyuncs.com" : ".aliyuncs.com");

            var bucket = new BucketInfo()
            {
                IsCname     = false,
                BucketName  = bucketName,
                IsHttps     = useHttps,
                EndpointUri = uriBuilder.Uri
            };

            if (string.IsNullOrEmpty(bucketName))
            {
                bucket.BucketUri = bucket.EndpointUri;
            }
            else
            {
                uriBuilder.Host  = bucketName + "." + uriBuilder.Host;
                bucket.BucketUri = uriBuilder.Uri;
            }

            return(bucket);
        }
        /// <summary>
        /// 使用自定义域名创建地址信息
        /// </summary>
        /// <param name="uri"></param>
        /// <param name="bucket"></param>
        /// <returns></returns>
        public static BucketInfo CreateByCname(Uri uri, string bucket)
        {
            var newBucket = new BucketInfo()
            {
                IsCname     = true,
                IsHttps     = uri.Scheme.ToLower() == "https",
                BucketName  = bucket,
                EndpointUri = uri,
                BucketUri   = uri, //TODO? CName情况下,oss端点地址和bucket端点地址一致?
            };

            return(newBucket);
        }
        /// <summary>
        /// 根据所属区域创建bucket地址信息
        /// </summary>
        /// <param name="region"></param>
        /// <param name="bucketName"></param>
        /// <param name="useHttps"></param>
        /// <param name="useInternal">是否使用内网地址</param>
        /// <returns></returns>
        public static BucketInfo CreateByRegion(string region, string bucketName, bool useHttps = false, bool useInternal = false)
        {
            var baseDomain = useInternal? "-internal.aliyuncs.com" : ".aliyuncs.com";
            var method     = useHttps ? "https://" : "http://";

            var bucket = new BucketInfo()
            {
                IsCname    = false,
                BucketName = bucketName,
                IsHttps    = useHttps
            };

            bucket.EndpointUri = new Uri(method + region + baseDomain);

            // bucket名称为空的情况,直接访问oss
            bucket.BucketUri = String.IsNullOrEmpty(bucketName)? bucket.EndpointUri : new Uri(method + bucketName + "." + region + baseDomain);

            return(bucket);
        }