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