/// <summary> /// 根据标签筛选空间获取空间名列表 /// </summary> /// <param name="request"></param> /// <returns></returns> public BucketItemResultDto GetBucketList(GetBucketParam request) { UrlParameter urlParameter = new UrlParameter(); request.TagFilters.ForEach(tag => { urlParameter.Add(tag.Key, tag.Value); }); string url = $"http://rs.qbox.me/buckets?tagCondition={Base64.UrlSafeBase64Encode(urlParameter.GetQueryResult())}"; _httpClient.Headers = new Dictionary <string, string>() { { "Authorization", $"{_storageProvider.GetManageToken(new GetManageTokenParam(url))}" } }; try { var response = _httpClient.GetString(url); return(GetResponse(response, () => { var bucketList = _jsonProvider.Deserialize <List <string> >(response); Expression <Func <string, bool> > condition = x => true; if (!string.IsNullOrEmpty(request.Prefix)) { condition = condition.And(x => x.StartsWith(request.Prefix)); } var list = bucketList.Where(condition.Compile()).ToList(); if (!string.IsNullOrEmpty(request.Marker)) { var index = list.ToList().IndexOf(request.Marker); if (index != -1) { list = list.Skip(index + 1).ToList(); } } if (request.PageSize != -1) { var isTruncated = list.Take(request.PageSize).Count() != list.Count; return new BucketItemResultDto( list.Take(request.PageSize).Select(x => new BucketItemResultDto.BucketItemDto(null, x)) .ToList(), request.Prefix, isTruncated, request.Marker, isTruncated ? list.Take(request.PageSize).LastOrDefault() : ""); } return new BucketItemResultDto( list.Select(x => new BucketItemResultDto.BucketItemDto(null, x)).ToList(), request.Prefix, false, request.Marker, ""); }, resultResponse => new BucketItemResultDto(request.Prefix, request.Marker, $"{resultResponse.Error}|{resultResponse.ErrorCode}"))); } catch (Exception ex) { this._logger?.LogError(ex.ExtractAllStackTrace()); return(new BucketItemResultDto(request.Prefix, request.Marker, $"lose {ex.Message}")); } }
/// <summary> /// 获取空间列表 /// </summary> /// <param name="request"></param> /// <returns></returns> public BucketItemResultDto GetBucketList(GetBucketParam request) { return(ToolCommon.GetResponse(() => { var zone = Core.Tools.GetZone(_aLiYunConfig, request.PersistentOps.Zone, () => ZoneEnum.HangZhou); var client = _aLiYunConfig.GetClient(zone); ListBucketsRequest listBucketsRequest = new ListBucketsRequest(); if (request.PageSize != -1) { listBucketsRequest.MaxKeys = request.PageSize; } if (request.TagFilters.Count > 0) { var keyValue = request.TagFilters.FirstOrDefault(); listBucketsRequest.Tag = new Tag() { Key = keyValue.Key, Value = keyValue.Value }; } if (!string.IsNullOrEmpty(request.Prefix)) { listBucketsRequest.Prefix = request.Prefix; } if (!string.IsNullOrEmpty(request.Marker)) { listBucketsRequest.Marker = request.Marker; } var ret = client.ListBuckets(listBucketsRequest); if (ret.HttpStatusCode == HttpStatusCode.OK) { return new BucketItemResultDto( ret.Buckets.Select(x => new BucketItemResultDto.BucketItemDto((int?)Core.Tools.GetZoneByLocation(x.Location), x.Name)).ToList(), ret.Prefix, ret.IsTruncated, ret.Marker, ret.NextMaker); } return new BucketItemResultDto(request.Prefix, request.Marker, $"lose RequestId:{ret.RequestId},HttpStatusCode:{ret.HttpStatusCode}"); }, message => new BucketItemResultDto(request.Prefix, request.Marker, message))); }
public BucketItemResultDto GetBucketList(GetBucketParam request) { throw new System.NotImplementedException(); }