Skip to content

Instantly share code, notes, and snippets.

@kittinunf
Created September 25, 2015 09:32
Show Gist options
  • Save kittinunf/5892593f3a94041d4dc1 to your computer and use it in GitHub Desktop.
Save kittinunf/5892593f3a94041d4dc1 to your computer and use it in GitHub Desktop.
RACSupport
- (RACSignal *)rac_requestWithMethod:(NSString *)method path:(NSString *)path parameters:(id)parameters {
return [[RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
NSError *error;
NSURLRequest *request = [self.requestSerializer requestWithMethod:method URLString:[[NSURL URLWithString:path relativeToURL:self.baseURL] absoluteString] parameters:parameters error:&error];
if (error) {
[subscriber sendError:error];
return nil;
}
NSURLSessionDataTask *task = [self dataTaskWithRequest:request
completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {
if (error) {
NSMutableDictionary *userInfo = [error.userInfo mutableCopy];
if (responseObject) {
userInfo[TWAFResponseObjectErrorKey] = responseObject;
}
NSError *errorWithRes = [NSError errorWithDomain:error.domain code:error.code userInfo:[userInfo copy]];
[subscriber sendError:errorWithRes];
} else {
[subscriber sendNext:RACTuplePack(response, responseObject)];
[subscriber sendCompleted];
}
}];
[task resume];
return [RACDisposable disposableWithBlock:^{
[task cancel];
}];
}] replayLazily];
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment