diff --git a/packages/fileimport-service/package.json b/packages/fileimport-service/package.json index 04f6e5c13..daf2a3576 100644 --- a/packages/fileimport-service/package.json +++ b/packages/fileimport-service/package.json @@ -17,6 +17,7 @@ "scripts": { "dev": "cross-env POSTGRES_URL=postgres://speckle:speckle@127.0.0.1/speckle NODE_ENV=development LOG_PRETTY=true SPECKLE_SERVER_URL=http://127.0.0.1:3000 nodemon --no-experimental-fetch ./src/daemon.js", "parse:ifc": "node --no-experimental-fetch ./ifc/import_file.js ./ifc/ifcs/steelplates.ifc 33763848d6 2e4bfb467a main File upload: steelplates.ifc", + "downloadBlob": "node scripts/downloadBlob.js", "lint": "eslint ." }, "bugs": { diff --git a/packages/fileimport-service/scripts/downloadBlob.js b/packages/fileimport-service/scripts/downloadBlob.js new file mode 100644 index 000000000..9db98e12b --- /dev/null +++ b/packages/fileimport-service/scripts/downloadBlob.js @@ -0,0 +1,16 @@ +const { downloadFile } = require('../src/filesApi.js') +const { logger } = require('../observability/logging') + +//https://latest.speckle.systems/api/stream/c83a5b2d1f/blob/29fe85cffb +const speckleServerUrl = 'https://latest.speckle.systems' +const fileId = '29fe85cffb' +const streamId = 'c83a5b2d1f' + +downloadFile({ + speckleServerUrl, + fileId, + streamId, + destination: '/var/folders/p2/fczcvzfd62x5jcfdlw6ghf640000gn/T/tmp.U8MlF9KIxH', + token: process.env.SPECKLE_TOKEN || '', + logger: logger.child({ streamId, fileId }) +}) diff --git a/packages/fileimport-service/src/daemon.js b/packages/fileimport-service/src/daemon.js index eca95066d..279b5b693 100644 --- a/packages/fileimport-service/src/daemon.js +++ b/packages/fileimport-service/src/daemon.js @@ -124,6 +124,7 @@ async function doTask(mainDb, regionName, taskDb, task) { taskLogger.info('Downloading file {fileId}') await downloadFile({ + speckleServerUrl: process.env.SPECKLE_SERVER_URL, fileId: info.id, streamId: info.streamId, token, diff --git a/packages/fileimport-service/src/filesApi.js b/packages/fileimport-service/src/filesApi.js index c4c2ab890..bc95282d7 100644 --- a/packages/fileimport-service/src/filesApi.js +++ b/packages/fileimport-service/src/filesApi.js @@ -6,11 +6,21 @@ const path = require('node:path') const { pipeline } = require('node:stream/promises') module.exports = { - async downloadFile({ fileId, streamId, token, destination, logger }) { + async downloadFile({ + speckleServerUrl, + fileId, + streamId, + token, + destination, + logger + }) { fs.mkdirSync(path.dirname(destination), { recursive: true }) - logger.info(`Downloading file ${fileId} to ${destination}`) + logger.info( + { destinationFile: destination }, + 'Downloading file {fileId} from {streamId} to {destinationFile}' + ) const response = await fetch( - `${process.env.SPECKLE_SERVER_URL}/api/stream/${streamId}/blob/${fileId}`, + `${speckleServerUrl}/api/stream/${streamId}/blob/${fileId}`, { headers: { Authorization: `Bearer ${token}` @@ -23,9 +33,6 @@ module.exports = { writer.on('error', (err) => { logger.error(ensureError(err), `Error writing file ${destination}`) }) - response.body.on('error', (err) => { - logger.error(ensureError(err), `Error reading from response body`) - }) //handle completion writer.on('finish', () => { diff --git a/packages/fileimport-service/src/objDependencies.js b/packages/fileimport-service/src/objDependencies.js index f3f61b8cf..29f089455 100644 --- a/packages/fileimport-service/src/objDependencies.js +++ b/packages/fileimport-service/src/objDependencies.js @@ -49,6 +49,7 @@ module.exports = { continue } await downloadFile({ + speckleServerUrl: process.env.SPECKLE_SERVER_URL, fileId: file.id, streamId, token,