From 8a3e3cef85924d1cc7448b2d4bf3731bfb6769d9 Mon Sep 17 00:00:00 2001 From: z0gSh1u Date: Mon, 4 Nov 2024 16:12:18 +0800 Subject: [PATCH] fix: possible HTTP 401 when downloading file from computation node --- packages/secretnote-scql/package.json | 2 +- packages/secretnote-sf/package.json | 2 +- .../secretnote-sf/src/modules/file/service.ts | 26 ++++++++++++++++--- pyprojects/secretnote/package.json | 2 +- pyprojects/secretnote/secretnote/__init__.py | 2 +- 5 files changed, 26 insertions(+), 8 deletions(-) diff --git a/packages/secretnote-scql/package.json b/packages/secretnote-scql/package.json index b02fcc1..c2e04f7 100644 --- a/packages/secretnote-scql/package.json +++ b/packages/secretnote-scql/package.json @@ -1,6 +1,6 @@ { "name": "@alipay/secretnote-scql", - "version": "0.0.47", + "version": "0.0.48", "license": "Apache-2.0", "author": "vectorse@126.com", "repository": "https://github.com/secretflow/secretnote/tree/main/packages/secretnote", diff --git a/packages/secretnote-sf/package.json b/packages/secretnote-sf/package.json index ca1db56..441461b 100644 --- a/packages/secretnote-sf/package.json +++ b/packages/secretnote-sf/package.json @@ -1,6 +1,6 @@ { "name": "@alipay/secretnote-sf", - "version": "0.0.47", + "version": "0.0.48", "license": "Apache-2.0", "author": "vectorse@126.com", "repository": "https://github.com/secretflow/secretnote/tree/main/packages/secretnote", diff --git a/packages/secretnote-sf/src/modules/file/service.ts b/packages/secretnote-sf/src/modules/file/service.ts index a1148b5..3af5cfa 100644 --- a/packages/secretnote-sf/src/modules/file/service.ts +++ b/packages/secretnote-sf/src/modules/file/service.ts @@ -4,10 +4,11 @@ import { inject, prop, singleton } from '@difizen/mana-app'; import type { DataNode } from 'antd/es/tree'; import { - downloadFileByURL as download, + downloadFileByURL, genericErrorHandler, getRemoteBaseUrl, readFile, + requestNoUnpack, } from '@/utils'; import { SecretNoteServerManager, ServerStatus } from '../server'; @@ -143,14 +144,31 @@ export class FileService { } } + /** + * Download data file in computation node. + */ async downloadFile(nodeData: DataNode) { const { serverId, path } = this.parseNodeKey(nodeData.key as string); const server = await this.serverManager.getServerDetail(serverId); if (server) { - const data = await this.contentsManager.getDownloadUrl(path, { - baseUrl: getRemoteBaseUrl(server.id), + const baseUrl = getRemoteBaseUrl(server.id); + const downloadURL = await this.contentsManager.getDownloadUrl(path, { + baseUrl, }); - download(data, nodeData.title as string); + // to make it consistent with other API, we manually remove the baseUrl from the result + const resp = await requestNoUnpack( + downloadURL.replace(new RegExp(`^${baseUrl}/?`), ''), + { + method: 'GET', + }, + server.id, + ); + if (resp.status === 200) { + downloadFileByURL( + window.URL.createObjectURL(await resp.blob()), + nodeData.title as string, + ); + } } } diff --git a/pyprojects/secretnote/package.json b/pyprojects/secretnote/package.json index 8b57c4e..a03d802 100644 --- a/pyprojects/secretnote/package.json +++ b/pyprojects/secretnote/package.json @@ -1,7 +1,7 @@ { "name": "secretnote", "private": true, - "version": "0.0.47", + "version": "0.0.48", "type": "module", "scripts": { "dev:sf": "cd .. && NODE_ENV=development python -m secretnote sf --config=./secretnote/secretnote/sf/.jupyter/config_dev.py --no-browser", diff --git a/pyprojects/secretnote/secretnote/__init__.py b/pyprojects/secretnote/secretnote/__init__.py index a15559f..4c683e4 100644 --- a/pyprojects/secretnote/secretnote/__init__.py +++ b/pyprojects/secretnote/secretnote/__init__.py @@ -1 +1 @@ -__version__ = "0.0.47" +__version__ = "0.0.48"