From ee4bd4b426e5de37425c2b11c7d16a76b447fc09 Mon Sep 17 00:00:00 2001
From: Damyan Mitev <damyan.mitev@vereign.com>
Date: Thu, 8 Aug 2019 12:10:19 +0300
Subject: [PATCH] add wopiGetAccessToken to library

---
 javascript/src/iframe/viamapi-iframe.js | 39 ++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 7 deletions(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index b4a3471..b8ca39f 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1642,27 +1642,52 @@ const connection = Penpal.connectToParent({
           title
         }
       };
-      const executeResult = await executeRestfulFunction(
+      const createDocumentResult = await executeRestfulFunction(
         "private",
         window.viamApi,
         window.viamApi.documentCreateDocument,
         config
       );
-      if (executeResult.code !== "200") return executeResult;
-      const resourceID = executeResult.data;
 
-      const accessTokenResponse = await wopiAPI.getAccessToken(passportUUID, resourceID)
-      if (accessTokenResponse.code !== "200") {
-        return accessTokenResponse;
+      if (createDocumentResult.code !== "200") {
+        return createDocumentResult;
+      }
+
+      const resourceID = createDocumentResult.data;
+
+      const accessTokenResponse = await wopiAPI.getAccessToken(passportUUID, resourceID);
+
+      if (accessTokenResponse.data.code !== "200") {
+        return accessTokenResponse.data;
       }
-      const accessToken = accessTokenResponse.data;
+
+      const accessToken = accessTokenResponse.data.data;
+
       const result = {
         resourceID,
         accessToken
       };
+
       return encodeResponse("200", result, "ok");
     },
 
+    wopiGetAccessToken: async (passportUUID, resourceID, contentType) => {
+      const authenticationPublicKey = localStorage.getItem(
+        "authenticatedIdentity"
+      );
+
+      if (
+        !authenticationPublicKey ||
+        !window.loadedIdentities[authenticationPublicKey] ||
+        !extendPinCodeTtl(authenticationPublicKey)
+      ) {
+        return encodeResponse("400", "", "Identity not authenticated");
+      }
+
+      const response = await wopiAPI.getAccessToken(passportUUID, resourceID, contentType);
+      return response.data;
+    },
+
     wopiPutFile: async (resourceID, accessToken, file) => {
       const authenticationPublicKey = localStorage.getItem(
         "authenticatedIdentity"
-- 
GitLab