diff --git a/src/components/core/compute/utils.ts b/src/components/core/compute/utils.ts index dcbb4541d..189b20d28 100644 --- a/src/components/core/compute/utils.ts +++ b/src/components/core/compute/utils.ts @@ -1,14 +1,9 @@ import { OceanNode } from '../../../OceanNode.js' import { AlgoChecksums } from '../../../@types/C2D/C2D.js' import { OceanNodeConfig } from '../../../@types/OceanNode.js' -import { - ArweaveFileObject, - IpfsFileObject, - UrlFileObject -} from '../../../@types/fileObject.js' +import { StorageObject } from '../../../@types/fileObject.js' import { getFile } from '../../../utils/file.js' -import urlJoin from 'url-join' -import { fetchFileMetadata } from '../../../utils/asset.js' +import { Storage } from '../../storage/index.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { createHash } from 'crypto' @@ -44,18 +39,12 @@ export async function getAlgoChecksums( } const fileArray = await getFile(algoDDO, algoServiceId, oceanNode) for (const file of fileArray) { - const url = - file.type === 'url' - ? (file as UrlFileObject).url - : file.type === 'arweave' - ? urlJoin(config.arweaveGateway, (file as ArweaveFileObject).transactionId) - : file.type === 'ipfs' - ? urlJoin(config.ipfsGateway, (file as IpfsFileObject).hash) - : null - const headers = file.type === 'url' ? (file as UrlFileObject).headers : undefined - - const { contentChecksum } = await fetchFileMetadata(url, 'get', false, headers) - checksums.files = checksums.files.concat(contentChecksum) + const storage = Storage.getStorageClass(file as StorageObject, config) + const fileInfo = await storage.fetchSpecificFileMetadata( + file as StorageObject, + true // force checksum + ) + checksums.files = checksums.files.concat(fileInfo.checksum) } const ddoInstance = DDOManager.getDDOClass(algoDDO) diff --git a/src/utils/file.ts b/src/utils/file.ts index 79998c763..b05293640 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -1,9 +1,4 @@ -import { - ArweaveFileObject, - EncryptMethod, - IpfsFileObject, - UrlFileObject -} from '../@types/fileObject.js' +import { StorageObject, EncryptMethod } from '../@types/fileObject.js' import { OceanNode } from '../OceanNode.js' import { FindDdoHandler } from '../components/core/handler/ddoHandler.js' import { AssetUtils } from './asset.js' @@ -16,7 +11,7 @@ export async function getFile( didOrDdo: string | DDO, serviceId: string, node: OceanNode -): Promise { +): Promise { try { // 1. Get the DDO const ddo =