Esempio n. 1
0
        public Task <RiakResult <RiakBucketProperties> > GetBucketProperties(string bucket, bool extended = false)
        {
            // bucket names cannot have slashes in the names, the REST interface doesn't like it at all
            if (!IsValidBucketOrKey(bucket))
            {
                return(RiakResult <RiakBucketProperties> .ErrorTask(ResultCode.InvalidRequest, InvalidBucketErrorMessage, false));
            }

            if (extended)
            {
                var request = new RiakRestRequest(ToBucketUri(bucket), RiakConstants.Rest.HttpMethod.Get)
                              .AddQueryParam(RiakConstants.Rest.QueryParameters.Bucket.GetPropertiesKey,
                                             RiakConstants.Rest.QueryParameters.Bucket.GetPropertiesValue);

                return(UseConnection(conn => conn.RestRequest(request))
                       .ContinueWith((Task <RiakResult <RiakRestResponse> > finishedTask) => {
                    var result = finishedTask.Result;
                    if (result.IsSuccess)
                    {
                        if (result.Value.StatusCode == HttpStatusCode.OK)
                        {
                            var response = new RiakBucketProperties(result.Value);
                            return RiakResult <RiakBucketProperties> .Success(response);
                        }
                        return RiakResult <RiakBucketProperties> .Error(ResultCode.InvalidResponse,
                                                                        "Unexpected Status Code: {0} ({1})".Fmt(result.Value.StatusCode, (int)result.Value.StatusCode), false);
                    }
                    return RiakResult <RiakBucketProperties> .Error(result.ResultCode, result.ErrorMessage, result.NodeOffline);
                }));
            }
            else
            {
                var bpReq = new RpbGetBucketReq {
                    bucket = bucket.ToRiakString()
                };
                return(UseConnection(conn => conn.PbcWriteRead <RpbGetBucketReq, RpbGetBucketResp>(bpReq))
                       .ContinueWith((Task <RiakResult <RpbGetBucketResp> > finishedTask) => {
                    var result = finishedTask.Result;
                    if (result.IsSuccess)
                    {
                        var props = new RiakBucketProperties(result.Value.props);
                        return RiakResult <RiakBucketProperties> .Success(props);
                    }
                    return RiakResult <RiakBucketProperties> .Error(result.ResultCode, result.ErrorMessage, result.NodeOffline);
                }));
            }
        }
Esempio n. 2
0
        public async Task <RiakBucketProperties> GetBucketProperties(string bucket)
        {
            // bucket names cannot have slashes in the names, the REST interface doesn't like it at all
            if (!IsValidBucketOrKey(bucket))
            {
                throw new RiakException((uint)ResultCode.InvalidRequest, InvalidBucketErrorMessage, false);
            }

            var bpReq = new RpbGetBucketReq {
                bucket = bucket.ToRiakString()
            };
            var result = await _connection.PbcWriteRead <RpbGetBucketReq, RpbGetBucketResp>(_endPoint, bpReq).ConfigureAwait(false);

            var bucketProperties = new RiakBucketProperties(result.props);

            return(bucketProperties);
        }
Esempio n. 3
0
        /// <summary>
        /// Returns all properties for a <paramref name="bucket"/>.
        /// </summary>
        /// <returns>
        /// The bucket properties.
        /// </returns>
        /// <param name='bucket'>
        /// The Riak bucket.
        /// </param>
        /// <param name='extended'>
        /// Extended parameters are retrieved by HTTP requests.
        /// </param>
        public RiakResult <RiakBucketProperties> GetBucketProperties(string bucket, bool extended = false)
        {
            if (extended)
            {
                var request = new RiakRestRequest(ToBucketUri(bucket), RiakConstants.Rest.HttpMethod.Get)
                              .AddQueryParam(RiakConstants.Rest.QueryParameters.Bucket.GetPropertiesKey,
                                             RiakConstants.Rest.QueryParameters.Bucket.GetPropertiesValue);

                var result = UseConnection(conn => conn.RestRequest(request));

                if (result.IsSuccess)
                {
                    if (result.Value.StatusCode == HttpStatusCode.OK)
                    {
                        var response = new RiakBucketProperties(result.Value);
                        return(RiakResult <RiakBucketProperties> .Success(response));
                    }
                    return(RiakResult <RiakBucketProperties> .Error(ResultCode.InvalidResponse,
                                                                    "Unexpected Status Code: {0} ({1})".Fmt(result.Value.StatusCode, (int)result.Value.StatusCode)));
                }
                return(RiakResult <RiakBucketProperties> .Error(result.ResultCode, result.ErrorMessage));
            }
            else
            {
                var bpReq = new RpbGetBucketReq {
                    Bucket = bucket.ToRiakString()
                };
                var result = UseConnection(conn => conn.PbcWriteRead <RpbGetBucketReq, RpbGetBucketResp>(bpReq));

                if (result.IsSuccess)
                {
                    var props = new RiakBucketProperties(result.Value.Props);
                    return(RiakResult <RiakBucketProperties> .Success(props));
                }
                return(RiakResult <RiakBucketProperties> .Error(result.ResultCode, result.ErrorMessage));
            }
        }