#import "MTHttpRequestOperation.h" #import "../thirdparty/AFNetworking/AFHTTPRequestOperation.h" #if defined(MtProtoKitDynamicFramework) # import # import #elif defined(MtProtoKitMacFramework) # import # import #else # import # import #endif @implementation MTHttpRequestOperation + (MTSignal *)dataForHttpUrl:(NSURL *)url { return [self dataForHttpUrl:url headers:nil]; } + (MTSignal *)dataForHttpUrl:(NSURL *)url headers:(NSDictionary *)headers { return [[MTSignal alloc] initWithGenerator:^id(MTSubscriber *subscriber) { NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; [headers enumerateKeysAndObjectsUsingBlock:^(NSString *key, NSString *value, __unused BOOL *stop) { [request setValue:value forHTTPHeaderField:key]; }]; AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; [operation setSuccessCallbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]; [operation setFailureCallbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)]; [operation setCompletionBlockWithSuccess:^(__unused NSOperation *operation, __unused id responseObject) { [subscriber putNext:[(AFHTTPRequestOperation *)operation responseData]]; [subscriber putCompletion]; } failure:^(__unused NSOperation *operation, __unused NSError *error) { [subscriber putError:error]; }]; [operation start]; __weak AFHTTPRequestOperation *weakOperation = operation; return [[MTBlockDisposable alloc] initWithBlock:^ { __strong AFHTTPRequestOperation *strongOperation = weakOperation; [strongOperation cancel]; }]; }]; } @end