Add adding files to upload zone
[arvados-workbench2.git] / src / services / collection-service / collection-service.ts
index bb63771d543db7c63f2a0af29a858381b318236b..88f3daef37a6bba795a35f2c8e386767f9ee9f6b 100644 (file)
@@ -4,10 +4,39 @@
 
 import { CommonResourceService } from "../../common/api/common-resource-service";
 import { CollectionResource } from "../../models/collection";
-import { AxiosInstance } from "axios";
+import axios, { AxiosInstance } from "axios";
+import { KeepService } from "../keep-service/keep-service";
+import { FilterBuilder } from "../../common/api/filter-builder";
 
 export class CollectionService extends CommonResourceService<CollectionResource> {
-    constructor(serverApi: AxiosInstance) {
+    constructor(serverApi: AxiosInstance, private keepService: KeepService) {
         super(serverApi, "collections");
     }
-}
\ No newline at end of file
+
+    uploadFiles(files: File[]) {
+        console.log("Uploading files", files);
+
+        const fd = new FormData();
+        fd.append("filters", `[["service_type","=","proxy"]]`);
+        fd.append("_method", "GET");
+
+        const filters = new FilterBuilder();
+        filters.addEqual("service_type", "proxy");
+
+        return this.keepService.list({ filters }).then(data => {
+            console.log(data);
+
+            const serviceHost = (data.items[0].serviceSslFlag ? "https://" : "http://") + data.items[0].serviceHost + ":" + data.items[0].servicePort;
+            console.log("Servicehost", serviceHost);
+
+            const fd = new FormData();
+            files.forEach((f, idx) => fd.append(`file_${idx}`, f));
+
+            axios.post(serviceHost, fd, {
+                onUploadProgress: (e: ProgressEvent) => {
+                    console.log(`${e.loaded} / ${e.total}`);
+                }
+            });
+        });
+    }
+}