protected virtual string GenerateRequestBody(PostIndexRequest request)
        {
            Ensure.That(request.Fields, "request.Fields").HasItems();

            var sb = new StringBuilder();

            sb.Append("{");

            sb.AppendFormat("{0}", GenerateIndexContent(request.Fields));

            if (!string.IsNullOrWhiteSpace(request.DesignDocument))
            {
                sb.AppendFormat(FormatStrings.JsonPropertyAppendFormat, KeyNames.DesignDocument, Serializer.ToJson(request.DesignDocument));
            }
            if (request.Type.HasValue)
            {
                sb.AppendFormat(FormatStrings.JsonPropertyAppendFormat, KeyNames.Type, Serializer.ToJson(request.Type.Value.ToString()));
            }
            if (!string.IsNullOrWhiteSpace(request.Name))
            {
                sb.AppendFormat(FormatStrings.JsonPropertyAppendFormat, KeyNames.Name, Serializer.ToJson(request.Name));
            }

            sb.Append("}");

            return(sb.ToString());
        }
示例#2
0
        public PostIndexViewModel Handle(PostIndexRequest message)
        {
            var result = new PostIndexViewModel();
            result.Active = ActivePosts.ToList();
            result.FuturePostCount = FuturePosts.Count;

            return result;
        }
        public virtual HttpRequest Create(PostIndexRequest request)
        {
            Ensure.That(request, "request").IsNotNull();

            return(new HttpRequest(HttpMethod.Post, GenerateRelativeUrl(request))
                   .SetRequestTypeHeader(request.GetType())
                   .SetJsonContent(GenerateRequestBody(request)));
        }
示例#4
0
        public PostIndexViewModel Handle(PostIndexRequest message)
        {
            var result = new PostIndexViewModel();

            result.Active          = ActivePosts.ToList();
            result.FuturePostCount = FuturePosts.Count;

            return(result);
        }
示例#5
0
        public void Can_specify_a_sort_order_for_an_index_field()
        {
            var indexRequest = new PostIndexRequest().Configure(q => q
                                                                .Fields(new SortableField("diet")));

            var response = SUT.PostAsync(indexRequest).Result;

            response.IsSuccess.Should().Be(true);
            response.Result.Should().Be("created");
        }
示例#6
0
        public void Can_create_an_index_without_specifying_a_designdoc_and_name()
        {
            var indexRequest = new PostIndexRequest().Configure(q => q
                                                                .Fields(new SortableField("diet")));

            var response = SUT.PostAsync(indexRequest).Result;

            response.IsSuccess.Should().Be(true);
            response.Result.Should().Be("created");
        }
示例#7
0
        public virtual async Task <IndexResponse> PostAsync(PostIndexRequest request)
        {
            Ensure.That(request, "request").IsNotNull();

            var httpRequest = PostIndexHttpRequestFactory.Create(request);

            using (var res = await SendAsync(httpRequest).ForAwait())
            {
                return(await IndexResponseFactory.CreateAsync(res).ForAwait());
            }
        }
示例#8
0
        public virtual async Task <IndexResponse> PostAsync(PostIndexRequest request, CancellationToken cancellationToken = default)
        {
            Ensure.Any.IsNotNull(request, nameof(request));

            var httpRequest = PostIndexHttpRequestFactory.Create(request);

            using (var res = await SendAsync(httpRequest, cancellationToken).ForAwait())
            {
                return(await IndexResponseFactory.CreateAsync(res).ForAwait());
            }
        }
示例#9
0
        public void Can_create_an_index_with_explicit_designdoc_and_name()
        {
            var indexRequest = new PostIndexRequest().Configure(q => q
                                                                .DesignDocument("MyDoc")
                                                                .Name("MyName")
                                                                .Fields(new SortableField("diet")));

            var response = SUT.PostAsync(indexRequest).Result;

            response.IsSuccess.Should().Be(true);
            response.Result.Should().Be("created");
        }
示例#10
0
        private static void CreateIndex2(IMyCouchClient client)
        {
            var indexRequest = new PostIndexRequest();

            indexRequest.Configure(q => q.DesignDocument("TestDoc")
                                   .Name("TestIndex2")
                                   .Fields(new SortableField("author.age"), new SortableField("yearsActive"))
                                   );

            var response = client.Queries.PostAsync(indexRequest).Result;

            response.IsSuccess.Should().Be(true);
        }
示例#11
0
        public void Creating_an_index_with_same_name_as_existing_should_be_reported()
        {
            var indexRequest = new PostIndexRequest().Configure(q => q
                                                                .DesignDocument("MyDoc")
                                                                .Name("MyName")
                                                                .Fields(new SortableField("diet")));

            SUT.PostAsync(indexRequest).Wait();

            var response = SUT.PostAsync(indexRequest).Result;

            response.IsSuccess.Should().Be(true);
            response.Result.Should().Be("exists");
        }
示例#12
0
        public void Can_delete_a_pre_existing_index()
        {
            const string dDocName     = "MyDoc";
            const string indexName    = "MyName";
            var          indexRequest = new PostIndexRequest().Configure(q => q
                                                                         .DesignDocument(dDocName)
                                                                         .Name(indexName)
                                                                         .Fields(new SortableField("diet")));

            SUT.PostAsync(indexRequest).Wait();

            var response = SUT.DeleteAsync(new DeleteIndexRequest(dDocName, indexName)).Result;

            response.IsSuccess.Should().Be(true);
            response.StatusCode.Should().Be(HttpStatusCode.OK);
        }
 protected virtual string GenerateRelativeUrl(PostIndexRequest request)
 {
     return("/_index");
 }