X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/ea4ad5a3f95aa8c6fa36e4f02b50e19de3e7b8c4..714e665e783490e3710a772bc54c2c062965e812:/src/services/collection-service/collection-service.ts diff --git a/src/services/collection-service/collection-service.ts b/src/services/collection-service/collection-service.ts index 4bb93a4a..9feec699 100644 --- a/src/services/collection-service/collection-service.ts +++ b/src/services/collection-service/collection-service.ts @@ -2,19 +2,20 @@ // // SPDX-License-Identifier: AGPL-3.0 -import { CommonResourceService } from "../../common/api/common-resource-service"; -import { CollectionResource } from "../../models/collection"; +import * as _ from "lodash"; +import { CommonResourceService } from "~/common/api/common-resource-service"; +import { CollectionResource } from "~/models/collection"; import axios, { AxiosInstance } from "axios"; import { KeepService } from "../keep-service/keep-service"; -import { FilterBuilder } from "../../common/api/filter-builder"; -import { CollectionFile, createCollectionFile, createCollectionDirectory, createCollectionFilesTree, CollectionFileType, CollectionDirectory } from "../../models/collection-file"; -import { parseKeepManifestText, stringifyKeepManifest } from "../collection-files-service/collection-manifest-parser"; -import * as _ from "lodash"; -import { KeepManifestStream } from "../../models/keep-manifest"; -import { WebDAV } from "../../common/webdav"; +import { WebDAV } from "~/common/webdav"; import { AuthService } from "../auth-service/auth-service"; import { mapTree, getNodeChildren, getNode, TreeNode } from "../../models/tree"; -import { getTagValue } from "../../common/xml"; +import { getTagValue } from "~/common/xml"; +import { FilterBuilder } from "~/common/api/filter-builder"; +import { CollectionFile, createCollectionFile, CollectionFileType, CollectionDirectory, createCollectionDirectory } from '~/models/collection-file'; +import { parseKeepManifestText, stringifyKeepManifest } from "../collection-files-service/collection-manifest-parser"; +import { KeepManifestStream } from "~/models/keep-manifest"; +import { createCollectionFilesTree } from '~/models/collection-file'; export type UploadProgress = (fileId: number, loaded: number, total: number, currentTime: number) => void; @@ -47,6 +48,7 @@ export class CollectionService extends CommonResourceService } extractFilesData(document: Document) { + const collectionUrlPrefix = /\/c=[0-9a-zA-Z\-]*/; return Array .from(document.getElementsByTagName('D:response')) .slice(1) // omit first element which is collection itself @@ -54,7 +56,10 @@ export class CollectionService extends CommonResourceService const name = getTagValue(element, 'D:displayname', ''); const size = parseInt(getTagValue(element, 'D:getcontentlength', '0'), 10); const pathname = getTagValue(element, 'D:href', ''); - const directory = pathname && pathname.replace(/\/c=[0-9a-zA-Z\-]*/, '').replace(`/${name || ''}`, ''); + const nameSuffix = `/${name || ''}`; + const directory = pathname + .replace(collectionUrlPrefix, '') + .replace(nameSuffix, ''); const href = this.webdavClient.defaults.baseURL + pathname + '?api_token=' + this.authService.getApiToken(); const data = { @@ -137,10 +142,10 @@ export class CollectionService extends CommonResourceService } uploadFiles(collectionUuid: string, files: File[], onProgress?: UploadProgress): Promise { - const filters = FilterBuilder.create() + const filters = new FilterBuilder() .addEqual("service_type", "proxy"); - return this.keepService.list({ filters }).then(data => { + return this.keepService.list({ filters: filters.getFilters() }).then(data => { if (data.items && data.items.length > 0) { const serviceHost = (data.items[0].serviceSslFlag ? "https://" : "http://") +