From 33dea1df8ccc8d75314d8c5dfb32974f64afb8af Mon Sep 17 00:00:00 2001
From: Damyan Mitev <damyan.mitev@vereign.com>
Date: Tue, 4 Jun 2019 12:53:51 +0300
Subject: [PATCH] Add passportUUID parameter to wopiAPI.getPassports,

---
 javascript/src/iframe/viamapi-iframe.js | 12 +++++++-----
 javascript/src/iframe/wopiapi-iframe.js |  9 +++++++--
 2 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/javascript/src/iframe/viamapi-iframe.js b/javascript/src/iframe/viamapi-iframe.js
index 4f2b83f..e809e26 100644
--- a/javascript/src/iframe/viamapi-iframe.js
+++ b/javascript/src/iframe/viamapi-iframe.js
@@ -1212,7 +1212,8 @@ const connection = Penpal.connectToParent({
     },
 
     // WOPI
-    getPassports: async (resourceID, contentType) => {
+    // passportUUID is optional, if not supplied, tokens for all passports are returned
+    getPassports: async (resourceID, contentType, passportUUID) => {
       const authenticationPublicKey = localStorage.getItem("authenticatedIdentity");
 
       if (
@@ -1223,7 +1224,7 @@ const connection = Penpal.connectToParent({
         return encodeResponse("400", "", "Identity not authenticated");
       }
 
-      const response = await wopiAPI.getPassports(resourceID, contentType);
+      const response = await wopiAPI.getPassports(resourceID, contentType, passportUUID);
       return response.data;
     },
 
@@ -1249,11 +1250,12 @@ const connection = Penpal.connectToParent({
         config);
       if (executeResult.code !== "200") return executeResult;
       const resourceID = executeResult.data;
-      const passports = await wopiAPI.getPassports(resourceID, contentType);
+      const passports = await wopiAPI.getPassports(resourceID, contentType, passportUUID);
       return passports;
     },
 
-    wopiPutFile: async (path, accessToken, file) => {
+    // This function should not be used, client must issue direct wopi calls instead
+    wopiPutFile: async (resourceID, accessToken, file) => {
       const authenticationPublicKey = localStorage.getItem("authenticatedIdentity");
 
       if (
@@ -1264,7 +1266,7 @@ const connection = Penpal.connectToParent({
         return encodeResponse("400", "", "Identity not authenticated");
       }
 
-      const response = await wopiAPI.putDocument(path, accessToken, file);
+      const response = await wopiAPI.putDocument(resourceID, accessToken, file);
       return response.data;
     }
   }
diff --git a/javascript/src/iframe/wopiapi-iframe.js b/javascript/src/iframe/wopiapi-iframe.js
index 6e7794e..99a1f46 100644
--- a/javascript/src/iframe/wopiapi-iframe.js
+++ b/javascript/src/iframe/wopiapi-iframe.js
@@ -2,7 +2,11 @@ const axios = require('axios');
 
 function WopiAPI() {}
 
-WopiAPI.prototype.getPassports = function (resourceID, contentType) {
+// TODO create function generateAccessToken with the same semantics as getPassports,
+// TODO but with mandatory passportUUID, and return single access token object, not a list
+
+// passportUUID - optional uuid to filter result list
+WopiAPI.prototype.getPassports = function (resourceID, contentType, passportUUID) {
   const { publicKey, uuid, token, deviceHash } = window.viamApi.getConfig().headers;
   const requestConfig = {
     url: `${window.WOPI_URL}getPassports`,
@@ -13,7 +17,8 @@ WopiAPI.prototype.getPassports = function (resourceID, contentType) {
       token,
       deviceHash,
       resourceID: encodeURI(resourceID),
-      contentType: encodeURI(contentType)
+      contentType: encodeURI(contentType),
+      passportUuid: passportUUID
     }
   };
 
-- 
GitLab