예제 #1
0
        internal static ZoneID GetZone(IQiniuSerializer serializer, string accessKey, string bucket)
        {
            if (serializer == null)
            {
                throw new ArgumentNullException("请添加 JSON 序列化组件");
            }

            var zoneID = ZoneID.Invalid;

            try
            {
                var url    = "https://uc.qbox.me/v1/query?ak=" + accessKey + "&bucket=" + bucket;
                var result = new HttpManager().Get(url, null);
                if (result.Code != (int)HttpCode.OK)
                {
                    throw new Exception("code: " + result.Code + ", text: " + result.Text + ", ref-text:" + result.RefText);
                }

                var info = serializer.Deserialize <ZoneInfo>(result.Text);
                if (info == null)
                {
                    throw new Exception("JSON Deserialize failed: " + result.Text);
                }

                zoneID = _ZONE_DICT[info.HTTP.UP[0]];
            }
            catch (Exception exception)
            {
                var builder = new StringBuilder();
                builder.AppendFormat("[{0:yyyy-MM-dd HH:mm:ss.ffff}] QueryZone Error:", DateTime.Now);
                var tempEx = exception;

                while (tempEx != null)
                {
                    builder.AppendFormat(" {0}", tempEx.Message);
                    tempEx = tempEx.InnerException;
                }

                builder.AppendLine();
                throw new Exception(builder.ToString());
            }

            return(zoneID);
        }
예제 #2
0
 internal BucketManager(string bucket)
 {
     _bucket      = bucket;
     _httpManager = new HttpManager();
 }