Files

54 lines
2.6 KiB
Java

package com.google.firebase.storage;
import android.net.Uri;
import android.text.TextUtils;
import com.google.android.gms.common.internal.Preconditions;
import com.google.android.gms.tasks.TaskCompletionSource;
import com.google.firebase.storage.internal.ExponentialBackoffSender;
import com.google.firebase.storage.network.GetMetadataNetworkRequest;
import org.json.JSONObject;
/* loaded from: classes3.dex */
class GetDownloadUrlTask implements Runnable {
private static final String DOWNLOAD_TOKENS_KEY = "downloadTokens";
private static final String TAG = "GetMetadataTask";
private TaskCompletionSource<Uri> pendingResult;
private ExponentialBackoffSender sender;
private StorageReference storageRef;
public GetDownloadUrlTask(StorageReference storageReference, TaskCompletionSource<Uri> taskCompletionSource) {
Preconditions.checkNotNull(storageReference);
Preconditions.checkNotNull(taskCompletionSource);
this.storageRef = storageReference;
this.pendingResult = taskCompletionSource;
if (storageReference.getRoot().getName().equals(storageReference.getName())) {
throw new IllegalArgumentException("getDownloadUrl() is not supported at the root of the bucket.");
}
FirebaseStorage storage = this.storageRef.getStorage();
this.sender = new ExponentialBackoffSender(storage.getApp().getApplicationContext(), storage.getAuthProvider(), storage.getAppCheckProvider(), storage.getMaxOperationRetryTimeMillis());
}
private Uri extractDownloadUrl(JSONObject jSONObject) {
String optString = jSONObject.optString(DOWNLOAD_TOKENS_KEY);
if (TextUtils.isEmpty(optString)) {
return null;
}
String str = optString.split(",", -1)[0];
Uri.Builder buildUpon = this.storageRef.getStorageReferenceUri().getHttpUri().buildUpon();
buildUpon.appendQueryParameter("alt", "media");
buildUpon.appendQueryParameter("token", str);
return buildUpon.build();
}
@Override // java.lang.Runnable
public void run() {
GetMetadataNetworkRequest getMetadataNetworkRequest = new GetMetadataNetworkRequest(this.storageRef.getStorageReferenceUri(), this.storageRef.getApp());
this.sender.sendWithExponentialBackoff(getMetadataNetworkRequest);
Uri extractDownloadUrl = getMetadataNetworkRequest.isResultSuccess() ? extractDownloadUrl(getMetadataNetworkRequest.getResultBody()) : null;
TaskCompletionSource<Uri> taskCompletionSource = this.pendingResult;
if (taskCompletionSource != null) {
getMetadataNetworkRequest.completeTask(taskCompletionSource, extractDownloadUrl);
}
}
}