コード例 #1
0
        public GetRequest CreateRequest()
        {
            var actualStart = start;

            var nextPage = pagingInformation != null && pagingInformation.IsForPreviousPage(start, pageSize);

            if (nextPage)
            {
                actualStart = pagingInformation.NextPageStart;
            }

            return(new GetRequest
            {
                Url = "/docs",
                Query =
                    string.Format(
                        "startsWith={0}&matches={3}&exclude={4}&start={1}&pageSize={2}&next-page={5}&skipAfter={6}",
                        Uri.EscapeDataString(keyPrefix),
                        actualStart.ToInvariantString(),
                        pageSize.ToInvariantString(),
                        Uri.EscapeDataString(matches ?? ""),
                        Uri.EscapeDataString(exclude ?? ""),
                        nextPage ? "true" : "false",
                        skipAfter)
            });
        }
コード例 #2
0
        public override HttpRequestMessage CreateRequest(ServerNode node, out string url)
        {
            var pathBuilder = new StringBuilder("docs?");

            if (MetadataOnly)
            {
                pathBuilder.Append("&metadata-only=true");
            }

            if (StartWith != null)
            {
                var actualStart = Start;

                var nextPage = PagingInformation != null && PagingInformation.IsForPreviousPage(Start, PageSize);
                if (nextPage)
                {
                    actualStart = PagingInformation.NextPageStart;
                }

                pathBuilder.Append($"startsWith={Uri.EscapeDataString(StartWith)}&start={actualStart.ToInvariantString()}&pageSize={PageSize.ToInvariantString()}");

                if (Matches != null)
                {
                    pathBuilder.Append($"&matches={Matches}");
                }
                if (Exclude != null)
                {
                    pathBuilder.Append($"&exclude={Exclude}");
                }
                if (nextPage)
                {
                    pathBuilder.Append("&next-page=true");
                }
            }

            if (Includes != null)
            {
                foreach (var include in Includes)
                {
                    pathBuilder.Append($"&include={include}");
                }
            }

            if (string.IsNullOrEmpty(Transformer) == false)
            {
                pathBuilder.Append($"&transformer={Transformer}");
            }

            if (TransformerParameters != null)
            {
                foreach (var tp in TransformerParameters)
                {
                    pathBuilder.Append($"&tp-{tp.Key}={tp.Value}");
                }
            }

            var request = new HttpRequestMessage
            {
                Method = HttpMethod.Get,
            };

            if (Id != null)
            {
                pathBuilder.Append($"&id={Uri.EscapeDataString(Id)}");
            }
            else if (Ids != null)
            {
                PrepareRequestWithMultipleIds(pathBuilder, request, Ids, Context);
            }

            url = $"{node.Url}/databases/{node.Database}/" + pathBuilder;
            return(request);
        }
コード例 #3
0
        public StreamCommand CreateRequest(long?fromEtag, string startsWith, string matches, int start, int pageSize, string exclude, RavenPagingInformation pagingInformation = null, string skipAfter = null, string transformer = null, Dictionary <string, object> transformerParameters = null)
        {
            if (fromEtag != null && startsWith != null)
            {
                throw new InvalidOperationException("Either fromEtag or startsWith must be null, you can't specify both");
            }

            var sb = new StringBuilder("streams/docs?");

            if (fromEtag != null)
            {
                sb.Append("etag=").Append(fromEtag).Append("&");
            }
            else
            {
                if (startsWith != null)
                {
                    sb.Append("startsWith=").Append(Uri.EscapeDataString(startsWith)).Append("&");
                }
                if (matches != null)
                {
                    sb.Append("matches=").Append(Uri.EscapeDataString(matches)).Append("&");
                }
                if (exclude != null)
                {
                    sb.Append("exclude=").Append(Uri.EscapeDataString(exclude)).Append("&");
                }
                if (skipAfter != null)
                {
                    sb.Append("skipAfter=").Append(Uri.EscapeDataString(skipAfter)).Append("&");
                }
            }

            if (string.IsNullOrEmpty(transformer) == false)
            {
                sb.Append("transformer=").Append(Uri.EscapeDataString(transformer)).Append("&");
            }

            if (transformerParameters != null && transformerParameters.Count > 0)
            {
                foreach (var pair in transformerParameters)
                {
                    var parameterName  = pair.Key;
                    var parameterValue = pair.Value;

                    sb.AppendFormat("tp-{0}={1}", parameterName, parameterValue).Append("&");
                }
            }

            var actualStart = start;

            var nextPage = pagingInformation != null && pagingInformation.IsForPreviousPage(start, pageSize);

            if (nextPage)
            {
                actualStart = pagingInformation.NextPageStart;
            }

            if (actualStart != 0)
            {
                sb.Append("start=").Append(actualStart).Append("&");
            }

            if (pageSize != int.MaxValue)
            {
                sb.Append("pageSize=").Append(pageSize).Append("&");
            }

            if (nextPage)
            {
                sb.Append("next-page=true").Append("&");
            }

            return(new StreamCommand()
            {
                Url = sb.ToString(),
            });
        }