aboutsummaryrefslogtreecommitdiffhomepage
path: root/Firebase/Storage/FIRStorageGetDownloadURLTask.m
diff options
context:
space:
mode:
authorGravatar Sebastian Schmidt <mrschmidt@google.com>2018-04-13 12:17:36 -0700
committerGravatar Sebastian Schmidt <mrschmidt@google.com>2018-04-13 12:20:32 -0700
commite86665b1ba2bbaf7ddd70873118badc812e0bc20 (patch)
tree1e23f791a5a49e0fabcae2c5dc052db08d5f184e /Firebase/Storage/FIRStorageGetDownloadURLTask.m
parenta7ce4d9d3c33ac5e1e1ce9a5e7952cb0946aba96 (diff)
Addressing feedback
Diffstat (limited to 'Firebase/Storage/FIRStorageGetDownloadURLTask.m')
-rw-r--r--Firebase/Storage/FIRStorageGetDownloadURLTask.m20
1 files changed, 13 insertions, 7 deletions
diff --git a/Firebase/Storage/FIRStorageGetDownloadURLTask.m b/Firebase/Storage/FIRStorageGetDownloadURLTask.m
index 7447888..c4e0035 100644
--- a/Firebase/Storage/FIRStorageGetDownloadURLTask.m
+++ b/Firebase/Storage/FIRStorageGetDownloadURLTask.m
@@ -14,11 +14,7 @@
#import "FIRStorageGetDownloadURLTask.h"
-#import "FIRStorageConstants.h"
#import "FIRStorageTask_Private.h"
-#import "FIRStorageUtils.h"
-
-#import "FirebaseStorage.h"
@implementation FIRStorageGetDownloadURLTask {
@private
@@ -56,7 +52,13 @@
components.scheme = kFIRStorageScheme;
components.host = kFIRStorageHost;
components.percentEncodedPath = fullPath;
- components.query = [NSString stringWithFormat:@"alt=media&token=%@", downloadTokenArray[0]];
+
+ // The backend can return an arbitrary number of download tokens, but we only expose the first
+ // token via the download URL.
+ NSURLQueryItem *altItem = [[NSURLQueryItem alloc] initWithName:@"alt" value:@"media"];
+ NSURLQueryItem *tokenItem =
+ [[NSURLQueryItem alloc] initWithName:@"token" value:downloadTokenArray[0]];
+ components.queryItems = @[ altItem, tokenItem ];
return [components URL];
}
@@ -67,14 +69,14 @@
- (void)enqueue {
NSMutableURLRequest *request = [self.baseRequest mutableCopy];
request.HTTPMethod = @"GET";
- request.timeoutInterval = self.reference.storage.maxDownloadRetryTime;
+ request.timeoutInterval = self.reference.storage.maxOperationRetryTime;
FIRStorageVoidURLError callback = _completion;
_completion = nil;
GTMSessionFetcher *fetcher = [self.fetcherService fetcherWithRequest:request];
_fetcher = fetcher;
- fetcher.comment = @"DownloadURLTask";
+ fetcher.comment = @"GetDownloadURLTask";
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Warc-retain-cycles"
@@ -89,6 +91,10 @@
if (responseDictionary != nil) {
downloadURL =
[FIRStorageGetDownloadURLTask downloadURLFromMetadataDictionary:responseDictionary];
+ if (!downloadURL) {
+ self.error =
+ [FIRStorageErrors errorWithCustomMessage:@"Failed to retrieve a download URL"];
+ }
} else {
self.error = [FIRStorageErrors errorWithInvalidRequest:data];
}