blob: 072b572d32a04ca422ea30a5d13dc50a6bd6de52 [file] [log] [blame]
#import "CRSessionDelegate.h"
#import "CRSessionController.h"
@interface CRSessionDelegate ()
@property (nonatomic, weak) CRSessionController *sessionController;
@end
@implementation CRSessionDelegate
- (instancetype)initWithSessionController:(CRSessionController *)sessionController
{
self = [super init];
if (self) {
_sessionController = sessionController;
}
return self;
}
+ (instancetype)sessionDelegateWithSessionController:(CRSessionController *)sessionController
{
CRSessionDelegate *delegate = [[self alloc] initWithSessionController:sessionController];
return delegate;
}
#pragma mark - NSURLSessionTaskDelegate
- (void)URLSession:(NSURLSession *)session
task:(NSURLSessionTask *)task
willPerformHTTPRedirection:(NSHTTPURLResponse *)response
newRequest:(NSURLRequest *)request
completionHandler:(void (^)(NSURLRequest *))completionHandler
{
id delegate = [self.sessionController NSURLSessionTaskDelegateForTask:task];
if ([delegate respondsToSelector:@selector(URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:)]) {
[delegate URLSession:session
task:task
willPerformHTTPRedirection:response
newRequest:request
completionHandler:completionHandler];
} else {
if (completionHandler) completionHandler(request);
}
}
- (void)URLSession:(NSURLSession *)session
task:(NSURLSessionTask *)task
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition,
NSURLCredential *))completionHandler
{
id delegate = [self.sessionController NSURLSessionTaskDelegateForTask:task];
if ([delegate respondsToSelector:@selector(URLSession:task:didReceiveChallenge:completionHandler:)]) {
[delegate URLSession:session
task:task
didReceiveChallenge:challenge
completionHandler:completionHandler];
} else {
if (completionHandler) {
completionHandler(NSURLSessionAuthChallengePerformDefaultHandling, nil);
}
}
}
@end