From 5f44a6cf1f16023a4c39872f2ccfc129c65ea812 Mon Sep 17 00:00:00 2001 From: James Hu <51237606+jameshu111@users.noreply.github.com> Date: Mon, 26 Jun 2023 10:37:11 -0400 Subject: temp working version --- src/client/documents/Documents.ts | 3 +- src/client/views/nodes/ImageBox.tsx | 2 +- src/fields/URLField.ts | 2 +- src/server/ApiManagers/AzureManager.ts | 74 ++++++++++++++++++++++++++++++++++ src/server/DashUploadUtils.ts | 25 ++++++++---- 5 files changed, 96 insertions(+), 10 deletions(-) create mode 100644 src/server/ApiManagers/AzureManager.ts (limited to 'src') diff --git a/src/client/documents/Documents.ts b/src/client/documents/Documents.ts index ffde9fe1b..ac6c48619 100644 --- a/src/client/documents/Documents.ts +++ b/src/client/documents/Documents.ts @@ -1739,7 +1739,8 @@ export namespace DocUtils { return; } const full = { ...options, _width: 400, title: name }; - const pathname = Utils.prepend(result.accessPaths.agnostic.client); + // const pathname = Utils.prepend(result.accessPaths.agnostic.client); + const pathname = result.accessPaths.azure.client; const doc = await DocUtils.DocumentFromType(type, pathname, full, overwriteDoc); if (doc) { const proto = Doc.GetProto(doc); diff --git a/src/client/views/nodes/ImageBox.tsx b/src/client/views/nodes/ImageBox.tsx index 9acbee1e7..de1365adc 100644 --- a/src/client/views/nodes/ImageBox.tsx +++ b/src/client/views/nodes/ImageBox.tsx @@ -295,7 +295,7 @@ export class ImageBox extends ViewBoxAnnotatableComponent {}); @@ -323,12 +324,13 @@ export namespace DashUploadUtils { * 3) the size of the image, in bytes (4432130) * 4) the content type of the image, i.e. image/(jpeg | png | ...) */ - export const UploadImage = async (source: string, filename?: string, prefix: string = ''): Promise => { + export const UploadImage = async (source: string, filename?: string, originalFilename?: string, prefix: string = ''): Promise => { const metadata = await InspectImage(source); if (metadata instanceof Error) { return { name: metadata.name, message: metadata.message }; } - return UploadInspectedImage(metadata, filename || metadata.filename, prefix); + console.log(originalFilename); + return UploadInspectedImage(metadata, filename || metadata.filename, originalFilename, prefix); }; export async function buildFileDirectories() { @@ -478,17 +480,21 @@ export namespace DashUploadUtils { }; } - export const UploadInspectedImage = async (metadata: Upload.InspectionResults, filename?: string, prefix = '', cleanUp = true): Promise => { + export const UploadInspectedImage = async (metadata: Upload.InspectionResults, filename?: string, originalFilename?: string, prefix = '', cleanUp = true): Promise => { const { requestable, source, ...remaining } = metadata; const resolved = filename || `${prefix}upload_${Utils.GenerateGuid()}.${remaining.contentType.split('/')[1].toLowerCase()}`; const { images } = Directory; const information: Upload.ImageInformation = { accessPaths: { agnostic: getAccessPaths(images, resolved), + azure: { + client: `https://dashblobstore.blob.core.windows.net/dashmedia/${originalFilename}`, + server: `https://dashblobstore.blob.core.windows.net/dashmedia/${originalFilename}` + } }, ...metadata, }; - const writtenFiles = await outputResizedImages(() => request(requestable), resolved, pathToDirectory(Directory.images)); + const writtenFiles = await outputResizedImages(() => request(requestable), resolved, pathToDirectory(Directory.images), originalFilename, metadata.contentType); for (const suffix of Object.keys(writtenFiles)) { information.accessPaths[suffix] = getAccessPaths(images, writtenFiles[suffix]); } @@ -533,16 +539,21 @@ export namespace DashUploadUtils { force: true, }; - export async function outputResizedImages(streamProvider: () => Stream | Promise, outputFileName: string, outputDirectory: string) { + export async function outputResizedImages(streamProvider: () => Stream | Promise, outputFileName: string, outputDirectory: string, originalFilename?: string, contentType?: string) { + console.log("resized original filename: ", originalFilename); const writtenFiles: { [suffix: string]: string } = {}; for (const { resizer, suffix } of resizers(path.extname(outputFileName))) { const outputPath = path.resolve(outputDirectory, (writtenFiles[suffix] = InjectSize(outputFileName, suffix))); + console.log(`https://dashblobstore.blob.core.windows.net/dashmedia/${InjectSize(originalFilename!, suffix)}`); await new Promise(async (resolve, reject) => { const source = streamProvider(); let readStream: Stream = source instanceof Promise ? await source : source; if (resizer) { readStream = readStream.pipe(resizer.withMetadata()); } + if(originalFilename && contentType) { + AzureManager.UploadBlobStream(readStream as Readable, InjectSize(originalFilename, suffix), contentType); + } readStream.pipe(createWriteStream(outputPath)).on('close', resolve).on('error', reject); }); } -- cgit v1.2.3-70-g09d2