|
1 | 1 | import { Readable } from "stream";
|
2 | 2 | import * as path from "path";
|
3 | 3 |
|
4 |
| -import { storageOrigin } from "../api"; |
| 4 | +import { firebaseStorageOrigin, storageOrigin } from "../api"; |
5 | 5 | import { Client } from "../apiv2";
|
6 | 6 | import { FirebaseError } from "../error";
|
7 | 7 | import { logger } from "../logger";
|
8 |
| -import { getFirebaseProject } from "../management/projects"; |
| 8 | +import { ensure } from "../ensureApiEnabled"; |
9 | 9 |
|
10 | 10 | /** Bucket Interface */
|
11 | 11 | interface BucketResponse {
|
@@ -133,22 +133,34 @@ interface ListBucketsResponse {
|
133 | 133 | ];
|
134 | 134 | }
|
135 | 135 |
|
| 136 | +interface GetDefaultBucketResponse { |
| 137 | + name: string; |
| 138 | + location: string; |
| 139 | + bucket: { |
| 140 | + name: string; |
| 141 | + }; |
| 142 | +} |
| 143 | + |
136 | 144 | /** Response type for obtaining the storage service agent */
|
137 | 145 | interface StorageServiceAccountResponse {
|
138 | 146 | email_address: string;
|
139 | 147 | kind: string;
|
140 | 148 | }
|
141 | 149 |
|
142 | 150 | export async function getDefaultBucket(projectId: string): Promise<string> {
|
| 151 | + await ensure(projectId, "firebasestorage.googleapis.com", "storage", false); |
143 | 152 | try {
|
144 |
| - const metadata = await getFirebaseProject(projectId); |
145 |
| - if (!metadata.resources?.storageBucket) { |
| 153 | + const localAPIClient = new Client({ urlPrefix: firebaseStorageOrigin, apiVersion: "v1alpha" }); |
| 154 | + const response = await localAPIClient.get<GetDefaultBucketResponse>( |
| 155 | + `/projects/${projectId}/defaultBucket` |
| 156 | + ); |
| 157 | + if (!response.body?.bucket.name) { |
146 | 158 | logger.debug("Default storage bucket is undefined.");
|
147 | 159 | throw new FirebaseError(
|
148 | 160 | "Your project is being set up. Please wait a minute before deploying again."
|
149 | 161 | );
|
150 | 162 | }
|
151 |
| - return metadata.resources.storageBucket; |
| 163 | + return response.body.bucket.name.split("/").pop()!; |
152 | 164 | } catch (err: any) {
|
153 | 165 | logger.info(
|
154 | 166 | "\n\nThere was an issue deploying your functions. Verify that your project has a Google App Engine instance setup at https://console.cloud.google.com/appengine and try again. If this issue persists, please contact support."
|
|
0 commit comments