Revision: 23991
          http://sourceforge.net/p/bibdesk/svn/23991
Author:   hofman
Date:     2019-07-10 14:56:26 +0000 (Wed, 10 Jul 2019)
Log Message:
-----------
pass all downloader delegate messages through superclass

Modified Paths:
--------------
    trunk/bibdesk/BDSKDownloader.h
    trunk/bibdesk/BDSKDownloader.m
    trunk/bibdesk/BDSKDownloaderDeprecated.m
    trunk/bibdesk/BDSKDownloaderSession.m

Modified: trunk/bibdesk/BDSKDownloader.h
===================================================================
--- trunk/bibdesk/BDSKDownloader.h      2019-07-10 12:25:52 UTC (rev 23990)
+++ trunk/bibdesk/BDSKDownloader.h      2019-07-10 14:56:26 UTC (rev 23991)
@@ -75,12 +75,17 @@
 
 - (void)cleanupDownload:(BDSKDownload *)download;
 
-- (void)download:(BDSKDownload *)download 
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
completionHandler:(void (^)(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential))completionHandler;
-- (void)download:(BDSKDownload *)download 
didReceiveExpectedContentLength:(int64_t)expectedContentLength;
-- (void)download:(BDSKDownload *)download 
decideDestinationWithSuggestedFilename:(NSString *)suggestedFileName 
completionHandler:(void (^)(NSURL *destinationURL, BOOL 
allowOverwrite))completionHandler;
-- (void)download:(BDSKDownload *)download didCreateDestinationAtURL:(NSURL 
*)destinationURL;
-- (void)download:(BDSKDownload *)download didReceiveData:(NSData *)data;
+- (void)_download:(BDSKDownload *)download 
decideDestinationWithSuggestedFilename:(NSString *)suggestedFileName 
completionHandler:(void (^)(NSURL *destinationURL, BOOL 
allowOverwrite))completionHandler;
+- (void)_download:(BDSKDownload *)download didCreateDestination:(NSURL 
*)destinationURL;
 
+- (void)_download:(BDSKDownload *)download 
didReceiveExpectedContentLength:(int64_t)expectedContentLength;
+- (void)_download:(BDSKDownload *)download didReceiveData:(NSData *)data 
ofLength:(uint64_t)length;
+
+- (void)_download:(BDSKDownload *)download 
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
completionHandler:(void (^)(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential * credential))completionHandler;
+
+- (void)_download:(BDSKDownload *)download didFinishWithData:(NSData *)data;
+- (void)_download:(BDSKDownload *)download didFailWithError:(NSError *)error;
+
 @end
 
 #pragma mark -

Modified: trunk/bibdesk/BDSKDownloader.m
===================================================================
--- trunk/bibdesk/BDSKDownloader.m      2019-07-10 12:25:52 UTC (rev 23990)
+++ trunk/bibdesk/BDSKDownloader.m      2019-07-10 14:56:26 UTC (rev 23991)
@@ -107,53 +107,64 @@
     [downloads removeObjectForKey:task];
 }
 
-- (void)download:(BDSKDownload *)download 
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
completionHandler:(void (^)(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential))completionHandler {
+- (void)_download:(BDSKDownload *)download 
decideDestinationWithSuggestedFilename:(NSString *)suggestedFileName 
completionHandler:(void (^)(NSURL *destinationURL, BOOL 
allowOverwrite))completionHandler {
     id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if ([delegate 
respondsToSelector:@selector(downloader:download:didReceiveChallenge:completionHandler:)])
 {
-        [delegate downloader:self download:download 
didReceiveChallenge:challenge completionHandler:completionHandler];
+    if ([delegate 
respondsToSelector:@selector(downloader:download:decideDestinationWithSuggestedFilename:completionHandler:)])
 {
+        [delegate downloader:self download:download 
decideDestinationWithSuggestedFilename:suggestedFileName 
completionHandler:completionHandler];
     } else {
-        NSWindow *window = nil;
-        if ([delegate 
respondsToSelector:@selector(downloader:downloadWindowForAuthenticationSheet:)])
 {
-            window = [delegate downloader:self 
downloadWindowForAuthenticationSheet:download];
-        }
-        [[BDSKAuthenticationHandler sharedHandler] 
startAuthentication:challenge window:window 
completionHandler:completionHandler];
+        NSURL *destinationURL = [[NSFileManager defaultManager] 
temporaryFileURLWithBasename:suggestedFileName];
+        completionHandler(destinationURL, YES);
     }
 }
 
-- (void)download:(BDSKDownload *)download 
didReceiveExpectedContentLength:(int64_t)expectedContentLength {
+- (void)_download:(BDSKDownload *)download didCreateDestination:(NSURL 
*)destinationURL {
     id<BDSKDownloaderDelegate> delegate = [download delegate];
+    if ([delegate 
respondsToSelector:@selector(downloader:download:didCreateDestination:)]) {
+        [delegate downloader:self download:download 
didCreateDestination:destinationURL];
+    }
+}
+
+- (void)_download:(BDSKDownload *)download 
didReceiveExpectedContentLength:(int64_t)expectedContentLength {
+    id<BDSKDownloaderDelegate> delegate = [download delegate];
     if ([delegate 
respondsToSelector:@selector(downloader:download:didReceiveExpectedContentLength:)])
 {
         [delegate downloader:self download:download 
didReceiveExpectedContentLength:expectedContentLength];
     }
+}
 
+- (void)_download:(BDSKDownload *)download didReceiveData:(NSData *)data 
ofLength:(uint64_t)length {
+    id<BDSKDownloaderDelegate> delegate = [download delegate];
+    if (data) {
+        if ([download data] == nil)
+            [download setData:[NSMutableData dataWithData:data]];
+        else
+            [[download data] appendData:data];
+    }
+    if ([delegate 
respondsToSelector:@selector(downloader:download:didReceiveDataOfLength:)]) {
+        [delegate downloader:self download:download 
didReceiveDataOfLength:length];
+    }
 }
-- (void)download:(BDSKDownload *)download 
decideDestinationWithSuggestedFilename:(NSString *)suggestedFileName 
completionHandler:(void (^)(NSURL *destinationURL, BOOL 
allowOverwrite))completionHandler {
+
+- (void)_download:(BDSKDownload *)download 
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
completionHandler:(void (^)(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential))completionHandler {
     id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if ([delegate 
respondsToSelector:@selector(downloader:download:decideDestinationWithSuggestedFilename:completionHandler:)])
 {
-        [delegate downloader:self download:download 
decideDestinationWithSuggestedFilename:suggestedFileName 
completionHandler:completionHandler];
+    if ([delegate 
respondsToSelector:@selector(downloader:download:didReceiveChallenge:completionHandler:)])
 {
+        [delegate downloader:self download:download 
didReceiveChallenge:challenge completionHandler:completionHandler];
     } else {
-        NSURL *destinationURL = [[NSFileManager defaultManager] 
temporaryFileURLWithBasename:suggestedFileName];
-        completionHandler(destinationURL, YES);
+        NSWindow *window = nil;
+        if ([delegate 
respondsToSelector:@selector(downloader:downloadWindowForAuthenticationSheet:)])
 {
+            window = [delegate downloader:self 
downloadWindowForAuthenticationSheet:download];
+        }
+        [[BDSKAuthenticationHandler sharedHandler] 
startAuthentication:challenge window:window 
completionHandler:completionHandler];
     }
 }
 
-- (void)download:(BDSKDownload *)download didCreateDestinationAtURL:(NSURL 
*)destinationURL {
+- (void)_download:(BDSKDownload *)download didFinishWithData:(NSData *)data {
     id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if ([delegate 
respondsToSelector:@selector(downloader:download:didCreateDestination:)]) {
-        [delegate downloader:self download:download 
didCreateDestination:destinationURL];
-    }
+    [delegate downloader:self download:download didFinishWithData:data];
 }
 
-- (void)download:(BDSKDownload *)download didReceiveData:(NSData *)data {
+- (void)_download:(BDSKDownload *)download didFailWithError:(NSError *)error {
     id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if ([download data] == nil) {
-        [download setData:[NSMutableData dataWithData:data]];
-    } else {
-        [[download data] appendData:data];
-    }
-    if ([delegate 
respondsToSelector:@selector(downloader:download:didReceiveDataOfLength:)]) {
-        [delegate downloader:self download:download 
didReceiveDataOfLength:[data length]];
-    }
+    [delegate downloader:self download:download didFailWithError:error];
 }
 
 @end

Modified: trunk/bibdesk/BDSKDownloaderDeprecated.m
===================================================================
--- trunk/bibdesk/BDSKDownloaderDeprecated.m    2019-07-10 12:25:52 UTC (rev 
23990)
+++ trunk/bibdesk/BDSKDownloaderDeprecated.m    2019-07-10 14:56:26 UTC (rev 
23991)
@@ -77,7 +77,7 @@
 - (void)download:(NSURLDownload *)task 
didReceiveAuthenticationChallenge:(nonnull NSURLAuthenticationChallenge 
*)challenge {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
     
-    [self download:download didReceiveChallenge:challenge 
completionHandler:^(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential){
+    [self _download:download didReceiveChallenge:challenge 
completionHandler:^(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential){
         id <NSURLAuthenticationChallengeSender> sender = [challenge sender];
         switch (disposition) {
             case BDSKDownloaderAuthChallengeUseCredential:
@@ -98,7 +98,7 @@
 
 - (void)download:(NSURLDownload *)task 
decideDestinationWithSuggestedFilename:(NSString *)suggestedFileName {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    [self download:download 
decideDestinationWithSuggestedFilename:suggestedFileName 
completionHandler:^(NSURL *destinationURL, BOOL allowOverwrite){
+    [self _download:download 
decideDestinationWithSuggestedFilename:suggestedFileName 
completionHandler:^(NSURL *destinationURL, BOOL allowOverwrite){
         [task setDestination:[destinationURL path] 
allowOverwrite:allowOverwrite];
     }];
 }
@@ -105,20 +105,19 @@
 
 - (void)download:(NSURLDownload *)task didCreateDestination:(NSString *)path {
     BDSKDownloadDeprecated *download = (BDSKDownloadDeprecated *)[[[self 
downloadForTask:task] retain] autorelease];
-    [self download:download didCreateDestinationAtURL:[NSURL 
fileURLWithPath:path isDirectory:NO]];
+    [self _download:download didCreateDestination:[NSURL fileURLWithPath:path 
isDirectory:NO]];
 }
 
 - (void)download:(NSURLDownload *)task didReceiveResponse:(NSURLResponse 
*)response {
     BDSKDownloadDeprecated *download = (BDSKDownloadDeprecated *)[[[self 
downloadForTask:task] retain] autorelease];
     [download setResponse:response];
-    [self download:download didReceiveExpectedContentLength:[response 
expectedContentLength]];
+    [self _download:download didReceiveExpectedContentLength:[response 
expectedContentLength]];
 }
 
 - (void)download:(NSURLDownload *)task 
didReceiveDataOfLength:(NSUInteger)length {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if (length >= 0 && [delegate 
respondsToSelector:@selector(downloader:download:didReceiveDataOfLength:)]) {
-        [delegate downloader:self download:download 
didReceiveDataOfLength:(uint64_t)length];
+    if (length >= 0) {
+        [self _download:download didReceiveData:nil ofLength:(uint64_t)length];
     }
 }
 
@@ -125,10 +124,7 @@
 - (void)downloadDidFinish:(NSURLDownload *)task
 {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if (delegate) {
-        [delegate downloader:self download:download didFinishWithData:nil];
-    }
+    [self _download:download didFinishWithData:nil];
     [self cleanupDownload:download];
 }
 
@@ -135,10 +131,7 @@
 - (void)download:(NSURLDownload *)task didFailWithError:(NSError *)error
 {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if (delegate) {
-        [delegate downloader:self download:download didFailWithError:error];
-    }
+    [self _download:download didFailWithError:error];
     [self cleanupDownload:download];
 }
 
@@ -147,7 +140,7 @@
 - (void)connection:(NSURLConnection *)task 
didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
     
-    [self download:download didReceiveChallenge:challenge 
completionHandler:^(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential){
+    [self _download:download didReceiveChallenge:challenge 
completionHandler:^(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential){
         id <NSURLAuthenticationChallengeSender> sender = [challenge sender];
         switch (disposition) {
             case BDSKDownloaderAuthChallengeUseCredential:
@@ -168,30 +161,24 @@
 
 - (void)connection:(NSURLConnection *)task didReceiveResponse:(NSURLResponse 
*)response {
     BDSKDownloadDeprecated *download = (BDSKDownloadDeprecated *)[[[self 
downloadForTask:task] retain] autorelease];
-    [self download:download didReceiveExpectedContentLength:[response 
expectedContentLength]];
+    [self _download:download didReceiveExpectedContentLength:[response 
expectedContentLength]];
     [download setResponse:response];
 }
 
 - (void)connection:(NSURLConnection *)task didReceiveData:(NSData *)data {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    [self download:download didReceiveData:data];
+    [self _download:download didReceiveData:data ofLength:[data length]];
 }
 
 - (void)connectionDidFinishLoading:(NSURLConnection *)task {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if (delegate) {
-        [delegate downloader:self download:download 
didFinishWithData:[download data]];
-    }
+    [self _download:download didFinishWithData:[download data]];
     [self cleanupDownload:download];
 }
 
 - (void)connection:(NSURLConnection *)task didFailWithError:(NSError *)error {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
-    if (delegate) {
-        [delegate downloader:self download:download didFailWithError:error];
-    }
+    [self _download:download didFailWithError:error];
     [self cleanupDownload:download];
 }
 

Modified: trunk/bibdesk/BDSKDownloaderSession.m
===================================================================
--- trunk/bibdesk/BDSKDownloaderSession.m       2019-07-10 12:25:52 UTC (rev 
23990)
+++ trunk/bibdesk/BDSKDownloaderSession.m       2019-07-10 14:56:26 UTC (rev 
23991)
@@ -124,10 +124,9 @@
 
 - (void)URLSession:(NSURLSession *)aSession 
downloadTask:(NSURLSessionDownloadTask *)task didFinishDownloadingToURL:(NSURL 
*)location {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
     NSString *suggestedFileName = [[task response] suggestedFilename] ?: 
[location lastPathComponent];
     
-    [self download:download 
decideDestinationWithSuggestedFilename:suggestedFileName 
completionHandler:^(NSURL *destinationURL, BOOL allowOverwrite){
+    [self _download:download 
decideDestinationWithSuggestedFilename:suggestedFileName 
completionHandler:^(NSURL *destinationURL, BOOL allowOverwrite){
         NSError *error = nil;
         NSFileManager *fm = [NSFileManager defaultManager];
         if ([destinationURL checkResourceIsReachableAndReturnError:NULL]) {
@@ -140,10 +139,10 @@
             [fm createDirectoryAtPath:[[destinationURL 
URLByDeletingLastPathComponent] path] withIntermediateDirectories:YES 
attributes:nil error:NULL];
         }
         if ([fm moveItemAtURL:location toURL:destinationURL error:&error]) {
-            [self download:download didCreateDestinationAtURL:destinationURL];
-            [delegate downloader:self download:download didFinishWithData:nil];
+            [self _download:download didCreateDestination:destinationURL];
+            [self _download:download didFinishWithData:nil];
         } else {
-            [delegate downloader:self download:download 
didFailWithError:error];
+            [self _download:download didFailWithError:error];
             [self cleanupDownload:download];
         }
     }];
@@ -151,14 +150,13 @@
 
 - (void)URLSession:(NSURLSession *)aSession 
downloadTask:(NSURLSessionDownloadTask *)task 
didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten 
totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite {
     BDSKDownloadSession *download = (BDSKDownloadSession *)[[[self 
downloadForTask:task] retain] autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
     if ([download receivedExpectedBytes] == NO) {
         [download setReceivedExpectedBytes:YES];
-        [self download:download 
didReceiveExpectedContentLength:totalBytesExpectedToWrite];
+        [self _download:download 
didReceiveExpectedContentLength:totalBytesExpectedToWrite];
     }
     
-    if (bytesWritten >= 0 && [delegate 
respondsToSelector:@selector(downloader:download:didReceiveDataOfLength:)]) {
-        [delegate downloader:self download:download 
didReceiveDataOfLength:(uint64_t)bytesWritten];
+    if (bytesWritten >= 0) {
+        [self _download:download didReceiveData:nil 
ofLength:(uint64_t)bytesWritten];
     }
 }
 
@@ -166,7 +164,7 @@
 
 - (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask 
*)task didReceiveResponse:(NSURLResponse *)response completionHandler:(void 
(^)(NSURLSessionResponseDisposition disposition))completionHandler {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    [self download:download didReceiveExpectedContentLength:[response 
expectedContentLength]];
+    [self _download:download didReceiveExpectedContentLength:[response 
expectedContentLength]];
     // the delegeate may have cancelled the task, in that case don't call the 
callback
     if ([self downloadForTask:task])
         completionHandler(NSURLSessionResponseAllow);
@@ -174,7 +172,7 @@
 
 - (void)URLSession:(NSURLSession *)aSession dataTask:(NSURLSessionDataTask 
*)task didReceiveData:(NSData *)data {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    [self download:download didReceiveData:data];
+    [self _download:download didReceiveData:data ofLength:[data length]];
 }
 
 #pragma mark NSURLSessionTaskDelegate
@@ -181,16 +179,15 @@
 
 - (void)URLSession:(NSURLSession *)aSession task:(NSURLSessionTask *)task 
didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge 
completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition disposition, 
NSURLCredential * _Nullable credential))completionHandler {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    [self download:download didReceiveChallenge:challenge 
completionHandler:(void (^)(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential))completionHandler];
+    [self _download:download didReceiveChallenge:challenge 
completionHandler:(void (^)(BDSKDownloaderAuthChallengeDisposition disposition, 
NSURLCredential *credential))completionHandler];
 }
 
 - (void)URLSession:(NSURLSession *)aSession task:(NSURLSessionTask *)task 
didCompleteWithError:(NSError *)error {
     BDSKDownload *download = [[[self downloadForTask:task] retain] 
autorelease];
-    id<BDSKDownloaderDelegate> delegate = [download delegate];
     if (error) {
-        [delegate downloader:self download:download didFailWithError:error];
+        [self _download:download didFailWithError:error];
     } else if ([task isKindOfClass:[NSURLSessionDataTask class]]) {
-        [delegate downloader:self download:download 
didFinishWithData:[download data]];
+        [self _download:download didFinishWithData:[download data]];
     }
     [self cleanupDownload:download];
 }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to