diff --git a/AFNetworking-RACExtensions.podspec b/AFNetworking-RACExtensions.podspec index 15b6305..861a6e4 100644 --- a/AFNetworking-RACExtensions.podspec +++ b/AFNetworking-RACExtensions.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "AFNetworking-RACExtensions" - s.version = "0.1.6" + s.version = "0.1.8" s.summary = "AFNetworking-RACExtensions is a delightful extension to the AFNetworking classes for iOS and Mac OS X." s.homepage = "https://github.com/CodaFi/AFNetworking-RACExtensions" s.license = { :type => 'MIT', :file => 'LICENSE' } @@ -8,8 +8,23 @@ Pod::Spec.new do |s| s.source = { :git => "https://github.com/CodaFi/AFNetworking-RACExtensions.git", :tag => "#{s.version}" } s.ios.deployment_target = '6.0' s.osx.deployment_target = '10.8' - s.source_files = 'RACAFNetworking' s.requires_arc = true - s.dependency 'AFNetworking', '~> 2.0' - s.dependency 'ReactiveCocoa', '~> 2.0' + s.default_subspecs = 'NSURLConnection', 'NSURLSession' + + s.subspec 'ExperimentalProgressCallbacks' do |ss| + ss.dependency 'ReactiveCocoa/Core', '~> 2.0' + ss.source_files = 'RACAFNetworking/RACSubscriber+AFProgressCallbacks.{h,m}' + end + + s.subspec 'NSURLConnection' do |ss| + ss.dependency 'AFNetworking/NSURLConnection', '~> 2.0' + ss.dependency 'ReactiveCocoa/Core', '~> 2.0' + ss.source_files = 'RACAFNetworking/AFURLConnectionOperation+RACSupport.{h,m}', 'RACAFNetworking/AFHTTPRequestOperationManager+RACSupport.{h,m}' + end + + s.subspec 'NSURLSession' do |ss| + ss.dependency 'AFNetworking/NSURLSession', '~> 2.0' + ss.dependency 'ReactiveCocoa/Core', '~> 2.0' + ss.source_files = 'RACAFNetworking/AFHTTPSessionManager+RACSupport.{h,m}' + end end diff --git a/RACAFNetworking.xcodeproj/project.pbxproj b/RACAFNetworking.xcodeproj/project.pbxproj index ac80b46..6837f66 100644 --- a/RACAFNetworking.xcodeproj/project.pbxproj +++ b/RACAFNetworking.xcodeproj/project.pbxproj @@ -1123,6 +1123,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/External/AFNetworking", + ); MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; @@ -1162,6 +1166,10 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; + HEADER_SEARCH_PATHS = ( + "$(inherited)", + "$(SRCROOT)/External/AFNetworking", + ); MACOSX_DEPLOYMENT_TARGET = 10.10; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; @@ -1187,6 +1195,7 @@ ); FRAMEWORK_VERSION = A; GCC_PREFIX_HEADER = "RACAFNetworking/RACAFNetworking-Prefix.pch"; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = RACAFNetworking/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; @@ -1212,6 +1221,7 @@ ); FRAMEWORK_VERSION = A; GCC_PREFIX_HEADER = "RACAFNetworking/RACAFNetworking-Prefix.pch"; + HEADER_SEARCH_PATHS = "$(inherited)"; INFOPLIST_FILE = RACAFNetworking/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; @@ -1240,7 +1250,6 @@ ); HEADER_SEARCH_PATHS = ( "$(inherited)", - "/Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", "\"$(SRCROOT)/External/Expecta/src\"", "\"$(SRCROOT)/External/Specta/src\"", ); @@ -1266,7 +1275,6 @@ GCC_PREFIX_HEADER = "RACAFNetworkingTests/RACAFNetworkingTests-Prefix.pch"; HEADER_SEARCH_PATHS = ( "$(inherited)", - "/Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", "\"$(SRCROOT)/External/Expecta/src\"", "\"$(SRCROOT)/External/Specta/src\"", ); @@ -1288,6 +1296,7 @@ "DEBUG=1", "$(inherited)", ); + HEADER_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Debug; @@ -1300,6 +1309,7 @@ EXECUTABLE_PREFIX = lib; FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; GCC_PREFIX_HEADER = "RACAFNetworking/RACAFNetworking-Prefix.pch"; + HEADER_SEARCH_PATHS = "$(inherited)"; PRODUCT_NAME = "$(TARGET_NAME)"; }; name = Release; @@ -1315,10 +1325,7 @@ "DEBUG=1", "$(inherited)", ); - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "/Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", - ); + HEADER_SEARCH_PATHS = "$(inherited)"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1335,10 +1342,7 @@ ALWAYS_SEARCH_USER_PATHS = YES; FRAMEWORK_SEARCH_PATHS = "$(PLATFORM_DIR)/Developer/Library/Frameworks"; GCC_PREFIX_HEADER = "RACAFNetworking/RACAFNetworking-Prefix.pch"; - HEADER_SEARCH_PATHS = ( - "$(inherited)", - "/Applications/Xcode6-Beta3.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include", - ); + HEADER_SEARCH_PATHS = "$(inherited)"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; OTHER_LDFLAGS = "-ObjC"; PRODUCT_NAME = "$(TARGET_NAME)"; diff --git a/RACAFNetworking/AFHTTPRequestOperationManager+RACSupport.h b/RACAFNetworking/AFHTTPRequestOperationManager+RACSupport.h index ce15d15..0e06637 100644 --- a/RACAFNetworking/AFHTTPRequestOperationManager+RACSupport.h +++ b/RACAFNetworking/AFHTTPRequestOperationManager+RACSupport.h @@ -6,7 +6,7 @@ // Copyright (c) 2013 CodaFi. All rights reserved. // -#import "AFHTTPRequestOperationManager.h" +#import #import /// User info key for accessing the AFHTTPRequestOperation on which the error occured. diff --git a/RACAFNetworking/AFHTTPSessionManager+RACSupport.h b/RACAFNetworking/AFHTTPSessionManager+RACSupport.h index 9a77a25..ed22572 100644 --- a/RACAFNetworking/AFHTTPSessionManager+RACSupport.h +++ b/RACAFNetworking/AFHTTPSessionManager+RACSupport.h @@ -6,11 +6,13 @@ // Copyright (c) 2014 CodaFi. All rights reserved. // -#import "AFHTTPSessionManager.h" +#import #import #if (defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && __IPHONE_OS_VERSION_MAX_ALLOWED >= 70000) || (defined(__MAC_OS_X_VERSION_MAX_ALLOWED) && __MAC_OS_X_VERSION_MAX_ALLOWED >= 1090) +extern NSString *const RACAFNResponseObjectErrorKey; + @interface AFHTTPSessionManager (RACSupport) /// A convenience around -GET:parameters:success:failure: that returns a cold signal of the @@ -43,4 +45,4 @@ @end -#endif \ No newline at end of file +#endif diff --git a/RACAFNetworking/AFHTTPSessionManager+RACSupport.m b/RACAFNetworking/AFHTTPSessionManager+RACSupport.m index b17997e..e50d8d3 100644 --- a/RACAFNetworking/AFHTTPSessionManager+RACSupport.m +++ b/RACAFNetworking/AFHTTPSessionManager+RACSupport.m @@ -10,6 +10,8 @@ #import "AFHTTPSessionManager+RACSupport.h" +NSString *const RACAFNResponseObjectErrorKey = @"responseObject"; + @implementation AFHTTPSessionManager (RACSupport) - (RACSignal *)rac_GET:(NSString *)path parameters:(id)parameters { @@ -33,7 +35,12 @@ - (RACSignal *)rac_POST:(NSString *)path parameters:(id)parameters constructingB NSURLSessionDataTask *task = [self dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (error) { - [subscriber sendError:error]; + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if (responseObject) { + userInfo[RACAFNResponseObjectErrorKey] = responseObject; + } + NSError *errorWithRes = [NSError errorWithDomain:error.domain code:error.code userInfo:[userInfo copy]]; + [subscriber sendError:errorWithRes]; } else { [subscriber sendNext:RACTuplePack(responseObject, response)]; [subscriber sendCompleted]; @@ -69,7 +76,12 @@ - (RACSignal *)rac_requestPath:(NSString *)path parameters:(id)parameters method NSURLSessionDataTask *task = [self dataTaskWithRequest:request completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (error) { - [subscriber sendError:error]; + NSMutableDictionary *userInfo = [error.userInfo mutableCopy]; + if (responseObject) { + userInfo[RACAFNResponseObjectErrorKey] = responseObject; + } + NSError *errorWithRes = [NSError errorWithDomain:error.domain code:error.code userInfo:[userInfo copy]]; + [subscriber sendError:errorWithRes]; } else { [subscriber sendNext:RACTuplePack(responseObject, response)]; [subscriber sendCompleted]; diff --git a/RACAFNetworking/AFURLConnectionOperation+RACSupport.h b/RACAFNetworking/AFURLConnectionOperation+RACSupport.h index 02b0340..b2bb8d6 100644 --- a/RACAFNetworking/AFURLConnectionOperation+RACSupport.h +++ b/RACAFNetworking/AFURLConnectionOperation+RACSupport.h @@ -6,7 +6,7 @@ // Copyright (c) 2013 CodaFi. All rights reserved. // -#import "AFHTTPRequestOperation.h" +#import #import @interface AFHTTPRequestOperation (RACSupport) diff --git a/README.md b/README.md index 3682a1e..c2fc99f 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,8 @@ -##AFNetworking-RACExtensions +## Announcement + +Because I can no longer maintain this framework at the standards the open source community expects of me, and those I expect of myself, I have placed a feature freeze on this fork and will stop maintenance. If support for future RAC's and AFNetworking's is needed, please fork this repository and update the podspecs as needed. + +## AFNetworking-RACExtensions [![Build Status](https://travis-ci.org/CodaFi/AFNetworking-RACExtensions.svg?branch=master)](https://travis-ci.org/CodaFi/AFNetworking-RACExtensions) @@ -10,7 +14,7 @@ powerful high-level networking abstractions built into AFNetorking by lifting them into the Reactive world. It has a modular architecture with well-designed, feature-rich APIs that are a joy to use. -##Getting Started +## Getting Started Request signals work in much the same way you would expect them to. Any request that is subscribed to is automatically enqueued and the results, be they errors @@ -27,16 +31,16 @@ manager.responseSerializer = [AFJSONResponseSerializer serializer]; }]; ``` -##Requirements +## Requirements AFNetworking 1.0 and higher requires either [iOS 5.0](http://developer.apple.com/library/ios/#releasenotes/General/WhatsNewIniPhoneOS/Articles/iPhoneOS4.html) and above, or [Mac OS 10.8](http://developer.apple.com/library/mac/#releasenotes/MacOSX/WhatsNewInOSX/Articles/MacOSX10_6.html#//apple_ref/doc/uid/TP40008898-SW7) ([64-bit with modern Cocoa runtime](https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtVersionsPlatforms.html)) and above. -##Contact +## Contact [Robert Widmann](https://github.com/CodaFi) [@CodaFi_](https://twitter.com/CodaFi_) -##License +## License AFNetworking+RACExtensions is available free of change under the Open Source license, along with the MIT license that AFNetworking uses. Use it at your own risk.