From eebaf75d4e0d89ab765f5d939bdd8ce6d1affa6c Mon Sep 17 00:00:00 2001
From: pkupczyk <piotr.kupczyk@id.ethz.ch>
Date: Thu, 28 Mar 2024 14:26:33 +0100
Subject: [PATCH] SSDM-13578 : 2PT : Database and V3 Implementation - js facade

---
 .../src/js/api/server-data-store-facade.js    | 70 +++++++++++++++-
 api-openbis-javascript/src/v3/openbis.js      | 84 ++-----------------
 2 files changed, 77 insertions(+), 77 deletions(-)

diff --git a/api-data-store-server-javascript/src/js/api/server-data-store-facade.js b/api-data-store-server-javascript/src/js/api/server-data-store-facade.js
index 71310f3af10..b2b5f5d6301 100644
--- a/api-data-store-server-javascript/src/js/api/server-data-store-facade.js
+++ b/api-data-store-server-javascript/src/js/api/server-data-store-facade.js
@@ -400,7 +400,21 @@ DataStoreServer.prototype.list = function(owner, source, recursively){
 		"application/octet-stream",
 		this._internal.buildGetUrl(data),
 		{}
-	).then((response) => parseJsonResponse(response));
+	).then((response) => parseJsonResponse(response)).then((response) => {
+        if(response && Array.isArray(response.result) && response.result.length === 2){
+            var files = []
+            if(Array.isArray(response.result[1])){
+                response.result[1].forEach(function(item){
+                    if(Array.isArray(item) && item.length === 2){
+                        files.push(new File(item[1]));
+                    }
+                });
+            }
+            return files;
+        } else {
+            return response
+        }
+	});
 }
 
 /**
@@ -604,6 +618,54 @@ DataStoreServer.prototype.recover = function(){
 	);
 }
 
+/**
+ * ==================================================================================
+ * DTO
+ * ==================================================================================
+ */
+
+var File = function(fileObject){
+    this.owner = fileObject.owner;
+    this.path = fileObject.path;
+    this.name = fileObject.name;
+    this.directory = fileObject.directory;
+    this.size = fileObject.size;
+    this.lastModifiedTime = fileObject.lastModifiedTime;
+    this.creationTime = fileObject.creationTime;
+    this.lastAccessTime = fileObject.lastAccessTime;
+
+    this.getOwner = function(){
+        return this.owner;
+    }
+    this.getPath = function(){
+        return this.path;
+    }
+    this.getName = function(){
+        return this.name;
+    }
+    this.getDirectory = function(){
+        return this.directory;
+    }
+    this.getSize = function(){
+        return this.size;
+    }
+    this.getLastModifiedTime = function(){
+        return this.lastModifiedTime;
+    }
+    this.getCreationTime = function(){
+        return this.creationTime;
+    }
+    this.getLastAccessTime = function(){
+        return this.lastAccessTime;
+    }
+}
+
+/**
+ * ==================================================================================
+ * MD5
+ * ==================================================================================
+ */
+
 var md5 = (function(){
 
     /**
@@ -975,6 +1037,12 @@ var md5 = (function(){
     return md5;
 })();
 
+/**
+ * ==================================================================================
+ * EXPORT
+ * ==================================================================================
+ */
+
 if (typeof define === 'function' && define.amd) {
   define(function () {
     return DataStoreServer
diff --git a/api-openbis-javascript/src/v3/openbis.js b/api-openbis-javascript/src/v3/openbis.js
index 50836798afe..408d1b875fb 100644
--- a/api-openbis-javascript/src/v3/openbis.js
+++ b/api-openbis-javascript/src/v3/openbis.js
@@ -441,100 +441,32 @@ define([ 'jquery', 'util/Json', 'as/dto/datastore/search/DataStoreSearchCriteria
         this.afsServer.useSession(asFacade._private.sessionToken)
 
 		this.list = function(owner, source, recursively) {
-            return handleAfsResponse(this.afsServer.list(owner, source, recursively)).then(function(result){
-                var files = []
-                if(Array.isArray(result)){
-                    result.forEach(function(item){
-                        if(Array.isArray(item) && item.length === 2){
-                            files.push(new File(item[1]));
-                        }
-                    });
-                }
-                return files;
-            });
+            return this.afsServer.list(owner, source, recursively);
 		}
 
 		this.read = function(owner, source, offset, limit){
-		    return handleAfsResponse(this.afsServer.read(owner, source, offset, limit));
+		    return this.afsServer.read(owner, source, offset, limit);
 		}
 
 		this.write = function(owner, source, offset, data){
-		    return handleAfsResponse(this.afsServer.write(owner, source, offset, data));
+		    return this.afsServer.write(owner, source, offset, data);
 		}
 
 		this.delete = function(owner, source){
-		    return handleAfsResponse(this.afsServer.delete(owner, source));
+		    return this.afsServer.delete(owner, source);
 		}
 
 		this.copy = function(sourceOwner, source, targetOwner, target){
-		    return handleAfsResponse(this.afsServer.copy(sourceOwner, source, targetOwner, target));
+		    return this.afsServer.copy(sourceOwner, source, targetOwner, target);
 		}
 
 		this.move = function(sourceOwner, source, targetOwner, target){
-		    return handleAfsResponse(this.afsServer.move(sourceOwner, source, targetOwner, target));
+		    return this.afsServer.move(sourceOwner, source, targetOwner, target);
 		}
 
 		this.create = function(owner, source, directory){
-		    return handleAfsResponse(this.afsServer.create(owner, source, directory));
-		}
-
-        var File = function(fileObject){
-            this.owner = fileObject.owner;
-            this.path = fileObject.path;
-            this.name = fileObject.name;
-            this.directory = fileObject.directory;
-            this.size = fileObject.size;
-            this.lastModifiedTime = fileObject.lastModifiedTime;
-            this.creationTime = fileObject.creationTime;
-            this.lastAccessTime = fileObject.lastAccessTime;
-
-            this.getOwner = function(){
-                return this.owner;
-            }
-            this.getPath = function(){
-                return this.path;
-            }
-            this.getName = function(){
-                return this.name;
-            }
-            this.getDirectory = function(){
-                return this.directory;
-            }
-            this.getSize = function(){
-                return this.size;
-            }
-            this.getLastModifiedTime = function(){
-                return this.lastModifiedTime;
-            }
-            this.getCreationTime = function(){
-                return this.creationTime;
-            }
-            this.getLastAccessTime = function(){
-                return this.lastAccessTime;
-            }
-        }
-
-        var handleAfsResponse = function(responsePromise){
-            return new Promise(function(resolve, reject){
-                return responsePromise.then(function(response){
-                    if(response.error){
-                        if(Array.isArray(response.error) && response.error.length === 2){
-                            reject(response.error[1])
-                        }else{
-                            reject(response.error)
-                        }
-                    }else{
-                        if(Array.isArray(response.result) && response.result.length === 2){
-                            resolve(response.result[1])
-                        }else{
-                            resolve(response.result)
-                        }
-                    }
-                }, function(error){
-                    reject(error)
-                })
-            });
-        }
+		    return this.afsServer.create(owner, source, directory);
+		}
 
 	}
 
-- 
GitLab