Revision: 29556
http://sourceforge.net/p/bibdesk/svn/29556
Author: hofman
Date: 2025-09-08 15:32:17 +0000 (Mon, 08 Sep 2025)
Log Message:
-----------
support encoded suggested filename from content-disposition header
Modified Paths:
--------------
trunk/bibdesk/BDSKDownloadManager.m
trunk/bibdesk/BDSKDownloader.m
Modified: trunk/bibdesk/BDSKDownloadManager.m
===================================================================
--- trunk/bibdesk/BDSKDownloadManager.m 2025-09-08 15:01:11 UTC (rev 29555)
+++ trunk/bibdesk/BDSKDownloadManager.m 2025-09-08 15:32:17 UTC (rev 29556)
@@ -363,7 +363,11 @@
NSString *filename = [[webDownload response] suggestedFilename];
NSString *disposition = [[download request]
valueForHTTPHeaderField:@"Content-Disposition"];
- if ([disposition hasPrefix:@"attachment; filename="]) {
+ if ([disposition hasPrefix:@"attachment; filename*=UTF-8''"]) {
+ disposition = [disposition substringFromIndex:29];
+ if ([disposition length])
+ filename = [disposition stringByRemovingPercentEncoding];
+ } else if ([disposition hasPrefix:@"attachment; filename="]) {
disposition = [disposition substringFromIndex:21];
if ([disposition hasPrefix:@"\""] && [disposition hasSuffix:@"\""])
disposition = [disposition substringWithRange:NSMakeRange(1,
[disposition length] - 2)];
Modified: trunk/bibdesk/BDSKDownloader.m
===================================================================
--- trunk/bibdesk/BDSKDownloader.m 2025-09-08 15:01:11 UTC (rev 29555)
+++ trunk/bibdesk/BDSKDownloader.m 2025-09-08 15:32:17 UTC (rev 29556)
@@ -155,18 +155,22 @@
- (void)URLSession:(NSURLSession *)aSession
downloadTask:(NSURLSessionDownloadTask *)task didFinishDownloadingToURL:(NSURL
*)location {
BDSKDownload *download = [self downloadForTask:task];
- NSString *suggestedFileName = [[task response] suggestedFilename] ?:
[location lastPathComponent];
+ NSString *filename = [[task response] suggestedFilename] ?: [location
lastPathComponent];
NSString *disposition = [[task originalRequest]
valueForHTTPHeaderField:@"Content-Disposition"];
- if ([disposition hasPrefix:@"attachment; filename="]) {
+ if ([disposition hasPrefix:@"attachment; filename*=UTF-8''"]) {
+ disposition = [disposition substringFromIndex:29];
+ if ([disposition length])
+ filename = [disposition stringByRemovingPercentEncoding];
+ } else if ([disposition hasPrefix:@"attachment; filename="]) {
disposition = [disposition substringFromIndex:21];
if ([disposition hasPrefix:@"\""] && [disposition hasSuffix:@"\""])
disposition = [disposition substringWithRange:NSMakeRange(1,
[disposition length] - 2)];
if ([disposition length])
- suggestedFileName = disposition;
+ filename = disposition;
}
- [download _decideDestinationWithSuggestedFilename:suggestedFileName
completionHandler:^(NSURL *destinationURL){
+ [download _decideDestinationWithSuggestedFilename:filename
completionHandler:^(NSURL *destinationURL){
if (destinationURL == nil) {
NSError *error = [NSError errorWithDomain:NSURLErrorDomain
code:NSURLErrorCancelled userInfo:nil];
[download _didCompleteWithError:error];
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