From ef072cb2c9339d63d59ba2c3001f0f24e723984b Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Thu, 9 Jun 2022 11:51:01 -0700 Subject: [PATCH] When creating pages from uploaded files use their signed URL as the page URL --- packages/api/src/datalayer/upload_files/model.ts | 2 +- packages/api/src/resolvers/upload_files/index.ts | 13 +++++++++++-- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/packages/api/src/datalayer/upload_files/model.ts b/packages/api/src/datalayer/upload_files/model.ts index c6a2055d8..49db669e2 100644 --- a/packages/api/src/datalayer/upload_files/model.ts +++ b/packages/api/src/datalayer/upload_files/model.ts @@ -46,7 +46,7 @@ export const createKeys = exclude(keys, defaultedKeys) export type CreateSet = PickTuple & Partialize -export const updateKeys = ['status'] as const +export const updateKeys = ['url', 'status'] as const export type UpdateSet = PickTuple diff --git a/packages/api/src/resolvers/upload_files/index.ts b/packages/api/src/resolvers/upload_files/index.ts index e766527da..cc689ded2 100644 --- a/packages/api/src/resolvers/upload_files/index.ts +++ b/packages/api/src/resolvers/upload_files/index.ts @@ -23,7 +23,7 @@ import { validateUrl } from '../../services/create_page_save_request' const isFileUrl = (url: string): boolean => { const parsedUrl = new URL(url) - return parsedUrl.protocol == 'file://' + return parsedUrl.protocol == 'file:' } export const uploadFileRequestResolver: ResolverFn< @@ -99,6 +99,15 @@ export const uploadFileRequestResolver: ResolverFn< input.contentType ) + // If this is a file URL, we swap in the GCS signed + // URL + if (isFileUrl(input.url)) { + await models.uploadFile.update(uploadFileData.id, { + url: uploadSignedUrl, + status: UploadFileStatus.Initialized, + }) + } + let createdPageId: string | undefined = undefined if (input.createPageEntry) { // If we have a file:// URL, don't try to match it @@ -126,7 +135,7 @@ export const uploadFileRequestResolver: ResolverFn< } else { const pageId = await createPage( { - url: input.url, + url: isFileUrl(input.url) ? uploadSignedUrl : input.url, id: input.clientRequestId || '', userId: claims.uid, title: title,