diff --git a/Source/CCouchDBServer.h b/Source/CCouchDBServer.h index 91e7dee..bc6e62a 100644 --- a/Source/CCouchDBServer.h +++ b/Source/CCouchDBServer.h @@ -43,4 +43,6 @@ - (CURLOperation *)operationToUpdateConfigurationKey:(NSString *)inConfigurationKey inSection:(NSString*)inConfigurationSection withValue:(id)inConfigurationValue withSuccessHandler:(CouchDBSuccessHandler)inSuccessHandler failureHandler:(CouchDBFailureHandler)inFailureHandler; - (CURLOperation *)operationToDeleteConfigurationKey:(NSString *)inConfigurationKey inSection:(NSString*)inConfigurationSection withSuccessHandler:(CouchDBSuccessHandler)inSuccessHandler failureHandler:(CouchDBFailureHandler)inFailureHandler; +- (CURLOperation *)operationToTriggerReplicationFromSource:(NSString *)inSource toTarget:(NSString *)inTarget withOptions:(NSDictionary *)inOptions successHandler:(CouchDBSuccessHandler)inSuccessHandler failureHandler:(CouchDBFailureHandler)inFailureHandler; + @end diff --git a/Source/CCouchDBServer.m b/Source/CCouchDBServer.m index 379f1e1..6435575 100644 --- a/Source/CCouchDBServer.m +++ b/Source/CCouchDBServer.m @@ -284,4 +284,26 @@ - (CURLOperation *)operationToDeleteConfigurationKey:(NSString *)inConfiguration return(theOperation); } +- (CURLOperation *)operationToTriggerReplicationFromSource:(NSString *)inSource toTarget:(NSString *)inTarget withOptions:(NSDictionary *)inOptions successHandler:(CouchDBSuccessHandler)inSuccessHandler failureHandler:(CouchDBFailureHandler)inFailureHandler +{ + NSURL *theURL = [self.URL URLByAppendingPathComponent:@"_replicate"]; + NSMutableDictionary *replicationSettings = [[[NSMutableDictionary alloc] initWithObjectsAndKeys:inSource, @"source", inTarget, @"target", nil] autorelease]; + if (inOptions.count > 0) + { + [replicationSettings addEntriesFromDictionary:inOptions]; + } + NSMutableURLRequest *theRequest = [self requestWithURL:theURL]; + theRequest.HTTPMethod = @"POST"; + [theRequest setValue:kContentTypeJSON forHTTPHeaderField:@"Accept"]; + + NSData *theData = [self.session.serializer serializeObject:replicationSettings error:NULL]; + [theRequest setValue:kContentTypeJSON forHTTPHeaderField:@"Content-Type"]; + [theRequest setHTTPBody:theData]; + + CCouchDBURLOperation *theOperation = [self.session URLOperationWithRequest:theRequest]; + theOperation.successHandler = inSuccessHandler; + theOperation.failureHandler = inFailureHandler; + return(theOperation); +} + @end