Merge changes from webdav-service
authorMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 13 Aug 2018 07:19:20 +0000 (09:19 +0200)
committerMichal Klobukowski <michal.klobukowski@contractors.roche.com>
Mon, 13 Aug 2018 07:19:20 +0000 (09:19 +0200)
Feature #13990

Arvados-DCO-1.1-Signed-off-by: Michal Klobukowski <michal.klobukowski@contractors.roche.com>

1  2 
src/services/collection-service/collection-service.ts
src/services/services.ts

index 32eeac4f74ef8d6a3eeeee92948a4047f49b3223,4d750362e3972c339d95ca27f18aff7d3bed82e0..47268255d9605efde6e3842c791acc0ed9bcb35d
@@@ -21,52 -19,6 +21,52 @@@ export class CollectionService extends 
          super(serverApi, "collections");
      }
  
-                 const href = this.webdavClient.defaults.baseUrl + pathname + '?api_token=' + this.authService.getApiToken();
 +    async files(uuid: string) {
 +        const request = await this.webdavClient.propfind(`/c=${uuid}`);
 +        if (request.responseXML != null) {
 +            return createCollectionFilesTree(this.extractFilesData(request.responseXML));
 +        }
 +        return Promise.reject();
 +    }
 +
 +    async deleteFile(collectionUuid: string, filePath: string){
 +        return this.webdavClient.delete(`/c=${collectionUuid}${filePath}`);
 +    }
 +
 +
 +    extractFilesData(document: Document) {
 +        return Array
 +            .from(document.getElementsByTagName('D:response'))
 +            .slice(1)
 +            .map(element => {
 +                const [displayNameElement] = Array.from(element.getElementsByTagName('D:displayname'));
 +                const name = displayNameElement ? displayNameElement.innerHTML : undefined;
 +
 +                const [sizeElement] = Array.from(element.getElementsByTagName('D:getcontentlength'));
 +                const size = sizeElement ? parseInt(sizeElement.innerHTML, 10) : 0;
 +
 +                const [hrefElement] = Array.from(element.getElementsByTagName('D:href'));
 +                const pathname = hrefElement ? hrefElement.innerHTML : undefined;
 +                const directory = pathname && pathname.replace(/\/c=[0-9a-zA-Z\-]*/, '').replace(`/${name || ''}`, '');
 +
++                const href = this.webdavClient.defaults.baseURL + pathname + '?api_token=' + this.authService.getApiToken();
 +
 +                const data = {
 +                    url: href,
 +                    id: `${directory}/${name}`,
 +                    name,
 +                    path: directory,
 +                };
 +
 +                const [resourceTypeElement] = Array.from(element.getElementsByTagName('D:resourcetype'));
 +                return resourceTypeElement && resourceTypeElement.innerHTML === ''
 +                    ? createCollectionFile({ ...data, size })
 +                    : createCollectionDirectory(data);
 +
 +            });
 +    }
 +
 +
      private readFile(file: File): Promise<ArrayBuffer> {
          return new Promise<ArrayBuffer>(resolve => {
              const reader = new FileReader();
Simple merge