Add adding files to upload zone
[arvados-workbench2.git] / src / services / collection-service / collection-service.ts
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 import { CommonResourceService } from "../../common/api/common-resource-service";
6 import { CollectionResource } from "../../models/collection";
7 import axios, { AxiosInstance } from "axios";
8 import { KeepService } from "../keep-service/keep-service";
9 import { FilterBuilder } from "../../common/api/filter-builder";
10
11 export class CollectionService extends CommonResourceService<CollectionResource> {
12     constructor(serverApi: AxiosInstance, private keepService: KeepService) {
13         super(serverApi, "collections");
14     }
15
16     uploadFiles(files: File[]) {
17         console.log("Uploading files", files);
18
19         const fd = new FormData();
20         fd.append("filters", `[["service_type","=","proxy"]]`);
21         fd.append("_method", "GET");
22
23         const filters = new FilterBuilder();
24         filters.addEqual("service_type", "proxy");
25
26         return this.keepService.list({ filters }).then(data => {
27             console.log(data);
28
29             const serviceHost = (data.items[0].serviceSslFlag ? "https://" : "http://") + data.items[0].serviceHost + ":" + data.items[0].servicePort;
30             console.log("Servicehost", serviceHost);
31
32             const fd = new FormData();
33             files.forEach((f, idx) => fd.append(`file_${idx}`, f));
34
35             axios.post(serviceHost, fd, {
36                 onUploadProgress: (e: ProgressEvent) => {
37                     console.log(`${e.loaded} / ${e.total}`);
38                 }
39             });
40         });
41     }
42 }