Exemple #1
0
        public virtual HttpRequest Create(ReplicateDatabaseRequest request)
        {
            Ensure.That(request, "request").IsNotNull();

            return(new HttpRequest(HttpMethod.Put, GenerateRelativeUrl(request))
                   .SetRequestTypeHeader(request.GetType())
                   .SetJsonContent(GenerateRequestBody(request)));
        }
Exemple #2
0
        public virtual async Task <ReplicationResponse> ReplicateAsync(ReplicateDatabaseRequest request)
        {
            var httpRequest = CreateHttpRequest(request);

            using (var res = await SendAsync(httpRequest).ForAwait())
            {
                return(ProcessReplicationResponse(res));
            }
        }
Exemple #3
0
        public virtual async Task <ReplicationResponse> ReplicateAsync(ReplicateDatabaseRequest request)
        {
            var httpRequest = ReplicateDatabaseHttpRequestFactory.Create(request);

            using (var res = await SendAsync(httpRequest).ForAwait())
            {
                return(await ReplicationResponseFactory.CreateAsync(res).ForAwait());
            }
        }
Exemple #4
0
        public void Can_do_continuous_replication()
        {
            var id = Guid.NewGuid().ToString("n");

            DbClient.Documents.PostAsync(ClientTestData.Artists.Artist1Json);
            DbClient.Documents.PostAsync(ClientTestData.Artists.Artist2Json);

            var request = new ReplicateDatabaseRequest(id, _sourceDb, _targetDb)
            {
                Continuous = true
            };

            var response = SUT.ReplicateAsync(request).Result;

            response.Should().BeSuccessfulReplication(id);
        }
Exemple #5
0
        public void When_Replicate_using_doc_ids_and_changes_exists_The_response_indicates_success()
        {
            var id = Guid.NewGuid().ToString("n");

            DbClient.Documents.PostAsync(ClientTestData.Artists.Artist1Json);
            DbClient.Documents.PostAsync(ClientTestData.Artists.Artist2Json);

            var request = new ReplicateDatabaseRequest(id, _sourceDb, _targetDb)
            {
                DocIds = new[] { ClientTestData.Artists.Artist1Id }
            };

            var response = SUT.ReplicateAsync(request).Result;

            response.Should().BeSuccessfulReplication(id);
        }
Exemple #6
0
        public void When_Replicate_using_proxy_and_changes_exists_The_response_indicates_success()
        {
            var id = Guid.NewGuid().ToString("n");

            DbClient.Documents.PostAsync(ClientTestData.Artists.Artist1Json);
            DbClient.Documents.PostAsync(ClientTestData.Artists.Artist2Json);

            var request = new ReplicateDatabaseRequest(id, Environment.PrimaryDbName, Environment.SecondaryDbName)
            {
                Proxy = Environment.ServerUrl
            };

            var response = SUT.ReplicateAsync(request).Result;

            response.Should().BeSuccessfulReplication(id);
        }
Exemple #7
0
        protected virtual string GenerateRequestBody(ReplicateDatabaseRequest request)
        {
            Ensure.That(request, "request").IsNotNull();
            Ensure.That(request.Source, "request.Source").IsNotNullOrWhiteSpace();
            Ensure.That(request.Target, "request.Target").IsNotNullOrWhiteSpace();

            var tmp = new Dictionary <string, object>
            {
                { KeyNames.Source, request.Source },
                { KeyNames.Target, request.Target }
            };

            if (request.HasDocIds())
            {
                tmp.Add(KeyNames.DocIds, request.DocIds);
            }

            if (!string.IsNullOrWhiteSpace(request.Proxy))
            {
                tmp.Add(KeyNames.Proxy, request.Proxy);
            }

            if (request.CreateTarget.HasValue)
            {
                tmp.Add(KeyNames.CreateTarget, request.CreateTarget);
            }

            if (request.Continuous.HasValue)
            {
                tmp.Add(KeyNames.Continuous, request.Continuous.Value);
            }

            if (!string.IsNullOrWhiteSpace(request.Filter))
            {
                tmp.Add(KeyNames.Filter, request.Filter);
            }

            if (request.HasQueryParams())
            {
                tmp.Add(KeyNames.QueryParams, request.QueryParams);
            }

            return(Serializer.Serialize(tmp));
        }
Exemple #8
0
 protected virtual HttpRequest CreateHttpRequest(ReplicateDatabaseRequest request)
 {
     return(ReplicateDatabaseHttpRequestFactory.Create(request));
 }
Exemple #9
0
 protected virtual string GenerateRelativeUrl(ReplicateDatabaseRequest request)
 {
     return("/_replicator/" + new UrlSegment(request.Id));
 }