Add PromiseKit dependency
- Added PromiseKit dependency
This commit is contained in:
51
Carthage/Checkouts/PromiseKit/Extensions/Social/Sources/SLRequest+AnyPromise.m
vendored
Normal file
51
Carthage/Checkouts/PromiseKit/Extensions/Social/Sources/SLRequest+AnyPromise.m
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
//
|
||||
// Created by merowing on 09/05/2014.
|
||||
//
|
||||
//
|
||||
//
|
||||
|
||||
#import <PromiseKit/PromiseKit.h>
|
||||
#import "SLRequest+AnyPromise.h"
|
||||
|
||||
#if COCOAPODS
|
||||
#import "NSURLSession+AnyPromise.h"
|
||||
#else
|
||||
#import <PMKFoundation/NSURLSession+AnyPromise.h>
|
||||
#endif
|
||||
|
||||
@implementation SLRequest (PromiseKit)
|
||||
|
||||
- (AnyPromise *)promise {
|
||||
return [AnyPromise promiseWithResolverBlock:^(PMKResolver resolve) {
|
||||
[self performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
|
||||
|
||||
assert(![NSThread isMainThread]);
|
||||
|
||||
if (error)
|
||||
return resolve(error);
|
||||
|
||||
NSInteger const statusCode = urlResponse.statusCode;
|
||||
if (statusCode < 200 || statusCode >= 300) {
|
||||
id userInfo = [NSMutableDictionary new];
|
||||
userInfo[PMKURLErrorFailingURLResponseKey] = urlResponse;
|
||||
userInfo[NSLocalizedDescriptionKey] = [NSHTTPURLResponse localizedStringForStatusCode:statusCode];
|
||||
|
||||
if (responseData) {
|
||||
id str = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
|
||||
userInfo[PMKURLErrorFailingStringKey] = str;
|
||||
}
|
||||
|
||||
resolve([NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorBadServerResponse userInfo:userInfo]);
|
||||
}
|
||||
else if (PMKHTTPURLResponseIsJSON(urlResponse)) {
|
||||
id err = nil;
|
||||
id json = [NSJSONSerialization JSONObjectWithData:responseData options:PMKJSONDeserializationOptions error:&err];
|
||||
resolve(err ?: PMKManifold(json, urlResponse, responseData));
|
||||
} else {
|
||||
resolve(PMKManifold(responseData, urlResponse, responseData));
|
||||
}
|
||||
}];
|
||||
}];
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user