From 659a2c0e7305267985740f8691d815fbd09b3d5d Mon Sep 17 00:00:00 2001
From: Damyan Mitev <damyan.mitev@vereign.com>
Date: Wed, 22 May 2019 17:12:01 +0300
Subject: [PATCH] Handle raw http error codes != 2xx

---
 javascript/src/iframe/viamapi-iframe.js | 26 ++++++++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 2458533..866de09 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -251,7 +251,23 @@ const handleIdentityLogin = (identity, uuid, token) => {
 
 async function executeRestfulFunction(type, that, fn, config, ...args) {
   const { currentlyAuthenticatedIdentity, viamApi, currentlyLoadedIdentity } = window;
-  const response = await fn.apply(that, [config, ...args]);
+  let response;
+  try {
+    response = await fn.apply(that, [config, ...args]);
+  } catch (error) {
+    if (error.response) {
+      //Resposnse with status code != 2xx still has valid response
+      response = error.response;
+    } else {
+      //Connection error or similar
+      const data = {
+        "data": "",
+        "code": "999",
+        "status": error.message
+      };
+      return data;
+    }
+  }
 
   const identity = currentlyAuthenticatedIdentity || currentlyLoadedIdentity;
   const { code, status } = response.data;
@@ -275,8 +291,12 @@ async function executeRestfulFunction(type, that, fn, config, ...args) {
   const uuid = loginResponse.data.data["Uuid"];
   const token = loginResponse.data.data["Session"];
   handleIdentityLogin(identity, uuid, token);
-  const { data } = await fn.apply(that, [config, ...args]);
-  return data;
+  try {
+    response = await fn.apply(that, [config, ...args]);
+  } catch (error) {
+    response = error.response;
+  }
+  return response.data;
 }
 
 window.executeRestfulFunction = executeRestfulFunction;
-- 
GitLab