public virtual HttpRequest Create(ReplicateDatabaseRequest request) { Ensure.That(request, "request").IsNotNull(); return(new HttpRequest(HttpMethod.Put, GenerateRelativeUrl(request)) .SetRequestTypeHeader(request.GetType()) .SetJsonContent(GenerateRequestBody(request))); }
public virtual async Task <ReplicationResponse> ReplicateAsync(ReplicateDatabaseRequest request) { var httpRequest = CreateHttpRequest(request); using (var res = await SendAsync(httpRequest).ForAwait()) { return(ProcessReplicationResponse(res)); } }
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()); } }
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); }
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); }
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); }
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)); }
protected virtual HttpRequest CreateHttpRequest(ReplicateDatabaseRequest request) { return(ReplicateDatabaseHttpRequestFactory.Create(request)); }
protected virtual string GenerateRelativeUrl(ReplicateDatabaseRequest request) { return("/_replicator/" + new UrlSegment(request.Id)); }